Numpy fft.pack vs FFTW vs您自己实施DFT

and*_*tse 0 python numpy fft fftw

我目前需要在1024个采样点信号上运行FFT.到目前为止,我已经在python中实现了我自己的DFT算法,但它非常慢.如果我使用NUMPY fftpack,甚至转移到C++并使用FFTW,你们认为它会更好吗?

Gre*_*hen 7

如果您完全在Python中实现DFFT,那么您的代码将比您提到的任何一个包运行速度低几个数量级.不仅因为这些库是用更低级别的语言编写的,而且(特别是FFTW)它们被编写得如此大量优化,利用缓存局部性,向量单元以及本书中的每一个技巧,它不会令人惊讶我,如果他们以10,000x的速度运行一个天真的Python实现.即使你在实现中使用numpy,它仍然会比较苍白.

是的 使用numpy的fftpack.如果这还不够快,你可以尝试使用FFTW(PyFFTW)的python绑定,但是从fftpack到fftw的加速不会那么戏剧化.我真的怀疑是否需要仅针对FFT进入C++ - 它们是Python绑定的理想情况.