资源描述:
《重叠相加法计算圆周卷积》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、武汉理工大学《数字信号处理》课程设计说明书1理论分析1.1圆周卷积的定义对两个N点序列和,除了可以做线性卷积外,还有一种很重要的卷积运算,还有一种很重要的卷积运算,就是圆周卷积。若、的离散付里叶变换分别为、,且有=则=IDFT[]=上式即为序列与的圆周卷积,习惯表示为=⊙圆周卷积与周期卷积之间的关系,就是有限长序列圆周卷积结果的周期延拓,等于它们周期延拓后的周期卷积。换句话说,周期卷积的主值序列,是各周期序列主值序列的圆周卷积。周期卷积得到是周期序列,圆周卷积得到的是有限长序列,而且长度等于参加卷积的序列的长度。1.2圆周卷积的计算若、分别是长度
2、为N、M的序列则与线性卷积至多M+N-1个非零值,如果LM+N-1时,周期延拓才不会发生混叠。之所以讨论用圆周卷积来计算线性卷积的条件,是因为圆周卷积可在频域下利用DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷积,大大提高运算效率。10武汉理工大学《数字信号处理》课程设计说明书圆周卷积与周期卷积的卷积过程一样,只是结果只取主值序列,其具体步骤结构框图大致如下所示:补零按要求使两序列补零后均为N点周期延拓将一个序列按M点延拓为周期序列翻褶将延拓后的
3、周期序列翻褶取主值序列对翻褶后的周期序列取主值圆周移位对此主值序列做圆周移位(n)相乘每次移位后的序列与另一序列相乘相加将诸m点(m=0,1…m-1)的乘积值相加,即为移位n点后的y(n)值(n=0,1…n-1)图1-1圆周卷积计算结构框图1.3重叠相加法10武汉理工大学《数字信号处理》课程设计说明书在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要打的存储量,运算时间也会变长。所以常用到的解决方法有两种,其中一种就是重叠相加法。
4、设h(n)长度为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)的重叠部分相加,最后得到结果为10武汉理工大学《数字信号处理》课程设计说明书2圆周卷积程序设计2.1程序设计基本构思由时域与频域的关系可知,两序列和在时域下进行线性卷积的结果等于这两个序列在频域下相乘
5、后进行反变换回时域的结果。圆周卷积在一定条件下(L>M+N-1)与线性卷积得到的结果相同,而圆周卷积可在频域下利用DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷积,大大提高运算效率。而在利用FFT来计算圆周卷积的过程中当两序列的长度相差较大时采用重叠相加法来进行计算可有效提高计算的效率,减小存储空间的消耗。2.2程序设计步骤卷积函数程序设计:(1)x1(n)进行N点快速傅里叶变换得X1(k)(2)x2(n)进行N点快速傅里叶变换得X2(k)(3)进行频域相乘Y(k)=X1(k)*X2(k)(4)对Y(k)进行
6、反变换得到时域卷积y(n)对x1(n)进行FFT运算对x(2)进行FFT运算频域相乘Yk=X1k*X2k对Yk进行反变换得到时域结果y(n)开始结束图2-1卷积函数程序设计框图10武汉理工大学《数字信号处理》课程设计说明书重叠函数程序设计:(1)首先取圆周卷积的周期L(即进行L点的快速傅里叶变换)(2)计算每一分段的大小N(3)填充序列使得循环中对序列的索引不会超出范围(4)计算分段数K(5)对序列进行分段调用juanji()函数计算圆周卷积(6)各段重叠相加(7)取出实际的输出序列取圆周卷积的周期L计算每一分段的大小N将序列按要求填充计算分段数
7、K调用函数juanji()将各段处理的结果重叠相加输出最终结果开始结束图2-2重叠函数程序设计框图10武汉理工大学《数字信号处理》课程设计说明书3程序代码3.1主程序代码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,y)%作出输出序列y图形3.2重叠函数程序
8、代码function[y]=chongdie(x,h,L)Lenx=length(x);%取x(n)的长度M=length(h);%取h