快速傅里叶变换_第1页
快速傅里叶变换_第2页
快速傅里叶变换_第3页
快速傅里叶变换_第4页
快速傅里叶变换_第5页
免费预览已结束,剩余77页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,学习目的,自己能编写FFT算法,理论上理解FFT算法,2,本章目录,直接计算DFT的问题及改进的途径,按时间抽取的基2-FFT算法,按频率抽取的基2-FFT算法,快速傅里叶逆变换(IFFT)算法,Matlab实现,3,4.1引言,DFT在实际应用中很重要:可以计算信号的频谱、功率谱和线性卷积等。直接按DFT变换进行计算,当序列长度N很大时,计算量非常大,所需时间会很长,实时处理难以实现。1965年,图基和库利发表了机器计算快速傅立叶级数的一种算法论文后,很快形成了快速计算DFT的计算机算法FFT。(FastFourierTransform)FFT并不是一种与DFT不同的变换,而是DFT的一种快速计算的算法。,4,4.2直接计算DFT的问题及改进的途径,DFT的运算量,设复序列x(n)长度为N点,其DFT为,k=0,N-1,(1)计算一个X(k)值的运算量,复数乘法次数:,N,复数加法次数:,N1,(2)计算全部N个X(k)值的运算量,复数乘法次数:,N2,复数加法次数:,N(N1),5,DFT运算量的结论,N点DFT的复数乘法次数举例,结论:当N很大时,其运算量很大,对实时性很强的信号处理来说,要求计算速度快,因此需要改进DFT的计算方法,以大大减少运算次数。,6,4.2.2减少运算工作量的途径,主要原理是利用系数的以下特性对DFT进行分解:,(2)对称性,(1)周期性,(3)可约性,另外,,7,4.3按时间抽取的基2-FFT算法,算法原理按时间抽取基-2FFT算法与直接计算DFT运算量的比较按时间抽取的FFT算法的特点按时间抽取FFT算法的其它形式流程图,DIT-FFT(Decimation-In-Time),8,4.3.1算法原理,设N2M,将x(n)按n的奇偶分为两组:,r=0,1,,则,9,式中,X1(k)和X2(k)分别是x1(n)和x2(n)的N/2的DFT。,另外,式中k的取值范围是:0,1,N/21。,10,因此,只能计算出X(k)的前一半值。,后一半X(k)值,N/2,N/21,N-1?,同理可得,11,因此可得后半部分X(k),由前半部分X(k),k=0,1,N/21,k=0,1,N/21,12,k=0,1,N/21,结论:,因此,只要求出2个N/2点的DFT,即X1(k)和X2(k),再经过这种运算就可求出全部X(k)的值,13,新概念:蝶形运算,蝶形运算式,蝶形运算信号流图符号,蝶形运算的运算量:每次蝶形含一次复数乘和两次复数加,14,以8点为例第一次按奇偶分解,以N=8为例,分解为2个4点的DFT,然后做8/2=4次蝶形运算即可求出所有8点X(k)的值。,分解一次后所需的运算量2个N/2的DFTN/2蝶形,15,运算量比较,复数乘法次数:,N2,复数加法次数:,N(N1),复数乘法次数:,2*(N/2)2+N/2=N2/2+N/2,复数加法次数:,2*(N/2)(N/21)+2*N/2=N2/2,N点DFT的运算量,分解一次后所需的运算量2个N/2的DFTN/2蝶形:,通过一次分解后,运算工作量减少了差不多一半。,每次蝶形含一次复数乘和两次复数加,16,进一步按奇偶分解,由于N2M,因而N/2仍是偶数,可以进一步把每个N/2点子序列再按其奇偶部分分解为两个N/4点的子序列。,以N/2点序列x1(r)为例,则有,k=0,1,17,且,k=0,1,由此可见,一个N/2点DFT可分解成两个N/4点DFT。,同理,也可对x2(n)进行同样的分解,求出X2(k)。,18,以8点为例第二次按奇偶分解,概念:信号流图,19,算法原理,对此例N=8,最后剩下的是4个N/4=2点的DFT,2点DFT也可以由蝶形运算来完成。N=2,这说明,N=2M的DFT可全部由蝶形运算来完成。因此:N必须是2的整数次幂.“基2”,蝶形运算,20,以8点为例第三次按奇偶分解,N=8按时间抽取法FFT信号流图,x(n)抽取,X(k)顺序,DIT-FFT(Decimation-In-Time),FFT算法,21,4.3.2按时间抽取基2-FFT算法与直接计算DFT运算量的比较,由按时间抽取法FFT的信号流图可知,当N=2M时,共有级蝶形运算;每级都由个蝶形运算组成,而每个蝶形有次复乘、次复加,因此每级运算都需次复乘和次复加。,M,N/2,N/2,1,2,N,22,FFT算法中,这样级运算总共需要:,M,复数乘法:,复数加法:,直接DFT算法运算量,复数乘法:,复数加法:,N2,N(N1),直接计算DFT与FFT算法的计算量之比为M,N=2M,23,FFT算法与直接DFT算法运算量的比较,24,25,N=1024;M=80;x=1:M,zeros(1,N-M);t=cputime;y1=fft(x,N);time_fft=cputime-t;t1=cputime;y2=dft(x,N);time_dft=cputime-t1;,FFT算法与直接DFT算法运算量的比较,time_dft=6.0290time_fft=0.0100,26,L=1,L=2,L=3,倒序,4.3.3按时间抽取的FFT算法的特点,27,同址运算(原位运算)序列的逆序排列蝶形运算两节点间的距离相同旋转因子节点间的距离(旋转因子)的确定,28,同址运算(原位运算),某一列任何两个节点k和j的节点变量进行蝶形运算后,得到结果为下一列k、j两节点的节点变量,而和其他节点变量无关。这种原位运算结构可以节省存储单元,降低设备成本。,运算前,运算后,例,同址运算(原位运算),29,观察原位运算规律,30,序列的逆序排列,由于x(n)被反复地按奇、偶分组,所以流图输入端的排列不再是顺序的,但仍有规律可循:,因为N=2M,,对于任意n(0nN-1),可以用M个二进制码表示为:,n反复按奇、偶分解时,即按二进制码的“0”“1”分解。,序列的逆序排列,31,倒位序的树状图(N=8),32,码位的倒位序(N=8),I,J,规律:最左端加1,向右进位,33,倒位序的变址处理(N=8),I=J不换IJ不换IX=czt(x,M,W,A)其中,x是待变换的时域信号x(n),其长度为N,M是变换长度,W确定变换的步长,A确定变换的起点。若M=N,A=1,则CZT变成DFT。,76,4.8.1用FFT计算实信号的快速线性卷积,设一离散线性移不变系统的冲激响应为,其输入信号为.其输出为.并且的长度为N点,的长度为M点,计算其线性卷积。,77,用FFT算的步骤:,78,流程图,程序参考第三章幻灯片,79,4.8.2用FFT进行谱分析的Matlab实现,例4.8.2设模拟信号,以t=0.01n(n=0:N-1)进行取样,试用fft函数对其做频谱分析。N分别为:(1)N=10;(2)N=50;(3)N=100;(2)N=1024。,程序清单如下,%计算N=10的FFT并绘出其幅频曲线N=10;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(20*pi*t)+5*cos(40*pi*t);y=fft(x,N);figure(1)subplot(2,2,1)plot(q,abs(y)title(FFTN=10),80,例4.8.2程序清单,%计算N=50的FFT并绘出其幅频曲线N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(20*pi*t)+5*cos(40*pi*t);y=fft(x,N);figure(1)subplot(2,2,2)plot(q,abs(y)title(FFTN=50),81,%计算N=100的FFT并绘出其幅频曲线N=100;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(20*pi*t)+5*cos(40*pi*t);y=fft(x,N);figure(1)subplot(2,2,3)plot(q,abs(y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论