ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:120.59KB ,
资源ID:4361842      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4361842.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验二 DFTFFT的应用利用FFT实现快速卷积.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验二 DFTFFT的应用利用FFT实现快速卷积.docx

1、实验二 DFTFFT的应用利用FFT实现快速卷积实验二 DFT/FFT的应用-利用FFT实现快速卷积实验目的1深刻理解DFT/FFT的概念和性质,进一步掌握圆周卷积和线性卷积两者之间的关系。2掌握DFT/FFT的应用。理解FFT在实现数字滤波(或快速卷积)中的重要作用,更好地利用FFT进行数字信号处理。实验内容及要求1给定两个序列,。首先直接在时域计算两者的线性卷积;然后用FFT快速计算二者的线性卷积,验证结果。(1)线性卷积程序代码:figure(1);N1=4; N2=4; xn=2,1,1,2; hn=1,-1,-1,1; N=N1+N2-1;%卷积后的序列长度 yn=conv(xn,h

2、n);%线性卷积 x=0:N-1; stem(x,yn);title(线性卷积);运行结果: (2)FFT卷积快速卷积程序代码:figure(1);n=0:1:3;m=0:1:3;N1=length(n);%xn的序列长度N2=length(m);%hn的序列长度xn=2,1,1,2;hn=1,-1,-1,1;N=N1+N2-1;%卷积后的序列长度XK=fft(xn,N);%xn的离散傅里叶变换HK=fft(hn,N);%hn的离散傅里叶变换YK=XK.*HK;yn=ifft(YK,N);%逆变换if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列

3、 yn=real(yn);endx=0:N-1;stem(x,yn);title(FFT卷积);运行结果:结果分析:对比(1)和(2)直接线性卷积和FFT快速卷积的结果可以验证,用FFT线性卷积的结果是与直接卷积的结果相同的,FFT可以实现快速卷积,提高运算速度。2.数字滤波器的冲激响应为可自定,本实验取,输入序列x(n)可选下列几种情况:,可取16 ,(3)实验前,预先编制一个应用FFT实现数字滤波器的通用程序。通用程序:function yn=xian(xn,n,N1)N1=16;N2=17;N=N1+N2-1;n=0:1:15;m=0:1:16;hn=(-0.5).m;XK=fft(xn

4、,N);HK=fft(hn,N);YK=XK.*HK;yn=ifft(YK,N);if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列 yn=real(yn);endx=0:N-1;stem(x,yn);end(4) 上机独立调试,并打印或记录试验结果。调用程序,在命令行输入: yn=xian(ones(1,N1),n,16)运行结果:调用程序,在命令行输入:yn=xian(cos(2*pi*n/N1),n,16)运行结果:调用程序,在命令行输入:yn=xian(1/3).n,n,16)运行结果:(5)将实验结果与预先笔算的结果比较,验证其正确性。

5、将实验结果与预先笔算的结果对比结果是相同的,验证了程序的正确性。3设,a计算线性卷积程序代码: figure(1);N1=4;N2=5; xn=1,2,2,1; hn=1,2,3,4,5; N=N1+N2-1;%卷积后的序列长度 yn=conv(xn,hn);%线性卷积 x=0:N-1; subplot(211);stem(x,yn);title(线性卷积);n=0:1:3;m=0:1:4;N1=length(n);N2=length(m);xn=1,2,2,1,;hn=1,2,3,4,5;N=N1+N2-1;XK=fft(xn,N);HK=fft(hn,N);YK=XK.*HK;yn=iff

6、t(YK,N);if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列 yn=real(yn);endx=0:N-1;subplot(212);stem(x,yn);title(FFT卷积);运行结果:b分别用FFT计算它们的5点、6点、8点和10点圆周卷积。(1)5点圆周卷积代码:n=0:1:4;m=0:1:3;N=length(n);M=length(m);x=1,2,2,1;xn=x(1:M),zeros(1,N-M);%补0到序列长度为5hn=1,2,3,4,5;XK=fft(xn,N);HK=fft(hn,N);YK=XK.*HK;yn=i

7、fft(YK,N);if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列 yn=real(yn);endx=0:N-1;stem(x,yn);title(5点圆周卷积);运行结果:(2)6点圆周卷积代码:n=0:1:5;m=0:1:3;z=0:1:4;Z=length(z);N=length(n);M=length(m);x=1,2,2,1;xn=x(1:M),zeros(1,N-M);%补0到序列长度为6h=1,2,3,4,5;hn=h(1:Z),zeros(1,N-Z);%补0到序列长度为6XK=fft(xn,N);HK=fft(hn,N);Y

8、K=XK.*HK;yn=ifft(YK,N);if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列 yn=real(yn);endx=0:N-1;stem(x,yn);title(6点圆周卷积);运行结果:(3)8点圆周卷积代码:n=0:1:7;m=0:1:3;z=0:1:4;Z=length(z);N=length(n);M=length(m);x=1,2,2,1;xn=x(1:M),zeros(1,N-M);%补0到序列长度为8h=1,2,3,4,5;hn=h(1:Z),zeros(1,N-Z);%补0到序列长度为8XK=fft(xn,N);H

9、K=fft(hn,N);YK=XK.*HK;yn=ifft(YK,N);if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列 yn=real(yn);endx=0:N-1;stem(x,yn,.);title(8点圆周卷积);运行结果:(4)10点圆周卷积代码:n=0:1:9;m=0:1:3;z=0:1:4;Z=length(z);N=length(n);M=length(m);x=1,2,2,1;xn=x(1:M),zeros(1,N-M);%补0到序列长度为10h=1,2,3,4,5;hn=h(1:Z),zeros(1,N-Z);%补0到序列长

10、度为10XK=fft(xn,N);HK=fft(hn,N);YK=XK.*HK;yn=ifft(YK,N);if all(imag(xn)=0)&(all(imag(hn)=0)%实序列的循环卷积仍为实序列 yn=real(yn);endx=0:N-1;stem(x,yn,.);title(10点圆周卷积);分析实验结果,思考以下问题:什么条件下圆周卷积与线性卷积是相同的?对比试验结果可以知道,当圆周卷积的序列长度L满足:LN+M-1(M,N分别为两个序列的长度)时,圆周卷积的结果和线性卷积是相同的。如果不满足条件结果会怎样? 如果不满足条件的话,x(n)的周期延拓就必然有一部分非零序列值要交

11、叠起来,发生混淆失真。圆周卷积的结果就与线性卷积不同了。4编写一个MATLAB函数,用一个N点离散傅里叶变换同时计算两个N点实序列的离散傅里叶变换,并将该函数用于求1中x(n)和h(n)的离散傅里叶变换,将结果与直接使用两个N点离散傅里叶变换计算出来的结果进行比较。(1)MATLAB函数:function XK,HK=juan(xn,hn,N)k=0:N-1; yn=xn+1i*hn;%一个作为实部,一个做虚部YK=fft(yn,N);%求离散傅里叶变换YK2=conj(YK);%取共轭YK0=fliplr(YK2(2:N); %反序YK1=YK2(1) YK0;XK=(YK+YK1)/2;%

12、求XKHK=-1i*(YK-YK1)/2;%求HKsubplot(211);stem(k,XK);title(xnFFT);subplot(212);stem(k,HK);title(hnFFT);end实验过程:调用函数,在命令行输入:XK,HK=juan(2,1,1,2,1,-1,-1,1,4)运行结果:(2)直接求两个N点的离散傅里叶变换程序代码:N=4;k=0:N-1;xn=2,1,1,2;hn=1,-1,-1,1;XK1=fft(xn,N);%求xn的离散傅里叶变换HK1=fft(hn,N);%求hn的离散傅里叶变换subplot(211);stem(k,XK1);title(xn1FFT);subplot(212);stem(k,HK1);title(hn1FFT);运行结果:结果分析:对比用MATLAB函数和直接求两个N点的DFT的结果可以知道,两种方法的结果是相同的,因此可以用一个N点的离散傅里叶变换同时计算两个N点实序列的离散傅里叶变换。遇到的问题及解决办法:在编写MATLAB函数时,虚数的表示应写成“1i”而不是“j”,序列的反序要用到fliplr函数,conj取共轭。要求:列出实验程序清单,包括必要步骤的程序说明。记录调试运行情况及所遇问题的解决方法。分析实验结果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1