1.07k likes | 1.4k Views
引言. 1.DFT 是信号分析与处理中的一种重要变换。 2.1965 年, Cooley, Tukey《 机器计算傅里叶级数的一种算法 》 3. 快速傅里叶算法使 DFT 的运算效率提高了 1 到 2 个数量级 4. 本章主要讨论基 2FFT 算法。. 第 4 章学习目标. 1. 理解按时间抽取的基 -2FFT 算法的算法原理、运算流图、所需计算量和算法特点 2. 理解按频率抽取的基 -2FFT 算法的算法原理、运算流图、所需计算量和算法特点 3. 理解 IFFT 算法. 第 4 章 快速傅里叶变换 (FFT). 4.1 引言 4.2 基 2FFT 算法
E N D
引言 1.DFT是信号分析与处理中的一种重要变换。 2.1965年,Cooley, Tukey《机器计算傅里叶级数的一种算法》 3.快速傅里叶算法使DFT的运算效率提高了1到2 个数量级 4.本章主要讨论基2FFT算法。
第4章学习目标 1.理解按时间抽取的基-2FFT算法的算法原理、运算流图、所需计算量和算法特点 2.理解按频率抽取的基-2FFT算法的算法原理、运算流图、所需计算量和算法特点 3.理解IFFT算法
第4章 快速傅里叶变换(FFT) 4.1 引言 4.2 基2FFT算法 4.3 进一步减少运算量的措施 4.4 分裂基FFT算法 4.5 离散哈特莱变换(DHT)
4.2 基2FFT算法 一.直接计算DFT的特点及减少运算量的基本途径 1.对N点有限长序列直接计算DFT的运算量
2.减少DFT运算量的基本途径 (1)把长序列分解成短序列计算,然后再组合出结果。
FFT算法分类: • 时间抽取法 DIT: Decimation-In-Time • 频率抽取法 DIF: Decimation-In-Frequency
1、算法原理 设序列点数 N = 2M,M 为整数。 若不满足,则补零 二.时域抽取法(库利-图基算法) N为2的整数幂的FFT算法称基-2FFT算法。 (1)第一次分解 将序列x(n)按n的奇偶分成两组:
则x(n)的DFT: 其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT
再利用周期性求的后半部分 先乘因子再加减 图4.2.1 蝶形运算符号
分解后的运算量: 运算量减少了近一半
N / 2仍为偶数,进一步分解:N / 2 N / 4 (2)第二次分解
同理: 其中: 这样逐级分解,直到2点DFT
2.基2时间抽取FFT算法流图 N=2 x[n]={x[0], x[1]}
x[0] 2点DFT 2点DFT x[2] x[1] x[3] 4点基2时间抽取FFT算法流图 X1[0] X[0] X1[1] X[1] -1 X2[0] X[2] -1 X2[1] X[3] -1 -1
x[0] x[2] 4点DFT 4点DFT x[4] x[6] x[1] x[3] x[5] x[7] 8点基2时间抽取FFT算法流图 X1[0] X[0] X1[1] X[1] X1[2] X[2] X1[3] X[3] X2[0] X[4] -1 X2[1] X[5] -1 X2[2] X[6] -1 X2[3] X[7] -1
x[0] x[2] 4点DFT 4点DFT x[4] x[6] x[1] x[3] x[5] x[7] 8点基2时间抽取FFT算法流图 X1[0] X[0] X1[1] X[1] X1[2] X[2] X1[3] X[3] X2[0] X[4] -1 X2[1] X[5] -1 X2[2] X[6] -1 X2[3] X[7] -1
基2时间抽取FFT算法 第三级 第二级 第一级
三 DIT―FFT算法与直接计算DFT运算量的比较 1.DIT-FFT算法的运算量 每一级运算都需要N/2次复数乘和N次复数加(每个蝶形需要两次复数加法)。所以,M级运算总共需要的复数乘次数为 复数加次数为
N 2 复乘次数 N 2. FFT算法与直接计算DFT运算量的比较曲线 图4.2.5 FFT算法与直接计算DFT所需乘法次数的比较曲线
中间数据的存储,可采用原位存储法。即每次蝶形运算的结果可以存储在原数据的同一个存储单元。这样在高速硬件实现时,可节省存储器。中间数据的存储,可采用原位存储法。即每次蝶形运算的结果可以存储在原数据的同一个存储单元。这样在高速硬件实现时,可节省存储器。 四 DIT―FFT的运算规律及编程思想 1.原位计算 2.旋转因子的变化规律 以蝶形运算为基础进行组合计算,旋转因子WNp的指数p与运算所在的级数和组内位置有关。如下所示: 继续
第L级共有2L-1个不同的旋转因子。N=23=8时的各级旋转因子表示如下:第L级共有2L-1个不同的旋转因子。N=23=8时的各级旋转因子表示如下: L=1时, , J=0 L=2时, , J=0,1 L=3时, , J=0,1,2,3 对N=2M的一般情况,第L级的旋转因子为 由于 所以 继续
3. 蝶形运算规律 第m级运算每个蝶形的两节点距离为 2m–1 第m级运算: 其中,m表示第m列,且m =1,… ,L 例如N=8=23 ,第一级(列)距离为21-1=1, 第二级(列)距离为22-1=2, 第三级(列)距离为23-1=4。
4. 序列的倒序 输入序列的混序。因为DFT输入序列是顺序采样的,所以在计算FFT 之前需要进行序列按混序要求排序。排序算法很多,较常用的计算混序号的方法有二进制序号反转算法。
0 x [00 0] 0 1 x [10 0] 0 x [ k k 0] 0 2 1 x [01 0] 1 1 x [11 0] x [ k k k ] 0 2 1 0 x [001 ] 0 1 x [101 ] 1 x [ k k 1] 0 2 1 x [01 1] 1 1 x [111 ] k k k 0 1 2
将原有二进制数倒序,即原来的高位变为低位,低位变高位将原有二进制数倒序,即原来的高位变为低位,低位变高位
A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) 倒序处理方法 存储单元 自然顺序 变址 倒位序
五、按频率抽选的基-2FFT算法 1、算法原理 设序列点数N=2M,M为整数。 (1)将X(k)按k的奇偶分组前,先将输入x(n)按n的顺序分成前后两半:
当k取偶数(k=2r,r=0,1,…,N/2-1)时 (2)按k的奇偶将X(k)分成两部分: • 当k取奇数(k=2r+1,r=0,1,…,N/2-1)时
令 则X(2r)和X(2r+1)分别是x1(n)和x2(n)的 N / 2点DFT,记为X1(k)和X2(k)
x1(0) N/2点 DFT X1(0)=X(0) x(0) x1(1) X1(1)=X(2) x(1) x1(2) X1(2)=X(4) x(2) x1(3) X1(3)=X(6) x(3) x2(0) N/2点 DFT X2(0)=X(1) x(4) -1 x2(1) X2(1)=X(3) x(5) -1 x2(2) X2(2)=X(5) x(6) -1 x2(3) X2(3)=X(7) x(7) -1
N/4点 DFT x3(0) x1(0) X3(0)=X1(0)=X(0) x3(1) X3(1)=X1(2)=X(4) x1(1) N/4点 DFT x4(0) x1(2) X4(0)=X1(1)=X(2) -1 x4(1) X4(1)=X1(3)=X(6) x1(3) -1
同理: 其中:
例如:当N=8时,即分解到x3(n),x4(n),x5(n),x6(n),n=0,1例如:当N=8时,即分解到x3(n),x4(n),x5(n),x6(n),n=0,1 (4)逐级分解,直到2点DFT
2.基2频域抽取FFT算法流图 N=2 x[n]={x[0], x[1]}
x[0] 2点DFT 2点DFT x[1] x[2] x[3] 4点基2频域抽取FFT算法流图 x1[0] X[0] x1[1] X[2] -1 x2[0] X[1] -1 x2[1] X[3] -1 -1
x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) 8点基2频域抽取FFT算法流图 4点 DFT x1(0) X1(0)=X(0) X1(1)=X(2) x1(1) x1(2) X1(2)=X(4) x1(3) X1(3)=X(6) x2(0) 4点 DFT X2(0)=X(1) -1 x2(1) X2(1)=X(3) -1 x2(2) X2(2)=X(5) -1 x2(3) X2(3)=X(7) -1
x(0) x1(0) x(1) x1(1) x3[0] x5[0] x(2) x1(2) 2点DFT 2点DFT 2点DFT 2点DFT x3[1] x5[1] x(3) x1(3) -1 -1 x2(0) x(4) -1 X2(0)=X(1) x6[0] x4[0] 4点 DFT x2(1) -1 -1 -1 x(5) X2(1)=X(3) x4[1] x6[1] x2(2) X2(2)=X(5) x(6) -1 -1 -1 x2(3) -1 -1 X2(3)=X(7) -1 x(7) 8点基2频域抽取FFT算法流图 X(0) X(4) X(2) X(6) X(1) X(5) X(3) X(7)
第一级 第二级 第三级