快速傅立叶变换(FFT)在C#中的实现


Answers:



52

做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


2
我对Math.NET Iridium fft实现中的怪异性感兴趣,因此我们可以修复它!;)。与复数的处理方式有关吗?但是不知道您所说的“人类可见格式”是什么意思。样本:mathnet.opensourcedotnet.info/doc/IridiumFFT.ashx
ChristophRüegg,

6
fftw具有某种有问题的许可证;请查看以下内容:“还提供了FFTW的非免费许可证,允许使用的条款与GPL不同。”
丹尼尔·莫斯蒙多(DanielMošmondor)2010年

这是迈克·伯大尼(Mike Bethany)的问题。我正在尝试学习如何将数据从时域转换到频域。您的exocortex链接是正确的方法吗?
牛逼ONY

exo cortext引发系统超出范围的异常,而没有on.net4上的附加信息。不工作。
bh_earth0 '16

13

Math.NET的Iridium库提供了快速,定期更新的与数学相关的功能的集合,包括FFT。它是根据LGPL许可的,因此您可以在商业产品中自由使用它。


2
+1。Math.NET Iridium非常适合将Java代码(使用Apache Commons-math)转换为.NET,这要归功于每个类和方法之间的紧密对应。95%的时间您所需要做的就是更改类和方法的名称,一切都会正常进行。
finnw





2

如果您不介意在数值配方网站(http://www.nr.com/)上输入FFT,则我正在进行一个项目。我正在一个项目中,将Labview程序转换为C#2008,.NET 3.5,以获取数据并然后看看频谱。不幸的是,Math.Net使用了最新的.NET框架,因此我无法使用该FFT。我尝试了Exocortex,它可以工作,但结果与Labview结果匹配,而且我不了解足够的FFT理论,无法确定导致问题的原因。因此,我在数字配方网站上尝试了FFT,它起作用了!我还能够对Labview的低旁瓣窗口进行编程(并且必须引入比例因子)。

您可以在自己的网站上以访客的身份阅读《数字食谱》一书的章节,但是这本书非常有用,我强烈建议您购买它。即使最终使用Math.NET FFT也是如此。


使用“数字配方”中的任何代码时都要小心。代码没错,是许可证是问题所在。您必须付费才能使用该代码,非商业或科学应用程序也不例外。有关更多信息,请参见此链接
鲍勃·布赖恩

1

对于针对英特尔处理器优化的多线程实现,我将检查英特尔的MKL库。它不是免费的,但是它很便宜(不到100美元)并且运行迅速-但您需要通过P / Invokes称它为C dll。Exocortex项目在6年前就停止了开发,因此如果这是一个重要的项目,则应谨慎使用。


2
截至2013年6月,单用户价格为499美元。
RickNZ

截至2015年10月,作曲者版本的价格为699美元
-mcy

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.