诸如FFTW或numpy.fft之类的FFT库通常提供两个函数fft()
和ifft()
(以及用于实值输入的特殊版本)。这些功能似乎被定义为
ifft(fft(X)) == X
和
fft(X) == constant_factor * reverse(ifft(X))
在ifft()
和fft()
选择复杂输入时,是否有任何实际或技术原因需要考虑?虽然X
(信号,时间或空间域)和fft(X)
(频谱,频域)的解释不同,但它在计算上是否重要?
答案 0 :(得分:4)
不同的fft库将缩放比例设置在不同的位置,两者中的fft,ifft或1 / sqrt(N)。所以这只是一个小的实现依赖差异。 fft和ifft颠倒了结果的顺序。所以这只是结果数组中索引向前或向后的区别。无论您将一个时间/空间与频率相呼应,只是标签差异。
所以实际上,选择一个库所使用的规模,并且你想要为结果编制索引的方向产生最可读的代码。通常设置fft / ifft库,以便可以在同一方向上指示正时间和更高频率(++)。
ADDED:次要的,可能是不必要的优化:如果你需要对FT结果进行后期扩展,那么选择不包含内置比例的fft或ifft实现,因为这可以节省N个半冗余乘法运算。