什么是Window的FFT功能?

时间:2011-10-09 01:31:16

标签: c++ winapi fft

我正在使用C ++和WinApi调用编写Win32应用程序。我需要在20ms的WAVEFORMATEX数据上运行8192点FFT。什么是实现这一目标的最有效方法?

3 个答案:

答案 0 :(得分:3)

已经很长时间了,但我记得这个代码库非常快速且易于编译:

http://fftw.org/

答案 1 :(得分:2)

正如我们在评论中充实,XDSP函数的MSDN文档可能与您有关。

这些功能似乎没有直接使用WAVEFORMATEX,但如果您可以将其转换为适当的格式,则可以使用FFT来执行您想要的操作。

请注意,它是DirectX SDK的一部分,因此您引入了新的依赖项。

答案 2 :(得分:2)

KISSFFT本身不是Windows API。然而,它足够小,可以很好地嵌入到任何项目中 - 大约30kb的ANSI C源代码,用于基本的复杂到复杂的转换。 与其他超小型FFT库不同,它快速,功能强大,准确,可用于多线程程序。

其中一个关键特征是KISSFFT可以做混合基数(2,3,5的倍数最快)。工具目录中提供了其他“螺栓固定”功能。仅使用您需要的部分:多维变换,实际优化变换(即半频谱),快速卷积等

speed对于大多数应用程序来说通常足够快 - 不如fftw或供应商库快,但比其余应用程序的构建速度快。

KISSFFT的accuracy与任何FFT库一样好。

许可证为3 clause BSD,可以合法地在频谱的一端使用商业应用程序,或者在另一端使用GPL应用程序。它只需要在文档中进行简单的归属。