基于重叠保留法的圆周卷积.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于重叠保留法的圆周卷积

1.理论知识 1.1圆周卷积的定义 设和为长度为N的有限长序列,且,,如果,则 (1) 证明:相当于将作周期卷积和后,再取主值序列。 将周期延拓:则有: 在主值区间 ,所以: 同样可以证明: 定义式(1)为序列与的圆周卷积,习惯表示为 从以上的证明过程也可以得出圆周卷积与周期卷积之间的关系,即有限长序列圆周卷积结果的周期延拓等于它们周期延拓后的周期卷积。也就是说,周期卷积的主值序列是各周期序列主值序列的圆周卷积。 1.2圆周卷积的计算 圆周卷积的具体步骤为: 第一步:在哑元坐标上做与; 第二步:把沿着纵坐标翻转,得到; 第三步:对做圆周移位,得; 第四步:与对应的相同m的值进行相乘,并把结果进行相加,得到的对应于自变量n的一个; 第五步:换另一个n,重复第三、四步,直到n取遍[0,N-1]中的所有值,得到完整的。 1.3重叠保留法 为了克服重叠相加法中分段卷积后,仍然需要相加的缺点,人们提出了重叠保留法。与重叠相加法不同的是,对无限长序列进行分段时,前一分段的后个抽样值与后一份段的的前个抽样值相同,且分段的长度选圆周卷积的长度,这样形成的分段序列为当时,,其他时。然后计算与各分段之间的卷积,显然,的前个值发生了混叠,不等于与的卷积。把的前个值舍去,保留没有发生混叠的后个值,形成序列,,,其他。最后输出序列 2.程序设计 2.1程序流程 要实现基于重叠保留法的圆周卷积,假设有两个长度分别为N,M()的序列,,要求做和的圆周卷积。首先要对长序列序列进行分段,分段的长度选圆周卷积的长度,形成的分段序列: 然后将逐一和各分段进行圆周卷积,得到 最后输出序列 这样即完成了基于重叠保留法的圆周卷积的实现。 2.2程序流程图 2.3具体程序设计 首先编写基于重叠保留法的圆周卷积的主函数。这个主函数的功能应当是计算出两个序列的长度N、M,将长序列进行分段,然后再将短序列和长序列的各个分段分别进行圆周卷积,将分段卷积的的结果序列的前M-1个值舍去,将各个结果合并到一个序列中去,输出这个新序列,程序功能基本完成。主函数的编写过程如下 定义主函数:function yn = dupconv( xn,hn ) 计算两个序列的长度:M=length(hn); xn=[xn zeros(1,M-1)]; N=length(xn); 将长序列按照重叠保留法进行分段: xn1=[zeros(1,M-1),xn(1:floor(N/4))]; xn2=xn((floor(N/4)-M+2):floor(N/2)); xn3=xn((floor(N/2)-M+2):floor(N*3/4)); xn4=xn((floor(N*3/4)-M+2):N); 将短序列和长序列的各分段进行圆周卷积,这里是通过调用圆周卷积函数实现的,圆周卷积函数将在后面定义出。代码如下: n1=length(xn1); n2=length(xn2); n3=length(xn3); n4=length(xn4); yn1=timecirconv(xn1,hn,n1); yn2=timecirconv(xn2,hn,n2); yn3=timecirconv(xn3,hn,n3); yn4=timecirconv(xn4,hn,n4); 将分段圆周卷积的结果序列舍去前M-1个值, yn1=yn1(M:n1); yn2=yn2(M:n2); yn3=yn3(M:n3); yn4=yn4(M:n4); 将各个分段序列按顺序合起来,yn=[yn1 yn2 yn3 yn4]; 函数结束,end 由于圆周卷积是通过调用圆周卷积函数来实现的,所以现在要编写一个能实现圆周卷积功能的函数。将函数名命名为timecirconv,代码如下: 定义圆周卷积函数:function yn = timecirconv( xn,hn,N ) 计算两序列的长度,并和N进行比较,如果N小于两个序列的长,则输出错误: len1=length(xn) len2=length(hn); if len1N | len2N error(N must biger than length of xn and hn) end 将两个序列延长成长度为N的序列,不足的补零: xn=[xn zeros(1,N-len1)]; hn=[

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档