本帖最后由 硬汉Eric2013 于 2015-6-26 11:11 编辑
24.4 按时间抽选的基2-FFT算法
24.4.1 算法原理设输入序列长度为
![24.10.png 24.10.png](forum.php?mod=image&aid=263032&size=640x0&key=4ef6e1adacaf4535&type=fixnone)
(M为正整数),将该序列按时间顺序的奇偶分解为越来越短的子序列,称为基2按时间抽取的FFT算法。也称为Coolkey-Tukey算法。
其中基2表示:N = 2M,M为整数。若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到N = 2M。
24.4.2 算法步骤Ø 分组,变量置换
先将x(n)按n的奇偶分为两组,作变量置换:
当n = 偶数时,令n = 2r;
当n = 奇数时,令n = 2r+1;
得到:
x(2r)=x1(r)
x(2r+1)=x2(r) r = 0,…… -1
Ø 分组,变量置换
其中k = 0, 1,…. N/2 – 1。
![24.14.png 24.14.png](forum.php?mod=image&aid=263036&size=640x0&key=2095926f594056fc&type=fixnone)
和
![24.15.png 24.15.png](forum.php?mod=image&aid=263037&size=640x0&key=f673f430caeefcaa&type=fixnone)
只有N/2个点,以N/2为周期;而X(k)却有N个点,以N为周期。要用和 表达全部的X(k)值。还必须利用
![QQ截图20150626110008.png QQ截图20150626110008.png](forum.php?mod=image&aid=263053&size=640x0&key=7262818e826c95f0&type=fixnone)
系数的周期特性。
有了上面的计算结果后,我们可以得到如下的蝶形运算流图符号:
关于这个蝶形运算流图符号说明如下:
1. 1个蝶形运算需要1次复乘,2次复加。
2. 左边两路为输入。
3. 右边两路为输出。
4. 中间以一个小圆表示加减运算(右上路为相加输出,右下路为相减输出)。
Ø 分解后的运算量
运算量减少了近一半。
例子:求
![24.20.png 24.20.png](forum.php?mod=image&aid=263042&size=640x0&key=e7c318a88f7c2c3e&type=fixnone)
点FFT变化。按N=8àN/2=4,做4点的DFT,先将N=8点的DFT分解成2个4点的DFT:
可知: 时域上 x(0),x(2),x(4),x(6)为偶子序列。
x(1),x(3),x(5),x(7)为奇子序列。
频域上 X(0) 到X(3) 由X(k)给出
X(4) 到X(7) 由X(k+N/2)给出
此外,还有4个蝶形结,每个蝶形结需要1次复乘,2次复加。一共是:复乘4次,复加8次。
用分解的方法的得到X(k)需要:
复乘:32+4=36次
复加:24+8=32次
按时间抽取的DFT分解过程:
因为4点DFT还是比较麻烦,所以再继续分解。
若将N/2(4点)子序列按奇/偶分解成两个N/4点(2点)子序列。即对将x1(r)和x2(r)分解成奇、偶两个N/4点(2点)的子序列。
因此可以对两个N/2点的DFT再分别作进一步的分解。将一个8点的DFT可以分解成四个2点的DFT,直到最后得到两两点的DFT为止。
由于这种方法每一步分解都是按输入序列是属于偶数还是奇数来抽取的,所以称为“按时间抽取的FFT算法”。
下图是由4个两点DFT组成的8点DFT:
下图是按8点抽取的FFT运算流图:
这里注意观察蝶形图的系数
24.4.3 FFT算法和直接计算DFT运算量的比较FFT算法与直接计算DFT所需乘法次数的比较曲线
本帖最后由 硬汉Eric2013 于 2015-6-26 11:11 编辑
24.4 按时间抽选的基2-FFT算法
24.4.1 算法原理设输入序列长度为
![24.10.png 24.10.png](forum.php?mod=image&aid=263032&size=640x0&key=4ef6e1adacaf4535&type=fixnone)
(M为正整数),将该序列按时间顺序的奇偶分解为越来越短的子序列,称为基2按时间抽取的FFT算法。也称为Coolkey-Tukey算法。
其中基2表示:N = 2M,M为整数。若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到N = 2M。
24.4.2 算法步骤Ø 分组,变量置换
先将x(n)按n的奇偶分为两组,作变量置换:
当n = 偶数时,令n = 2r;
当n = 奇数时,令n = 2r+1;
得到:
x(2r)=x1(r)
x(2r+1)=x2(r) r = 0,…… -1
Ø 分组,变量置换
其中k = 0, 1,…. N/2 – 1。
![24.14.png 24.14.png](forum.php?mod=image&aid=263036&size=640x0&key=2095926f594056fc&type=fixnone)
和
![24.15.png 24.15.png](forum.php?mod=image&aid=263037&size=640x0&key=f673f430caeefcaa&type=fixnone)
只有N/2个点,以N/2为周期;而X(k)却有N个点,以N为周期。要用和 表达全部的X(k)值。还必须利用
![QQ截图20150626110008.png QQ截图20150626110008.png](forum.php?mod=image&aid=263053&size=640x0&key=7262818e826c95f0&type=fixnone)
系数的周期特性。
有了上面的计算结果后,我们可以得到如下的蝶形运算流图符号:
关于这个蝶形运算流图符号说明如下:
1. 1个蝶形运算需要1次复乘,2次复加。
2. 左边两路为输入。
3. 右边两路为输出。
4. 中间以一个小圆表示加减运算(右上路为相加输出,右下路为相减输出)。
Ø 分解后的运算量
运算量减少了近一半。
例子:求
![24.20.png 24.20.png](forum.php?mod=image&aid=263042&size=640x0&key=e7c318a88f7c2c3e&type=fixnone)
点FFT变化。按N=8àN/2=4,做4点的DFT,先将N=8点的DFT分解成2个4点的DFT:
可知: 时域上 x(0),x(2),x(4),x(6)为偶子序列。
x(1),x(3),x(5),x(7)为奇子序列。
频域上 X(0) 到X(3) 由X(k)给出
X(4) 到X(7) 由X(k+N/2)给出
此外,还有4个蝶形结,每个蝶形结需要1次复乘,2次复加。一共是:复乘4次,复加8次。
用分解的方法的得到X(k)需要:
复乘:32+4=36次
复加:24+8=32次
按时间抽取的DFT分解过程:
因为4点DFT还是比较麻烦,所以再继续分解。
若将N/2(4点)子序列按奇/偶分解成两个N/4点(2点)子序列。即对将x1(r)和x2(r)分解成奇、偶两个N/4点(2点)的子序列。
因此可以对两个N/2点的DFT再分别作进一步的分解。将一个8点的DFT可以分解成四个2点的DFT,直到最后得到两两点的DFT为止。
由于这种方法每一步分解都是按输入序列是属于偶数还是奇数来抽取的,所以称为“按时间抽取的FFT算法”。
下图是由4个两点DFT组成的8点DFT:
下图是按8点抽取的FFT运算流图:
这里注意观察蝶形图的系数
24.4.3 FFT算法和直接计算DFT运算量的比较FFT算法与直接计算DFT所需乘法次数的比较曲线
举报