离散傅立叶变换(DFT)的定义:
为了表达简洁,令,则。
FFT实际上是一种分治算法。FFT将长度为𝑁的信号分解成两个长度为𝑁/2信号进行处理,这样分解一直到最后,每一次的分解都会减少计算的次数。FFT可以分为以下3个步骤:
(1)分解
(2)DFT运算
(3)组合
步骤1:分解
将信号x[n]分解成两个子信号
偶数样本点采样信号:x[2n]; n=0,1,2,…N/2-1
奇数样本点采样信号:x[2n+1]; n=0,1,2,…N/2-1
步骤2:DFT运算
分别计算x0(n)的N/2点DFT X0(k)和X1(k)的N/2点DFT X1(k); 用以下公式进行计算:
例如:
步骤3:组合
最后对X0(k)和 X1(k)进行组合,可以得到x(n)的DFT X(k):
而该式又可以改写成以下公式:
这个公式是从步骤2的两条公式推演过来的,X(k)将自己的计算拆成了偶数的X0(k)和奇数的X1(k),偶数的X0(k)和奇数的X1(k)中k的取值范围是0~(N/2-1),那么X(k)在0~(N/2-1)的取值范围上,可以用上式来表达。
k的取值范围0~(N/2-1)搞定了,那么根据DFT的周期性(如果不了解或者不记得可以去查),X0(k)和X1(k)的周期均为N/2,只要知道0~(N/2-1)的X0(k)和X1(k)取值 ,那么N/2~(N-1)范围的X0(k)和X1(k) 取值也一样知道了。
最后利用旋转因子的特性:
将上式改写成以下式子:
呈现的蝶形运算如下所示:
总结这三个步骤就是FFT的计算过程:
(1)分解
(2)DFT运算
(3)组合
参考资料:
如何理解和掌握快速傅里叶变换的计算和概念? - 知乎 (zhihu.com)
《深入浅出数字信号处理》