重叠相加法计算圆周卷积

上传人:工**** 文档编号:560330441 上传时间:2023-05-16 格式:DOCX 页数:11 大小:154.26KB
返回 下载 相关 举报
重叠相加法计算圆周卷积_第1页
第1页 / 共11页
重叠相加法计算圆周卷积_第2页
第2页 / 共11页
重叠相加法计算圆周卷积_第3页
第3页 / 共11页
重叠相加法计算圆周卷积_第4页
第4页 / 共11页
重叠相加法计算圆周卷积_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《重叠相加法计算圆周卷积》由会员分享,可在线阅读,更多相关《重叠相加法计算圆周卷积(11页珍藏版)》请在金锄头文库上搜索。

1、1 理论分析11 圆周卷积的定义对两个N点序列x (n)和x (n),除了可以做线性卷积外,还有一种很重要的卷积运算, 12还有一种很重要的卷积运算,就是圆周卷积。若x (n)、x (n)的离散付里叶变换分别为X (k)、X G),且有1 2 1 2X (k )= X (k ) X (k )3 1 2则x (n)=IDFT X (k)33=Z_1 x (m )x (n - m ) R (n )2 1 N N上式即为序列x (n)与xn)的圆周卷积,习惯表示为12x (n)= x (n) x (n)3 1 2圆周卷积与周期卷积之间的关系,就是有限长序列圆周卷积结果的周期延拓,等于它 们周期延拓后

2、的周期卷积。换句话说,周期卷积的主值序列,是各周期序列主值序列的圆 周卷积。周期卷积得到是周期序列,圆周卷积得到的是有限长序列,而且长度等于参加卷 积的序列的长度。12 圆周卷积的计算若x (n)、x (n)分别是长度为N、M的序列则x (n)与x (n)线性卷积至多M+N-1个 1 2 1 2非零值,如果 LM+N-1 时,周期延拓才不会发生混叠。之所以讨论用圆周卷积来计算线性卷积的条件,是因为圆周卷积可在频域下利用 DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷 积,大大提高运算效率。圆周卷积与周期卷积的卷积过程一样,只是结果只取主值序列,其具体步骤结

3、构框图大致如下所示:图 1-1 圆周卷积计算结构框图13 重叠相加法在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要打的存储量,运算时间也会变长。所以常用到的解决方法有两种,其中一种就是重叠相加法。设h(n)长度为N, x(n)长度为无限长,x(n)取M点,且与N尽量接近。x(n )=为 x (n )kk - sx (n ) = x (n ) R (n 一 kM ) kMx(n)与h (n)的卷积为:(n)* h(n)=h(n)* 为 x (n)k重叠相加法实现步骤如下:(1

4、) 将h(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到H(k)。(2) 分别将xk(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到Xk(k)(3) 计算y (k) = X (k) H (k), 并求长为 L 的反变换,即kky (n) = IFFT Y (k)kk(4) 将yk(n)的重叠部分相加,最后得到结果为y(n) = f y (n)kk 二一g2 圆周卷积程序设计21 程序设计基本构思由时域与频域的关系可知,两序列x (n)和x (n)在时域下进行线性卷积的结果等于这12 两个序列在频域下相乘后进行反变换回时域的结果。圆周卷积在一定条件下(LM+N-1

5、)与线性卷积得到的结果相同,而圆周卷积可在频 域下利用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)首先取圆周卷

6、积的周期L (即进行L点的快速傅里叶变换)( 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) r=1:3;subplot(2,2,2);stem(r,x2)u=1:13;subplot(2,2,3);ste

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

8、积y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L);%各段重叠相加end%取出实际的输出序列y=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); endif length(X2)L%如果x2长度大于L则产生错误error(L must not be less than length of x2); endX1k=fft(x1,L);%对x1进行L点FFT计算X2k=fft(x2

9、,L);%对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 心得体会通过这次课程设计,加强了我们动手、思考和解决问题的能力。数字信

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号