FFT算法的直观解释是什么?

What is an intuitive explanation of the FFT algorithm?

FFT算法的直观解释是什么?切到哪里corners/optimize?它如何考虑相位?

FFT 只是一种通过分解复杂矩阵变换来加速 DFT 的方法,从 O(N*N) 到 O(NlogN)。它实际上并没有偷工减料,不仅速度更快,而且通常比 DFT 更准确,因为通过更少的总运算,算术舍入误差或量化噪声的机会更少。

对于严格的实数输入,DFT 只是与一组正交正弦波的 N 个相关和与一组正交余弦波的 N 个相关,频率范围从 DC 到采样率的一半。 (在复数形式中,余弦相关是实部,正弦相关是虚部)。这些相关性都可以通过 N*N 复矩阵乘法来执行。

相位就是输入波形的余弦相关性(偶数部分)和正弦波相关性(奇数部分)的关系(atan2())。例如围绕 DFT window 中心完全对称的波形将具有零相位,而围绕中心完全反对称的波形将具有 pi 或 -pi 的相位。并且任何(非病态的真实)波形都可以分解为一对偶数和奇数波形,因此每个正弦分量都有一些相位(通过 atan2()),参考 DFT window 的边缘(或者到中心,如果你事先做了一个 fftshift)。

对于复数输入,上述所有内容都有类似的复数算术公式,使用与单位复数指数(而不是正弦和余弦)的相关性。