版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022/10/12Ch.4 FFT1直接计算DFT的问题及改进的途径按时间抽取的基2-FFT算法 按频率抽取的基2-FFT算法 快速傅里叶逆变换(IFFT)算法 Matlab实现快速傅里叶变换 (Fast Fourier Transform)2022/10/10Ch.4 FFT1直接计算DFT的问题及2022/10/12Ch.4 FFT24.1 引言 DFT在实际应用中很重要: 可以计算信号的频谱、功率谱和线性卷积等。直接按DFT变换进行计算,当序列长度N很大时,计算量非常大,所需时间会很长。FFT并不是一种与DFT不同的变换,而是DFT的一种快速计算的算法。 2022/10/10Ch.4
2、FFT24.1 引言 DFT在2022/10/12Ch.4 FFT34.2 直接计算DFT的问题及改进的途径 DFT的运算量 设复序列x(n) 长度为N点,其DFT为k=0,N-1 (1)计算一个X(k) 值的运算量复数乘法次数: N复数加法次数: N12022/10/10Ch.4 FFT34.2 直接计算DFT2022/10/12Ch.4 FFT4(2)计算全部N个X(k) 值的运算量复数乘法次数: N2复数加法次数: N(N1)(3)对应的实数运算量4.2.1 DFT的运算量2022/10/10Ch.4 FFT4(2)计算全部N个X(2022/10/12Ch.4 FFT54.2.1 DFT
3、的运算量一次复数乘法: 4次实数乘法 2次实数加法 一个X(k) :4N次实数乘法2N+2(N-1)= 2(2N-1)次实数加法 所以 整个N点DFT运算共需要:N2(2N-1)= 2N(2N-1)实数乘法次数:4 N2实数加法次数:2022/10/10Ch.4 FFT54.2.1 DFT的运2022/10/12Ch.4 FFT6DFT运算量的结论N点DFT的复数乘法次数举例NN2NN22464404941612816384864256 65 536 16256512 262 144 3210281024 1 048 576 结论:当N很大时,其运算量很大,对实时性很强的信号处理来说,要求计算
4、速度快,因此需要改进DFT的计算方法,以大大减少运算次数。 2022/10/10Ch.4 FFT6DFT运算量的结论N点2022/10/12Ch.4 FFT7 4.2.2 减少运算工作量的途径 主要原理是利用系数 的以下特性对DFT进行分解: (1)对称性 (2)周期性 (3)可约性 另外,2022/10/10Ch.4 FFT7 4.2.2 减少2022/10/12Ch.4 FFT84.3 按时间抽取的基2-FFT算法 算法原理按时间抽取基-2FFT算法与直接计算DFT运算量的比较按时间抽取的FFT算法的特点按时间抽取FFT算法的其它形式流程图授课思路2022/10/10Ch.4 FFT84.
5、3 按时间抽取的基2022/10/12Ch.4 FFT94.3.1 算法原理 设N2L,将x(n)按 n 的奇偶分为两组: r =0,1, 则2022/10/10Ch.4 FFT94.3.1 算法原理 2022/10/12Ch.4 FFT10式中,X1(k)和X2(k)分别是x1(n)和x2(n)的N/2的DFT。另外,式中k的取值范围是:0,1, ,N/21 。2022/10/10Ch.4 FFT10式中,X1(k)和X2022/10/12Ch.4 FFT11因此, 只能计算出X(k)的前一半值。后一半X(k) 值, N/2 , N/2 1, ,N ?利用可得到 同理可得2022/10/10
6、Ch.4 FFT11因此, 2022/10/12Ch.4 FFT12考虑到 因此可得后半部分X(k) 及前半部分X(k) k=0,1, ,N/21k=0,1, ,N/212022/10/10Ch.4 FFT12考虑到 因此可得后2022/10/12Ch.4 FFT13蝶形运算蝶形运算式蝶形运算信号流图符号 因此,只要求出2个N/2点的DFT,即X1(k)和X2(k),再经过蝶形运算就可求出全部X(k)的值,运算量大大减少。2022/10/10Ch.4 FFT13蝶形运算蝶形运算式蝶2022/10/12Ch.4 FFT14以8点为例第一次按奇偶分解以N=8为例,分解为2个4点的DFT,然后做8/
7、2=4次蝶形运算即可求出所有8点X(k)的值。2022/10/10Ch.4 FFT14以8点为例第一次按奇2022/10/12Ch.4 FFT15蝶形运算量比较复数乘法次数: N2复数加法次数: N(N1)复数乘法次数: 2*(N/2)2+N/2=N2/2+N/2复数加法次数: 2*(N/2)(N/21)+2*N/2=N2/2N点DFT的运算量 分解一次后所需的运算量2个N/2的DFTN/2蝶形:因此通过一次分解后,运算工作量减少了差不多一半。 2022/10/10Ch.4 FFT15蝶形运算量比较复数乘2022/10/12Ch.4 FFT16进一步按奇偶分解 由于N2L,因而N/2仍是偶数
8、,可以进一步把每个N/2点子序列再按其奇偶部分分解为两个N/4点的子序列。 以N/2点序列x1(r)为例 则有 k=0,1, 2022/10/10Ch.4 FFT16进一步按奇偶分解 2022/10/12Ch.4 FFT17且k=0,1, 由此可见,一个N/2点DFT可分解成两个N/4点DFT。 同理,也可对x2(n)进行同样的分解,求出X2(k)。 2022/10/10Ch.4 FFT17且k=0,1, 2022/10/12Ch.4 FFT18以8点为例第二次按奇偶分解2022/10/10Ch.4 FFT18以8点为例第二次按奇2022/10/12Ch.4 FFT19算法原理 对此例N=8,
9、最后剩下的是4个N/4= 2点的DFT,2点DFT也可以由蝶形运算来完成。以X3(k)为例。 k=0, 1即这说明,N=2M的DFT可全部由蝶形运算来完成。2022/10/10Ch.4 FFT19算法原理 2022/10/12Ch.4 FFT20以8点为例第三次按奇偶分解N=8按时间抽取法FFT信号流图 2022/10/10Ch.4 FFT20以8点为例第三次按奇2022/10/12Ch.4 FFT214.3.2 按时间抽取基2-FFT算法与直接计算DFT运算量的比较 由按时间抽取法FFT的信号流图可知,当N=2L时,共有 级蝶形运算;每级都由 个蝶形运算组成,而每个蝶形有 次复乘、 次复加,
10、因此每级运算都需 次复乘和 次复加。 LN/2 N/2 12N2022/10/10Ch.4 FFT214.3.2 按时间抽2022/10/12Ch.4 FFT22这样 级运算总共需要: L复数乘法: 复数加法: 直接DFT算法运算量 复数乘法: 复数加法: N2N(N1)直接计算DFT与FFT算法的计算量之比为M2022/10/10Ch.4 FFT22这样 2022/10/12Ch.4 FFT23FFT算法与直接DFT算法运算量的比较NN2计算量之比M NN2计算量之比M 2414.012816 38444836.641644.025665 5361 02464.0864125.4512262
11、 1442 304113.816256328.010241 048 5765 120204.83210288012.820484 194 30411 264372.464404919221.42022/10/10Ch.4 FFT23FFT算法与直接DF2022/10/12Ch.4 FFT244.3.3 按时间抽取的FFT算法的特点序列的逆序排列同址运算(原位运算)蝶形运算两节点间的距离 的确定算法特点概述2022/10/10Ch.4 FFT244.3.3 按时间抽2022/10/12Ch.4 FFT25序列的逆序排列 由于 x(n) 被反复地按奇、偶分组,所以流图输入端的排列不再是顺序的,但仍
12、有规律可循: 因为 N=2M , 对于任意 n(0n N-1),可以用M个二进制码表示为: n 反复按奇、偶分解时,即按二进制码的“0” “1” 分解。序列的逆序排列2022/10/10Ch.4 FFT25序列的逆序排列 2022/10/12Ch.4 FFT26倒位序的树状图(N=8) 2022/10/10Ch.4 FFT26倒位序的树状图(N=2022/10/12Ch.4 FFT27码位的倒位序(N=8) 自然顺序 n二进制数倒位序二进制数倒位序顺序数00000000100110042010010230111106410000115101101561100113711111172022/10
13、/10Ch.4 FFT27码位的倒位序(N=82022/10/12Ch.4 FFT28倒位序的变址处理(N=8)2022/10/10Ch.4 FFT28倒位序的变址处理(N2022/10/12Ch.4 FFT29同址运算(原位运算) 某一列任何两个节点k 和j 的节点变量进行蝶形运算后,得到结果为下一列k、j两节点的节点变量,而和其他节点变量无关。这种原位运算结构可以节省存储单元,降低设备成本。运算前运算后例同址运算(原位运算)2022/10/10Ch.4 FFT29同址运算(原位运算)2022/10/12Ch.4 FFT30观察原位运算规律2022/10/10Ch.4 FFT30观察原位运算
14、规律2022/10/12Ch.4 FFT31蝶形运算两节点间的距离 以N=8为例:第一级蝶形,距离为:第二级蝶形,距离为:第三级蝶形,距离为:规律:对于共L级的蝶形而言,其m级蝶形运算的节 点间的距离为124蝶形运算两节点间的距离 2022/10/10Ch.4 FFT31蝶形运算两节点间的距2022/10/12Ch.4 FFT32 的确定 以N=8为例: 的确定 2022/10/10Ch.4 FFT32 的确定 以2022/10/12Ch.4 FFT334.4 按频率抽取的基2-FFT算法 算法原理 再把输出X(k)按k的奇偶分组先把输入按n的顺序分成前后两半设序列长度为N=2L,L为整数 前
15、半子序列x(n) 后半子序列 0n0n2022/10/10Ch.4 FFT334.4 按频率抽取的2022/10/12Ch.4 FFT344.4.1 算法原理由DFT定义得k=0,1, ,N2022/10/10Ch.4 FFT344.4.1 算法原理2022/10/12Ch.4 FFT35由于 所以则 k=0,1, ,N2022/10/10Ch.4 FFT35由于 所以则 k=02022/10/12Ch.4 FFT36然后按k的奇偶可将X(k)分为两部分 r=0,1, ,则式 可转化为 2022/10/10Ch.4 FFT36然后按k的奇偶可将X2022/10/12Ch.4 FFT37令 n=
16、0,1, ,代入 r=0,1, ,可得为2个N/2点的DFT,合起来正好是N点X(k)的值。2022/10/10Ch.4 FFT37令 n=0,1, 2022/10/12Ch.4 FFT38蝶形运算将称为蝶形运算与时间抽选基2FFT算法中的蝶形运算符号略有不同。2022/10/10Ch.4 FFT38蝶形运算将称为蝶形运2022/10/12Ch.4 FFT39例 按频率抽取(N=8) 例 按频率抽取,将N点DFT分解为两个N/2点DFT的组合(N=8) 2022/10/10Ch.4 FFT39例 按频率抽取(N2022/10/12Ch.4 FFT40 与时间抽取法的推导过程一样,由于 N=2L
17、,N/2仍然是一个偶数,因而可以将每个N/2点DFT的输出再分解为偶数组与奇数组,这就将N/2点DFT进一步分解为两个N/4点DFT。 N=82022/10/10Ch.4 FFT40 与时2022/10/12Ch.4 FFT414.4.2 频率抽取法与时间抽取法的异同 频率抽取法输入是自然顺序,输出是倒位序的;时间抽取法正好相反。频率抽取法的基本蝶形与时间抽取法的基本蝶形有所不同。频率抽取法运算量与时间抽取法相同。频率抽取法与时间抽取法的基本蝶形是互为转置的。 2022/10/10Ch.4 FFT414.4.2 频率抽取2022/10/12Ch.4 FFT424.5 快速傅里叶逆变换(IFFT
18、)算法IDFT公式 DFT公式 比较可以看出, IDFT多出M个1/2可分解到M级蝶形运算中。2022/10/10Ch.4 FFT424.5 快速傅里叶逆2022/10/12Ch.4 FFT43例 频率抽取IFFT流图(N=8) 2022/10/10Ch.4 FFT43例 频率抽取IFF2022/10/12Ch.4 FFT44快速傅里叶逆变换另一种算法2022/10/10Ch.4 FFT44快速傅里叶逆变换另一2022/10/12Ch.4 FFT454.8 Matlab实现用FFT进行谱分析的Matlab实现用CZT进行谱分析的Matlab实现在Matlab中使用的线性调频z变换函数为czt,
19、其调用格式为X= czt(x, M, W, A)其中,x是待变换的时域信号x(n),其长度为N,M是变换的长度,W确定变换的步长,A确定变换的起点。若M= N,A= 1,则CZT变成DFT。2022/10/10Ch.4 FFT454.8 Matlab2022/10/12Ch.4 FFT464.8.1 用FFT进行谱分析的Matlab实现例4.1 设模拟信号 ,以 t= 0.01n (n=0: N-1) 进行取样,试用fft函数对其做频谱分析。N分别为:(1) N=45;(2) N=50;(3) N=55;(2) N=60。 程序清单如下 %计算N=45的FFT并绘出其幅频曲线N=45;n=0:
20、N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);figure(1)subplot(2,2,1)plot(q,abs(y)title(FFT N=45)2022/10/10Ch.4 FFT464.8.1 用FFT2022/10/12Ch.4 FFT47例4.1程序清单%计算N=50的FFT并绘出其幅频曲线N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);figure(1)subplot(2,2,2)plot(q,abs(y)title(FFT N=50)2022/10/10Ch.4 FFT47例4.1程序清单%计2022/10/12Ch.4 FFT48%计算N=55的FFT并绘出其幅频曲线N=55;n=0:N-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论