0

スペクトログラム描画機能を備えた C# でアプリケーションを開発しています。

最初の試みでは、MathNet.Numerics を使用しましたが、現在は alglib を使用して開発を続けています。あるものから別のものに変更したとき、出力が異なることに気付きました。Mathnet はデフォルトである種の修正を使用しますが、alglib はそれを省略しているようです。私は信号処理にあまり興味がなく、プログラミングの初心者でもあり、違いが正確に何であるかを理解できませんでした。

私の場合、MathNet のデフォルト出力 (生の大きさ) の値は ~0.1 から ~274 の範囲です。また、alglib を使用すると、0.2 から 6220 までの範囲の値が得られます。

MathNet Fourier.Forward がデフォルトのスケーリング オプションを使用していることがわかりました。ここでは、FourierOptions.Default は "Universal; Symmetric scaling and common exponent (Maple で使用)" です。 https://numerics.mathdotnet.com/api/MathNet.Numerics.IntegralTransforms/FourierOptions.htm FourierOptions.NoScaling を使用すると、出力は alglib が生成するものと同じになります。

MathNet では、Fourier.Forward 関数を使用しました: https://numerics.mathdotnet.com/api/MathNet.Numerics.IntegralTransforms/Fourier.htm#Forward alglib の場合、fftr1d 関数を使用しました: https://www.alglib .net/translator/man/manual.csharp.html#sub_fftr1d

  • 彼らの計算におけるその違いは何ですか?
  • alglib の出力の大きさを MathNet のものに、またはその逆に変換するために使用できる関数は何ですか?
  • これらの異なる「スケーリング」はどのような場合に使用する必要がありますか? 彼らは正確には何のためにいるのですか?

あなたの知識を共有してください。前もって感謝します!

4

1 に答える 1