时间抽选奇偶分解基-2 FFT算法
名字很长,其内容包括三部分内容:
-
时间抽选(Decimation-in-time,DIT)
是指在时域内将序列进行分解; -
奇偶分解
是指按照n的取值将分为奇偶两组,目的是将计算1个N点的DFT转化为计算2个点的DFT; -
基-2(radix-2)
是指,M为自然数,比如。目的是可以一直进行奇偶分解直到将N点DFT分解为一堆2点DFT。
在不致混淆的时候,时间抽选奇偶分解基-2 FFT算法
可简称为基-2 FFT算法
。由于基-2
可以最大限度的减少乘法运算次数,所以实际当中如果点数不满足基-2
条件,可以人为在中填补零点凑基-2
。
以下为算法的推导过程:
序列的DFT序列为:
若,则n取偶数时可写作,n取奇数时可写作,,按照奇偶将上式分为两组:
根据周期性2
,,所以式(1)又可以写作:
设
则根据定义,和都是点DFT。于是,将式(3)、(4)带入式(2)可得:
式(5)表示可分解为两个折半点数的DFT和的和。由于,因此上式只能表示点的。对于的另一半,可以利用DFT隐含的周期性得到。因为、是周期为的周期序列,所以:
而
所以将代入式(5)得:
将式(5)、(6)合并可得的完整表达式:
式(3)、(4)、(7)就是基-2FFT算法的核心。
例子:
利用基-2 FFT算法求序列x(n)的N=4的DFT。
根据式(3)、(4),可得和为:
然后根据式(7),得到为:
而直接求解DFT的结果如下式:
展开对比两个结果可知,基-2 FFT算法所得结果与直接展开的结果是一致的。
另外,通过观察可以发现,计算各点、各点和各点的结构是完全一致的,这种结构被称为蝶形运算(butterfly operation)。
比如计算和的算式可以绘制为如下所示的蝶形运算:
再如计算和的算式可以绘制为如下所示的蝶形运算:
将N=4的基-2FFT算法全部的蝶形运算画在一起如下图所示:
一次标准的蝶形运算包含1次复数乘法和2次复数加法(或1次复数乘加和1次复数加法)。如上图所示,N=4的DFT需要4次蝶形运算,共计4次复数乘法,远少于传统DFT的16次复数乘法。更进一步,经过更一般的推导可知,基-2 FFT算法的时间复杂度为,当N=1024时,基-2 FFT算法比传统算法快64倍。
习题
- 根据基-2 FFT算法求序列x(n)的8点DFT,并画出蝶形流程图;
- 设计matlab程序,实现基-2 FFT算法。