問題タブ [mathnet-numerics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
662 参照

c# - 勾配標準誤差 c#

MathNet.Numerics 内に回帰勾配エラーを計算する関数はありますか?

上記は傾きを与えます。勾配の誤差をどのように取得しますか?

ありがとう

0 投票する
1 に答える
184 参照

c# - ループなしでディクショナリのすべての値を減らします。または代替ストレージの可能性

全体としていくつかの計算を行う必要があるため、Math.net ベクトルにいくつかのデータを格納しています。このデータには、収集された時間情報が付属しています。たとえば、次のようになります。

したがって、データを Vector に格納すると、次のようになります。

ここで、ベクトルの単一のエントリを抽出する必要がある場合があります。しかし、私はインデックス自体を持っていませんが、時間情報を持っています. だから私がしようとしているのは、時間の情報と私のstateVectorのデータのインデックスを持つ辞書です。

新しいデータを取得するたびに、エントリを辞書に (そしてもちろん stateVector にも) 追加します。だから時間2で私はした:

これで、ベクトルを変更しない限り機能します。残念ながら、ベクター内のエントリが古くなりすぎた場合、そのエントリを削除する必要があります。時間 2 が古すぎると仮定して、2 番目のエントリを削除すると、次のベクトルが得られます。

現在、私の辞書には間違ったインデックス値が保存されています。
これを解決する方法として、2 つの解決策が考えられます。

  1. ディクショナリをループして、すべての値 (キー > 2) を 1 ずつ減らします。
  2. もっとエレガントだと思うのは、インデックスの代わりにベクトルエントリへの参照を辞書に保存することです。

だから何か

このようなものを使用すると、ベクトル内のいくつかのエントリを削除してもかまいません。残りのベクトル エントリへの参照がまだ残っているからです。これで、C# に参照を格納することはできないことがわかりました。

だから私の質問は、辞書全体をループすることに代わるものはありますか? または、現時点では辞書を使用しない別の解決策はありますか?

編集してjuharrに答えてください:時間情報は常に1ずつ増加するとは限りません。いくつかの並列実行プロセスとそれにかかる時間によって異なります。おそらく1から3の間で増加します。しかし、それ以上になる可能性もあります。ベクトルには削除されない値がいくつかあります。ベクトルにとどまる初期値 5 でこれを表示しようとしました。

編集 2:
ベクターには、少なくとも 5000 から 6000 の要素が格納されます。リアルタイムで処理できる要素によって制限されるため、現時点では最大値は定義されていません。そのため、私の場合、さらに計算するには約 0.01 秒かかります。これが、ベクトル内の要素の数を増やす (または、ベクトル エントリの最大「年齢」を増やす) ことができるように、効果的な方法を検索する理由です。
値を追加するために必要な数の約 3 倍の計算には、ベクトル全体が必要です。
頻度が最も低いエントリを削除する必要があります。そして、時間キーによって単一の値を見つけることが最もよくあるケースです。たぶん1秒間に30回から100回。

これはすべて非常に未定義に聞こえることを知っていますが、パーツの検索と削除の頻度は他のプロセスに依存し、大きく異なる可能性があります。

あなたが私を助けてくれることを願っていますが。これまでありがとう。

編集 3:
@Robinson
ベクトル全体が必要な正確な回数は、並列プロセスにも依存します。最小は反復ごとに 2 回 (つまり、0.01 秒で 2 回)、反復ごとに少なくとも 4 ~ 6 回です。
繰り返しますが、ベクトルのサイズは最大化したいものです。したがって、非常に大きいと想定されます。

解決策の編集:
まず、私を助けてくれたすべての人に感謝します。
少し実験した後、次の構造を使用しています。
リストを使用して、インデックスを状態ベクトルに保存します。さらに、ディクショナリを使用してタイム キーをリスト エントリに割り当てます。そのため、状態ベクトル内の何かを削除すると、リストのみをループします。これは、辞書をループするよりもはるかに高速に見えます。

つまり、次のとおりです。

0 投票する
1 に答える
384 参照

f# - F# での mathdotnet によるフーリエ変換

FFT アルゴリズムの Math.NET 数値実装を使用しようとしていますが、出力が常に単位であるため、何か間違ったことをしているに違いありません。

セットアップは次のとおりです。

次に、これを実行すると:

以下に空の出力が表示されますか?

理由はありますか?

0 投票する
1 に答える
1745 参照

vb.net - Math.net数値行列を使用してVB2012で行列を定義します

MATLAB から VS2012 に切り替えています。Math.net Numeric を使用して、行列ベースの方程式を解きたいと考えています。Math.Net マトリックスを使用して VB 環境で VS2012 で単純なマトリックスを定義するのに苦労しています。F# とマトリックスの定義方法に関する多くの記事を見つけましたが、VB では運がありません。試してみPublic MAT1 As Matrix(Ofましたが、宣言を終了する方法がわかりません。誰か知っていますか?ありがとうございました。

0 投票する
1 に答える
4344 参照

c# - MathNet.Numerics のフーリエ変換 (畳み込み) の何が問題になっていますか? - C#

FFT (高速フーリエ変換)を使用して 2 つのオーディオ ファイル間で単純な畳み込みを実行しようとしていますMathNet.Numerics'sが、IFFT の後で奇妙なバックグラウンド サウンドが発生します。

問題の原因が畳み込みなのか変換なのかをテストしたところ、FFT -> IFFT (Inverze FFT) 変換で既に問題が発生していることがわかりました。

単純な FFT と IFFT の私のコード:

この後、outSamples私は FFT と IFFT の間で何もしていませんが、いくつかの奇妙なバックグラウンド サウンド/ノイズで破損しています。

私は何が欠けていますか?

0 投票する
1 に答える
2279 参照

c# - C#で整数配列を行列に変換する方法

resp名前付きの整数配列を書き換え/変換したいというrow matrix名前の整数配列がありrespます。

Mathnet.Numericsライブラリを使用しています。

どうやってやるの?

0 投票する
2 に答える
1261 参照

c# - マトリックスを変換するにはどうすればよいですかマトリックスへ?

私は次のようなものを計算したい: Matrix<float> * Matrix<double>

には約 6M*3 の要素があります。結果を得るためにどうすればMatrix<float>変換できますか。Matrix<double>Matrix<float>Matrix<float>