欢迎来到天天文库
浏览记录
ID:49226211
大小:935.28 KB
页数:30页
时间:2020-03-01
《仲易+数字信号处理实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、北京理工大学2011-2012学年第一学期数字信号处理实验报告数字信号处理实验报告姓名:仲易班级:05110901学号:2009108730北京理工大学2011-2012学年第一学期数字信号处理实验报告实验1基2-FFT算法实现一、实验目的1.掌握基2-FFT的原理及具体实现方法。2.编程实现基2-FFT算法。3.深刻理解FFT算法的特点。二、实验设备与环境计算机,matlab软件环境。三、实验基础理论FFT是DFT的一种快速算法,能使DFT的计算大大简化,运算时间缩短。FFT利用了WNnk的三个固有特性。即对称性,周期性和可约性,将长序列的DFT分解为
2、短序列的DFT,合并了DFT运算中的某些项,从而减少了DFT的运算量。FFT算法基本上可分为两大类,即按时间抽取法和按频率抽取法。在实现FFT算法时,要重点考虑两个问题,注意数据的读取和存储:(1)输入输出的排序;(2)蝶形运算的实现。按时间抽取算法中输入反序输出顺序,按频率抽取算法中输入顺序输出反序;运算过程中的每一级都有N/2个蝶形运算构成,每一个蝶形运算单元中,两个节点变量运算后得到的结果为下一列相同位置的节点变量,而和其他节点变量无关,可以采用原位运算,节省存储单元。另外,蝶形运算中的复系数WNnk可以存储为能及时查阅的系数表,这样可以借阅运算量
3、,但是需要N/2哥复数存储器。MATLAB中提供了用于计算FFT的函数fft,可将实验中所得到的结果与利用MATLAB中fft函数计算的结果相比较,以此验证结果的正确性。四.实验内容及实验过程1.编程实现序列长度为N=8的按时间抽取的基2-FFT算法。给定一个8点序列,采用编写的程序计算其DFT,并与MATLAB中fft函数计算的结果相比较,以验证结果的正确性。代码如下:x=[12345678];m=3;%X序列长度为2的3次幂N=8;nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;%求倒序列y=x(nxd);form
4、m=1:m%对x做m次基2分解Nz=2^mm;u=1;WN=exp(-i*2*pi/Nz);forj=1:Nz/2fork=j:Nz:Nkp=k+Nz/2;t=y(kp)*u;%蝶形运算乘项y(kp)=y(k)-t;%加项y(k)=y(k)+t;endu=u*WN;endendy30北京理工大学2011-2012学年第一学期数字信号处理实验报告y1=fft(x)%对比matlab的ffty=Columns1through336.0000-4.0000+9.6569i-4.0000+4.0000iColumns4through6-4.0000+1.6569
5、i-4.0000-4.0000-1.6569iColumns7through8-4.0000-4.0000i-4.0000-9.6569iy1=Columns1through336.0000-4.0000+9.6569i-4.0000+4.0000iColumns4through6-4.0000+1.6569i-4.0000-4.0000-1.6569iColumns7through8-4.0000-4.0000i-4.0000-9.6569i2、编程实现序列长度为N=8的按频率抽取的基2-FFT算法。给定一个8点序列,采用编写的程序计算其DFT,并与M
6、ATLAB中fft函数计算的结果相比较,以验证结果的正确性。代码如下:L=2048;M=256;>>x=ones(1,L);>>n=0:M-1;>>h=cos(0.2*pi*n);>>ticy1=conv(x,h);tocticX=fft(x,L+M-1);30北京理工大学2011-2012学年第一学期数字信号处理实验报告H=fft(h,L+M-1);Y=X.*H;y2=ifft(Y);toc运行结果如下:(分别为线形卷积和快速卷积)Elapsedtimeis0.003352seconds.Elapsedtimeis0.007167seconds.L=4
7、096;M=256;>>x=ones(1,L);>>n=0:M-1;>>h=cos(0.2*pi*n);>>ticy1=conv(x,h);tocticX=fft(x,L+M-1);H=fft(h,L+M-1);Y=X.*H;y2=ifft(Y);toc运行结果如下:(分别为线形卷积和快速卷积)Elapsedtimeis0.003666seconds.Elapsedtimeis0.030134seconds.3.将上述FFT程序推广大序列长度为N=2v的情况,要求利用原位运算。代码如下:L=2048;M=256;>>n=0:M-1;>>h=cos(0.2
8、*pi*n);l=128;x=ones(1,l);q=0;ticH=fft(h,
此文档下载收益归作者所有