【问题标题】:Is there any practical difference between the FFT and the inverse FFT?FFT 和逆 FFT 之间有什么实际区别吗?
【发布时间】:2011-10-12 21:05:33
【问题描述】:

FFTW 或 numpy.fft 等 FFT 库通常提供两个函数 fft()ifft()(以及用于实值输入的特殊版本)。这些函数似乎是这样定义的

ifft(fft(X)) == X

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

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

【问题讨论】:

    标签: fft fftw


    【解决方案1】:

    不同的 fft 库将缩放常数放在不同的位置,在 fft、ifft 或 1/sqrt(N) 中。所以这只是一个很小的依赖于实现的差异。 fft 和 ifft 颠倒了它们的结果顺序。所以这只是在结果数组中向前或向后索引之间的区别。您是否调用一个时间/空间与频率只是标签上的差异。

    因此,实际上,请选择库使用的任何比例以及您想要索引结果的方向都会产生最易读的代码的那个。通常设置 fft/ifft 库,以便可以在同一方向 (++) 索引正时间和更高频率。

    添加:次要的,可能是不必要的优化:如果您仍然需要对 FT 结果进行后缩放,则选择不包含内置缩放乘法的 fft 或 ifft 实现,因为这可以节省 N 个半冗余乘法运算。

    【讨论】:

    • 正向/反向 FFT 的旋转因子是否不同?从记忆中,我认为符号在虚部发生了变化?
    • 改变一些旋转因子中的符号是“反转时间”或输出具有相反索引方向的结果向量。
    • 好的 - 谢谢 - 我从来没有真正考虑过 FFT 和 IFFT 可以以这种方式互换的可能性 - 如果只是出于好奇,我将不得不进一步研究。跨度>
    • 从技术上讲,如果 fft 是用 1/sqrt(N) 实现的,那么fft(fft(array)) 会返回反向数组吗?如果我错了,请纠正我
    • fft(fft()) 将反转数组,通常围绕元素 0 对称,可能缩放,取决于实现缩放,可能包括数值舍入噪声。对称性:数组元素 0 中的值应保持不变,具体取决于索引(C 与 matlab 等)。
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2013-01-22
    • 2018-03-16
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多