質問

C# での FFT の無料、非常に迅速かつ信頼性の高い実装はどこで見つけられますか?

それは製品に使用できますか?それとも何か制限があるのでしょうか?

役に立ちましたか?

解決

AForge.net は、高速フーリエ変換をサポートする無料の(オープンソース)ライブラリです。 。 (Sources / Imaging / ComplexImage.cs を参照してください。使用方法については、Sources / Math / FourierTransform.cs 実装用)

他のヒント

AForgeをやった男はかなり良い仕事をしましたが、商業的な品質ではありません。学ぶことは素晴らしいことですが、彼も学習していると言えるので、正しいピクセルあたりのビット数を使用する代わりに画像のサイズを仮定するなど、かなり深刻な間違いがあります。

私はその男をノックしているわけではありません。そのすべてを学び、その方法を教えてくれた彼からの尊敬を尊重します。彼は現在博士号を取得している、または少なくとも彼はそうなろうとしているので、彼は本当に頭がよくて、商業的に使用できるライブラリーではありません。

Math.Netライブラリには、フーリエ変換と複雑な画像/数値を扱う際に独自の奇妙さがあります。たとえば、私が間違っていない場合は、人間の目に見える形式でフーリエ変換を出力します。これは、変換の写真を見たい場合は人間にとってはいいですが、データが特定のデータになることを期待している場合はあまり良くありません形式(通常の形式)。私はそれについて誤解する可能性がありますが、少し奇妙な点があったことを覚えているので、実際にフーリエのものに使用された元のコードに行き、それははるかにうまく機能しました。 (ExocortexDSP v1.2 http://www.exocortex.org/dsp/

Math.netには、FFTからのデータを処理するときに気に入らない他のファンキーな機能もありました。ExoCortexDSPから必要なものを取得する方がはるかに簡単だったことを覚えていませんとしょうかん。私は数学者でもエンジニアでもありません。それらの人にはそれは完全に理にかなっているかもしれません。

そう!私は、Math.NetのベースであるExoCortexからヤンクされたFFTコードを、他に何も使用せずに使用しています。

そして最後に、C#ではないことは知っていますが、FFTWの使用を検討し始めました( http:// www .fftw.org / )。そして、この男はすでにC#ラッパーを作成しているので、チェックアウトするつもりでしたが、まだ実際には使用していませんでした。 ( http://www.sdss.jhu.edu/~tamas/bytes /fftwcsharp.html

OH!学校や仕事のためにこれをやっているかどうかはわかりませんが、いずれにしても、iTunes Universityのスタンフォード教授による素晴らしい無料講義シリーズがあります。

https://podcasts.apple .com / us / podcast / the-fourier-transforms-and-its-applications / id384232849

Math.NETの Iridiumライブラリは、FFTを含む数学関連の関数の高速で定期的に更新されるコレクションを提供します。 。 LGPLの下でライセンスされているため、商用製品で自由に使用できます。

これは古いスレッドですが、価値があるので、ここに無料の(MITライセンス)1-Dの2の長さのみのC#FFT実装があります:    http://gerrybeauregard.wordpress.com/2011/04/ 01 / an-fft-in-c /

そのパフォーマンスを他のC#FFT実装と比較していません。主にFlash / ActionScriptとSilverlight / C#のパフォーマンスを比較するために作成しました。後者は、少なくとも数値計算のためにはるかに高速です。

http://www.exocortex.org/dsp/ は、オープンソースのC#数学です。 FFTアルゴリズムを備えたライブラリ。

もう1つあります。 Ooura FFTのC#ポート。かなり高速です。パッケージには、MITライセンスの下で、オーバーラップ/追加コンボリューションおよびその他のDSPスタッフも含まれています。

https://github.com/hughpyle/inguz-DSPUtil /blob/master/Fourier.cs

Numerical Recipes の Web サイト (http://www.nr.com/) には、FFT を入力することができます。Labview プログラムを C# 2008、.NET 3.5 に変換してデータを取得し、周波数スペクトルを確認するプロジェクトに取り組んでいます。残念ながら、Math.Net は最新の .NET フレームワークを使用しているため、その FFT は使用できませんでした。Exocortex を試してみました。うまくいきましたが、結果は Labview の結果と一致しており、何が問題を引き起こしているのかを知るのに十分な FFT 理論を知りませんでした。そこで、数値レシピ Web サイトで FFT を試してみたところ、うまくいきました。Labview の低サイドローブ ウィンドウをプログラムすることもできました (スケーリング係数を導入する必要がありました)。

このサイトでは、Numerical Recipes 本の章をゲストとして読むことができますが、この本は非常に役立つので、購入することを強くお勧めします。たとえ最終的に Math.NET FFT を使用することになったとしてもです。

古い質問ですが、まだGoogleの結果に表示されます...

非常に制限のないMITライセンスC#/ .NETライブラリは、次の場所にあります。

https:// www .codeproject.com / articles / 1107480 / dsplib-fft-dft-fourier-transform-library-for-net

このライブラリは複数のコアでスレッドを並列処理するため高速であり、非常に完全ですぐに使用できます。

Intelプロセッサ用に調整されたマルチスレッド実装の場合、IntelのMKLライブラリを確認します。それは無料ではありませんが、手頃な価格(100ドル未満)で非常に高速です-しかし、P / Invokesを介してC dllを呼び出す必要があります。 Exocortexプロジェクトは6年前に開発を停止したため、これが重要なプロジェクトである場合は慎重に使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top