我正在使用C ++和WinApi调用编写Win32应用程序。我需要在20ms的WAVEFORMATEX数据上运行8192点FFT。什么是实现这一目标的最有效方法?
答案 0 :(得分:3)
已经很长时间了,但我记得这个代码库非常快速且易于编译:
答案 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应用程序。它只需要在文档中进行简单的归属。