什么是FFT算法的直观解释?它在哪里偷工减料/优化?如何考虑相位?
答案 0 :(得分:1)
FFT是通过分解复杂矩阵变换将DFT从O(N * N)提升到O(NlogN)的一种方法。它实际上并没有偷工减料,但它不仅比DFT更快,而且通常比DFT精度更高,这是因为通过较少的总运算减少了算术舍入误差或量化噪声的机会。
对于严格实数的输入,在从DC到采样率一半的频率范围内,DFT与一组正交正弦波的N相关和与一组正交余弦波的N相关。 (在复数形式中,余弦相关为实部,而正弦相关为虚部)。这些相关性都可以通过N * N复数矩阵相乘来实现。
相位只是输入波形的余弦相关性(偶数部分)和正弦波相关性(奇数部分)的关系(atan2())。例如在DFT窗口中心周围完全对称的波形将具有零相位,而在中心周围完全反对称的波形将具有pi或-pi相位。而且任何(非病理实数)波形都可以分解为一对偶数和奇数波形,因此每个正弦波分量都有一定的相位(通过atan2()),以DFT窗口的边缘(或中心)为基准,如果您事先进行了fftshift)。
对于复数输入,所有上述情况都有类似的复数算术公式,使用与单位复数指数(而不是正弦和余弦)的相关性。