在哪里可以找到C#中免费,快速,可靠的FFT实现?
那可以用在产品上吗?还是有任何限制?
Answers:
AForge.net是一个免费的(开放源代码)库,支持快速傅立叶变换。(有关用法,请参见Sources / Imaging / ComplexImage.cs,有关实现请参见Sources / Math / FourierTransform.cs)
做AForge的那个人做得很好,但这不是商业素质。可以学习,很高兴,但是您可以告诉他他也在学习,因此他有一些非常严重的错误,例如假设图像大小而不是每个像素使用正确的位。
我没有敲这个家伙,我尊重他学习所有内容并向我们展示如何做到这一点。我认为他现在是一名博士学位,或者至少他即将成为博士学位,因此他非常聪明,它不是一个可商业使用的图书馆。
当使用傅立叶变换和复杂的图像/数字时,Math.Net库具有其自身的怪异之处。就像,如果我没记错的话,它以人类可见的格式输出傅立叶变换,如果您想看一下变换的图片,这对人类来说是很好的选择,但是当您期望数据在一定范围内时,效果就不太好了格式(正常格式)。我可能会误认为这一点,但是我只记得那里有些怪异,所以我实际上转到了他们用于傅立叶材料的原始代码,并且效果更好。(ExocortexDSP v1.2 http://www.exocortex.org/dsp/)
在处理FFT数据时,Math.net还具有其他一些我不喜欢的时髦特性,我不记得那是什么,我只是知道从ExoCortex DSP库中获得想要的东西要容易得多。我不是数学家还是工程师。对于那些家伙来说,这也许是很合理的。
所以!我使用了Math.Net所基于的ExoCortex发出的FFT代码,没有其他任何事情,并且效果很好。
最后,我知道它不是C#,但我已经开始考虑使用FFTW(http://www.fftw.org/)。这个家伙已经做了一个C#包装器,所以我要检查一下它,但实际上还没有使用过。(http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html)
哦!我不知道您是在上学还是在工作中,但是无论哪种方式,iTunes University上的斯坦福大学教授都会提供一系列很棒的免费讲座。
https://podcasts.apple.com/us/podcast/the-fourier-transforms-and-its-applications/id384232849
我看到这是一个旧线程,但就其价值而言,我在这里有一个免费的(MIT许可证)一维仅2幂的C#FFT实现:http : //gerrybeauregard.wordpress.com/2011 / 04/01 / an-fft-in-c /
我没有将它的性能与其他C#FFT实现进行比较。我主要是为了比较Flash / ActionScript和Silverlight / C#的性能而编写的。后者要快得多,至少对于数字处理而言。
这是另一个 Ooura FFT的C#端口。相当快。根据MIT的许可,该软件包还包括重叠/添加卷积和其他一些DSP东西。
https://github.com/hughpyle/inguz-DSPUtil/blob/master/Fourier.cs
一个老问题,但它仍然显示在Google结果中...
可以在以下位置找到非常不受限制的MIT许可C#/ .NET库,
https://www.codeproject.com/articles/1107480/dsplib-fft-dft-fourier-transform-library-for-net
该库很快,因为它在多个内核上并行执行线程,并且非常完整并且可以使用。
如果您不介意在数值配方网站(http://www.nr.com/)上输入FFT,则我正在进行一个项目。我正在一个项目中,将Labview程序转换为C#2008,.NET 3.5,以获取数据并然后看看频谱。不幸的是,Math.Net使用了最新的.NET框架,因此我无法使用该FFT。我尝试了Exocortex,它可以工作,但结果与Labview结果匹配,而且我不了解足够的FFT理论,无法确定导致问题的原因。因此,我在数字配方网站上尝试了FFT,它起作用了!我还能够对Labview的低旁瓣窗口进行编程(并且必须引入比例因子)。
您可以在自己的网站上以访客的身份阅读《数字食谱》一书的章节,但是这本书非常有用,我强烈建议您购买它。即使最终使用Math.NET FFT也是如此。