FFT和逆FFT之间是否存在实际差异?

时间:2011-10-12 21:05:33

标签: fft fftw

诸如FFTW或numpy.fft之类的FFT库通常提供两个函数fft()ifft()(以及用于实值输入的特殊版本)。这些功能似乎被定义为

ifft(fft(X)) == X

fft(X) == constant_factor * reverse(ifft(X))

ifft()fft()选择复杂输入时,是否有任何实际或技术原因需要考虑?虽然X(信号,时间或空间域)和fft(X)(频谱,频域)的解释不同,但它在计算上是否重要?

1 个答案:

答案 0 :(得分:4)

不同的fft库将缩放比例设置在不同的位置,两者中的fft,ifft或1 / sqrt(N)。所以这只是一个小的实现依赖差异。 fft和ifft颠倒了结果的顺序。所以这只是结果数组中索引向前或向后的区别。无论您将一个时间/空间与频率相呼应,只是标签差异。

所以实际上,选择一个库所使用的规模,并且你想要为结果编制索引的方向产生最可读的代码。通常设置fft / ifft库,以便可以在同一方向上指示正时间和更高频率(++)。

ADDED:次要的,可能是不必要的优化:如果你需要对FT结果进行后期扩展,那么选择不包含内置比例的fft或ifft实现,因为这可以节省N个半冗余乘法运算。