实验3FFT算法应用.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学号 姓名 实验3 FFT算法的应用 一 、实验目的: 加深对离散信号的DFT的理解及其FFT算法的运用。 二 、实验原理: N点序列的DFT和IDFT变换定义式如下: , 利用旋转因子具有周期性,可以得到快速算法(FFT)。 在MATLAB中,可以用函数X=fft(x,N)和x=ifft(X,N)计算N点序列的DFT正、反变换。 三、实验内容 1 对连续的单一频率周期信号 按采样频率 采样,截取长度N分别选N =20和N =16,观察其DFT结果的幅度谱。 解 此时离散序列:即k=8。用MATLAB计算并作图,函数fft用于计算离散傅里叶变换DFT,程序如下: q=8; k1=[0:1:19]; xa1=sin(2*pi*k1/q); subplot(2,2,1) plot(k1,xa1) xlabel(k);ylabel(x1(k)); xm1=fft(xa1);xm1=abs(xm1); subplot(2,2,2) stem(k1,xm1) xlabel(m);ylabel(X1(m)); k2=[0:1:15]; xa2=sin(2*pi*k2/q); subplot(2,2,3) plot(k2,xa2) xlabel(k);ylabel(x2(k)); xm2=fft(xa2);xm2=abs(xm2); subplot(2,2,4) stem(k2,xm2) xlabel(m);ylabel(X2(m)); (d)(c)(b)(a) (d) (c) (b) (a) ?????? ??图2.1 计算结果示于图2.1,(a) 和(b)分别是N=20时的截取信号和DFT结果,由于截取了两个半周期,频谱出现泄漏;(c) 和(d) 分别是N=16时的截取信号和DFT结果,由于截取了两个整周期,得到单一谱线的频谱。上述频谱的误差主要是由于时域中对信号的非整周期截断产生的频谱泄漏。 2. 已知, 利用MATLAB,实现由DFT计算有限序列线性卷积; 直接计算离散线性卷积;(conv) 比较两种方法的误差。 x=[1 2 3 4 5]; h=[10 12 9 7]; L=length(x)+length(h)-1; XE=fft(x,L); HE=fft(h,L); y1=ifft(XE.*HE); k=0:L-1; subplot(3,1,1); stem(k,real(y1));axis([0 8 0 170]); title(有限序列线性卷积结果); xlabel(k);ylabel(y1); y2=conv(x,h); subplot(3,1,2); stem(k,real(y2));axis([0 8 0 170]); title(离散线性卷积结果); xlabel(k);ylabel(y2); error=y1-y2; subplot(3,1,3); stem(k,abs(error)); xlabel(Time index k);ylabel(Amplitude); title(计算误差); (选做)编写matlab函数文件,实现有限长序列的循环移位。 xn=input(请输入有限长序列:); N=input(‘序列长度’); M=input(‘循环移位数:’); n=0:N-1; nm=mod((n-M),N) xm=xn(nm+1); subplot(2,1,1),stem(xn); xlabel(‘n’);ylabel(‘幅值’); title(原始序列); subplot(2,1,2),stem(xm); xlabel(‘n’);ylabel(‘幅值’); title(移位后序列)

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档