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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(重叠相加法计算圆周卷积.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

重叠相加法计算圆周卷积.docx

1、重叠相加法计算圆周卷积1理论分析11 圆周卷积的定义对两个N点序列和,除了可以做线性卷积外,还有一种很重要的卷积运算,还有一种很重要的卷积运算,就是圆周卷积。若、的离散付里叶变换分别为、,且有 =则 =IDFT =上式即为序列与的圆周卷积,习惯表示为 =圆周卷积与周期卷积之间的关系,就是有限长序列圆周卷积结果的周期延拓,等于它们周期延拓后的周期卷积。换句话说,周期卷积的主值序列,是各周期序列主值序列的圆周卷积。周期卷积得到是周期序列,圆周卷积得到的是有限长序列,而且长度等于参加卷积的序列的长度。12 圆周卷积的计算 若、分别是长度为N、M的序列则与线性卷积至多M+N-1个非零值,如果LM+N-

2、1时,周期延拓才不会发生混叠。之所以讨论用圆周卷积来计算线性卷积的条件,是因为圆周卷积可在频域下利用DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷积,大大提高运算效率。圆周卷积与周期卷积的卷积过程一样,只是结果只取主值序列,其具体步骤结构框图大致如下所示:图1-1 圆周卷积计算结构框图13 重叠相加法在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要打的存储量,运算时间也会变长。所以常用到的解决方法有两种,其中一种就是重叠相加法。设 h(n

3、)长度为N,x(n)长度为无限长,x(n)取M点,且与N尽量接近。=x(n)与h (n)的卷积为: * =* =重叠相加法实现步骤如下:(1)将h(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到 H(k)。(2)分别将xk(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到 Xk(k)(3)计算,并求长为L的反变换,即(4)将yk(n)的重叠部分相加,最后得到结果为2 圆周卷积程序设计21 程序设计基本构思由时域与频域的关系可知,两序列和在时域下进行线性卷积的结果等于这两个序列在频域下相乘后进行反变换回时域的结果。圆周卷积在一定条件下(LM+N-1)与线性卷积得到的

4、结果相同,而圆周卷积可在频域下利用DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷积,大大提高运算效率。而在利用FFT来计算圆周卷积的过程中当两序列的长度相差较大时采用重叠相加法来进行计算可有效提高计算的效率,减小存储空间的消耗。22 程序设计步骤卷积函数程序设计:(1)x1(n)进行N点快速傅里叶变换得X1(k) (2)x2(n)进行N点快速傅里叶变换得X2(k) (3)进行频域相乘Y(k)=X1(k)*X2(k) (4)对Y(k)进行反变换得到时域卷积y(n) 图2-1 卷积函数程序设计框图重叠函数程序设计:(1)首先取圆周卷积的周期L(即进行L点的快速

5、傅里叶变换)(2)计算每一分段的大小N(3)填充序列使得循环中对序列的索引不会超出范围(4)计算分段数K(5)对序列进行分段调用juanji()函数计算圆周卷积(6)各段重叠相加(7)取出实际的输出序列 图2-2 重叠函数程序设计框图3 程序代码31 主程序代码x1= 1,2,3,4,5,5,4,3,2,1;x2= 1,0,1;L=8;y=chongdie(x1,x2,L);s=1:10;subplot(2,2,1);stem(s,x1) %作出序列x1图形r=1:3;subplot(2,2,2);stem(r,x2) %作出序列x2图形u=1:13;subplot(2,2,3);stem(u

6、,y) %作出输出序列y图形32 重叠函数程序代码functiony=chongdie(x,h,L)Lenx=length(x); %取x(n)的长度M=length(h); %取h(n)的长度N=L-M+1; %计算分段大小Nx=x,zeros(1,N-1); %填充序列使得循环中对序列的索引不会超出围K=floor(Lenx/N); %确定分段数Ky=zeros(1,Lenx+L-1);for i=0:1:K ix=i*N; x_seg=x(ix+1:ix+N); %将x(n)分段 y_seg=juanji(x_seg,h,L); %调用函数juanji()计算圆周卷积 y(ix+1:ix

7、+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重叠相加endy=y(1:Lenx+M); %取出实际的输出序列33 卷积函数程序代码function y=juanji(x1,x2,L)if length(x1)L %如果x1长度大于L则产生错误 error(L must not be less than length of x1);end if length(x2)L %如果x2长度大于L则产生错误 error(L must not be less than length of x2);end X1k=fft(x1,L); %对x1进行L点FFT计算X2k=fft(x2,L)

8、; %对x2进行L点FFT计算Yk=X1k.*X2k; %频域相乘 y=ifft(Yk); %反变换得卷积结果if (all(imag(x1)=0)&(all(imag(x2)=0) y=real(y);end4 程序运行结果与分析输入序列和周期Lx1= 1,2,3,4,5,5,4,3,2,1;x2= 1,0,1;L=8;运算结果:1 2 4 6 8 9 9 8 6 4 2 1 0图4-1程序运行结果 通过计算,得到线性卷积结果,与程序运行结果相一致,可知程序计算结果是正确的,用重叠相加法实现圆周卷积的程序设计完成。5 心得体会通过这次课程设计,加强了我们动手、思考和解决问题的能力。数字信号处

9、理这门课程是其他很多课程的基础,所以学好学通数字信号处理这门课程对我们来说是非常重要的。而Matlab这款软件对数字信号处理的建模、编程、分析、实现有极大的帮助作用,所以我们应该掌握使用Matlab编程来实现对数字信号的处理。在和同组同学一起讨论研究通基于重叠相加法的圆周卷积原理后,我开始了利用Matlab来实现这个功能。在编写程序的过程中,我查阅了很多有关Matlab的编程知识,通过整合所查阅到的编程知识,结合先前研究的基于重叠相加法的圆周卷积原理,我设计了具有此功能的Matlab函数。通过这次课程设计,让我加深了对书本知识的理解,并应用课本的理论知识,结合相关软件,设计解决问题的算法。从而提高了由知识转换为技能的能力,提高了自己的实践能力。通过与同学的互相沟通,不仅使各自的知识得到了扩充,而且从中得到了很多的启示,这次课程设计让人受益匪浅。参考文献1 周建兴、岂兴明等编.MATLAB从入门到精通.人民邮电出版社.20082 刘泉、阙大顺、郭志强.数字信号处理.电子工业出版社.20093 程卫国.MATLAB53精要编程及高级应用.北京:机械工业出版社.20004 李正周.MATLAB数字信号处理与应用.北京:清华大学出版社.2008年5 罗建军、杨琦.精讲多练MATLAB.西安:西安交通大学出版社.2002

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2