哪里可以找到C#中免费,快速,可靠的FFT实现?
那可以用在产品中吗?或者有任何限制吗?
做AForge的人做得相当不错,但这不是商业品质.这是很好的学习,但你可以告诉他他也在学习,所以他有一些非常严重的错误,比如假设图像的大小而不是每像素使用正确的位数.
我不是要敲那个人,我尊重他的学习所有这一切并向我们展示如何去做.我认为他现在是博士,或者至少他将会如此,所以他真的很聪明,这不是一个商业上可用的图书馆.
在使用傅里叶变换和复杂图像/数字时,Math.Net库有其自身的奇怪之处.就像,如果我没有弄错的话,它会输出人类可视格式的傅立叶变换,如果你想看一下变换的图片,这对人类来说很不错,但是当你期望数据处于某种状态时它不是那么好格式(正常格式).我可能会对此有所误解,但我记得有些奇怪,所以我实际上使用了他们用于傅立叶原始代码的原始代码,它的效果要好得多.(ExocortexDSP v1.2 http://www.exocortex.org/dsp/)
Math.net在处理来自FFT的数据时也有一些我不喜欢的时髦,我不记得它是什么我只是知道从ExoCortex DSP库中获得我想要的东西要容易得多.我不是数学家或工程师; 对那些人来说,这可能是完全合理的.
所以!我使用Math.Net所基于的ExoCortex中的FFT代码,没有任何其他东西,它运行良好.
最后,我知道这不是C#,但我开始考虑使用FFTW(http://www.fftw.org/).而这个人已经制作了一个C#包装器,所以我要检查它,但还没有实际使用它.(http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html)
哦!我不知道你是在上学还是上班,但无论哪种方式都有斯坦福大学教授在iTunes大学上发表的大型免费讲座系列.
http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.1617315771
AForge.net是一个免费(开源)库,支持快速傅里叶变换.(有关用法,请参阅Sources/Imaging/ComplexImage.cs,实现时参见Sources/Math/FourierTransform.cs)
Math.NET的Iridium库提供快速,定期更新的数学相关函数集合,包括FFT.它是根据LGPL许可的,因此您可以在商业产品中自由使用它.
我看到这是一个旧线程,但是为了它的价值,我在这里有一个免费的(麻省理工学院许可证)1-D 2-power-of-only-only C#FFT实现:http: //gerrybeauregard.wordpress.com/2011/04/01/AN-FFT-在-C /
我没有将其性能与其他C#FFT实现进行比较.我写它主要是为了比较Flash/ActionScript和Silverlight/C#的性能.后者要快得多,至少对于数字运算而言.
http://www.exocortex.org/dsp/是一个带有FFT算法的开源C#数学库.
这是另一个 Ooura FFT的C#端口。相当快。该软件包还包含MIT许可下的重叠/添加卷积和其他一些DSP东西。
https://github.com/hughpyle/inguz-DSPUtil/blob/master/Fourier.cs