数字信号处理课程设计-基于重叠保留法圆周卷积的实现.docx_第1页
数字信号处理课程设计-基于重叠保留法圆周卷积的实现.docx_第2页
数字信号处理课程设计-基于重叠保留法圆周卷积的实现.docx_第3页
数字信号处理课程设计-基于重叠保留法圆周卷积的实现.docx_第4页
数字信号处理课程设计-基于重叠保留法圆周卷积的实现.docx_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学信号分析与处理课程设计说明书学号:0121309341830课程设计课程名称信号分析与处理课程设计基于重叠保留法圆周卷积的实现学院信息工程学院专业电子信息工程班级电信1301班姓名指导教师20152016学年第1学期课程设计任务书学生姓名:专业班级:电信1301指导教师:工作单位: 信息工程学院 题 目:基于重叠保留法圆周卷积的实现初始条件: 具备数字信号处理的理论知识;具备Matlab编程能力;分析重叠保留法的圆周卷积的原理;提供编程所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、独立编写程序实现基于重叠保留法的圆周卷积2、用Matlab验证程序结果,并分析重叠保留法的圆周卷积的原理3、完成符合学校要求的设计说明书时间安排:一周,其中3天程序设计,2天程序调试指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要1Abstract21.绪论32.理论知识52.1 圆周卷积的定义52.2 圆周卷积的运算52.3 重叠保留法原理63.程序代码实现73.1 程序流程分析73.2 程序代码设计94.用Matlab验证程序结果115.原理分析146.心得体会15参考文献16附录17本科生课程设计成绩评定表19摘要MATLAB(矩阵实验室)是MATrixLABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。本文用MATLAB实现基于重叠保留法的圆周卷积。若x1(n)是很长的序列,利用圆周卷积时,x2(n)必须补很多零点,很不经济。因此必须将x1(n)分成和x2(n)相仿的段,分别求出每段的卷积结果,然后用一定的方式把他们合在一起,从而得到总的输出。为了克服重叠相加法中分段卷积后,仍然需要相加的缺点,人们提出了重叠保留法。关键字:MATLAB 重叠保留法 圆周卷积AbstractMATLAB(MATrixLABoratory)isTheabbreviationofMATrixLABoratory,isabyTheUnitedStatesTheMathWorkscompanyproductionofacommercialmathematicalsoftware.MATLABisakindofforalgorithmdevelopment,datavisualization,dataanalysisandnumericalcalculationofseniortechnicalcomputinglanguageandinteractiveenvironment.Inthispaper,basedonMATLABoverlapreservesthecircularconvolutionmethod.Ifx1(n)isaverylongsequence,usingcircularconvolution,x2(n)mustfillalotofzero,isnottheeconomy.Somustbex1(n)intoandx2(n)segment,theconvolutionresultsofeach,respectively,andtheninacertainwayputthemtogether,andthetotaloutputisobtained. Inordertoovercomeoverlapaddingaftersubsectionconvolutionmethod,stillneedtoaddtheshortcomings,overlapretainingmethodareputforward. Keywords:MATLABoverlapmethod circularconvolution 1.绪论MATLAB(矩阵实验室)是MATrixLABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C+和FORTRAN)编写的程序。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。软件特点:1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。MATLAB 产品族可以用来进行以下各种工作:数值分析数值和符号计算工程与科学绘图控制系统的设计与仿真数字图像处理技术数字信号处理技术通讯系统设计与仿真财务与金融工程管理与调度优化计算(运筹学)MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。软件优势:1.编程环境MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。2.简单易用3.强处理能力MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。4.图形处理MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善。5.程序接口和发布平台MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。2.理论知识2.1 圆周卷积的定义设x1(n)和x2(n)为长度为N的有限长序列,且DFTx1n=X1k (2.1)DFTx2n=X2k (2.2)如果Y(k)=X1(k)X2(k),则 yn=IDFTYK=m=0N-1x2mx1n-mNRNn(2.3)证明:相当于将x1(n),x2(n)作周期卷积和后,再取主值序列。将y(k)周期延拓:Y(k)=X1(k)X2(k),则有:-=-= -yn=IDFTYK=m=0N-1x1(m)x2(n-m)=m=0N-1(x1(m)Nx2(n-m)N(2.4)在主值区间0mN-1,x1(m)N=x1m,所以: y(n)= ynRN(n)= m=0N-1x1mx2n-mNRNn(2.5)同样可以证明:y(n)= m=0N-1x2mx1n-mNRNn(2.6)定义式2.3为序列与x1(n)与x2(n)的圆周卷积,习惯表示为()()y(n)=x1(n)x2(n)=(2.7)从以上的证明过程也可以得出圆周卷积与周期卷积之间的关系,即有限长序列圆周卷积结果的周期延拓等于它们周期延拓后的周期卷积。也就是说,周期卷积的主值序列是各周期序列主值序列的圆周卷积。2.2 圆周卷积的运算圆周卷积的具体步骤为:第一步:在哑元坐标上画出x1(m)与x2(m);第二步:把x2(m)沿着纵坐标翻转,得到x2(-m);第三步:对x2(-m)做圆周移位,得x2(n-m)NRNn;第四步:x1(m)与x2(n-m)NRNn对应的相同m的值进行相乘,并把结果进行相加得到的对应于自变量n的另一个y(n);第五步:换另一个n,重复第三、四步,直到n取遍0,N-1中的所有值,得到完整的y(n)。2.3 重叠保留法原理讨论一个短的有限长序列与一个无限长序列的卷积,例如x1(n)是很长的序列,利用圆周卷积时,x2(n)必须补很多零点,很不经济。因此必须将x1(n)分成和x2(n)相仿的段,分别求出每段的卷积结果,然后用一定的方式把他们合在一起,从而得到总的输出。为了克服重叠相加法中分段卷积后,仍然需要相加的缺点,人们提出了重叠保留法。与重叠相加法不同的是,对无限长序列x1(n)进行分段时,前一分段x1k(n)的后M-1个样值与后一份段的x1(k+1)(n)的前M-1个抽样值相同,且分段的长度选圆周卷积的长度L,这样形成的分段序列x1kn=xn-kN+m-1,0nL-10,其他(2.8)然后计算x2(n)与各分段x1k(n)之间的卷积ykn=x2n*x1k(n),显然,ykn的前M-1个值发生了混叠,不等于x2n与x1k(n)的卷积。把ykn的前M-1个值舍去,保留ykn没有发生混叠的后N个值,形成序列ykn=ykn,M-1nL-1,ykn=0,其他。最后输出序列yn=k=-+ykn-kN+m-1 (2.9)3.程序代码实现3.1 程序流程分析要实现基于重叠保留法的圆周卷积,假设有两个长度分别为N,M(NM)的序列x1(n) ,x2(n),要求做x1(n)和x2(n)的圆周卷积。首先要对长序列序列x1(n)进行分段,分段的长度选圆周卷积的长度L,形成的分段序列:x1kn=xn-kN+m-1,0nL-10,其他(3.1)然后将x2n逐一和各分段x1kn进行圆周卷积,得到ykn=x2nx1kn=m=0L-1x2(m)x1(n-m)LRLn (3.2)最后输出序列yn=k=-+ykn-kN+m-1 (3.3)这样即完成了基于重叠保留法的圆周卷积的实现。其流程图如下:开始分别输入序列x1n,x2n,圆周卷积的长度L计算x1n和x2n的长度N和M将x1n以长度进行分段,得到x1kn将x2n和x1kn进行卷积得到ykn去掉ykn的前M-1个值输出yn=k=-+ykn-kN+m-1结束3.2 程序代码设计首先编写基于重叠保留法的圆周卷积的主函数。这个主函数的功能应当是计算出两个序列xn和hn的长度N、M,将长序列进行分段,然后再将短序列和长序列的各个分段分别进行圆周卷积,将分段卷积的的结果序列的前M-1个值舍去,将各个结果合并到一个序列中去,输出这个新序列,程序功能基本完成。主函数的编写过程如下定义主函数:functionyn = dupconv( xn,hn )计算两个序列的长度:M=length(hn); N=length(xn);将长序列按照重叠保留法进行分段,将其平均分成4段则每段表示为: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,代码如下:定义圆周卷积函数:functionyn = timecirconv( xn,hn,N )计算两序列的长度,并和N进行比较,如果N小于两个序列的长,则输出错误:len1=length(xn);len2=length(hn); if len1N | len2Nerror(N must biger than length of xn and hn) end将两个序列延长成长度为N的序列,不足的补零:xn=xnzeros(1,N-len1); hn=hnzeros(1,N-len2);将hn进行沿纵坐标翻转后进行圆周移位,并将其存入一个N行N列的矩阵x中m=0:N-1; x=zeros(N,N); for n=0:N-1 x(n+1,:)=hn(mod(n-m),N)+1);end将xn和矩阵x相乘,最终的得到圆周卷积的结果:yn=xn*x; 4.用Matlab验证程序结果假设有这样的两个序列,序列1x1n=n(0n15),序列2x2n=n+1,(0n3)要求这两个序列基于重叠保留法的的圆周卷积。分析知序列1长度N=16,序列2长度M=4。将长序列分段:x11=0 0 0 0 1 2 3x12=1 2 3 4 5 6 7x13=5 6 7 8 9 10 11x14=9 10 11 12 13 14 15将x1的各分段和x2=1 2 3 4 0 0 0进行圆周卷积,得到Y11=x11x2=0 4 11 20 14 8 3Y12=x12x2=30 40 50 60 42 31 27Y13=x13x2=70 80 90 100 82 71 67Y14=x14x2=110 120 130 140 122 111 107将每个分段卷积后的序列的前4-1个值舍去,再按顺序将序列合并,得到序列:yn=2014836042312700827167140122111107下面用程序来验证。在MATLAB中输入代码,建立.m文件,输入主函数dupconv,并调用子函数timecirconv计算卷积。图4.1主函数代码图4.2子函数代码在comandwindow中输入xn=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;hn=1,2,3,4;yn = dupconv( xn,hn )图4.3 输入参数得到的结果为:yn=20148360423127100827167140122111107图4.4 输出结果显然,计算结果和程序运行结果相同。仿真正确。5.原理分析对于一个长序列x1n和一个短序列x2n,长度分别为N,M,圆周卷积的长度为L,在长序列的前面加上M-1个零,然后对长序列进行分段,使得每段的长度为L,不足的用零补。且前一分段的后M-1个抽样值和后一分段的前M-1个抽样值相同。这样形成的分段序列为:x1kn=xn-kN+m-1,0nL-10,其他(5.1)分成的段数为:k=N+M-2L+1 (5.2)然后计算x2n与各个分段之间的圆周卷积,ykn=x2nx1kn(5.3)ykn=ykn,M-1nL-10,其他(5.4)显然,ykn的前M-1个值发生了混叠,不等于x2n与x1kn的圆周卷积,把ykn的前M-1个值舍去,保留没发生混叠后的后N个值,形成序列yk(n)=ykn,M-1nL-10,其他(5.5)最后将各段相加就可以得到最终的结果:yn=k=-+ykn-kN+m-1(5.6)6.心得体会在本次课程设计中,让我知道了以前所学信号与系统与数字信号处理的结合,同时我也充分认识到MATLAB的强大作用。MATLAB它是日前工程界流行最广的科学计算语言,在电信工程中的电路、信号与系统、数字信号处理、自动控制等方面有着广泛的应用。除此之外,对程序的编译不是一蹴而就的,而是经过多次的编译与调试。以前用MATLAB就是简单的输入,可以说都不是自己的劳动成果,但这次不一样,课程设计没有别人给你编好,而是自己写,出错率就大大提高了,但这是过程,学习就是在过程中进行的,经过自己几天的脑力劳动,再加上同学们的帮助,不仅对读程序有了很大提高,而且自己的编译水平也上了一个新台阶,更加熟系了MATLAB的应用,也对其中的函数如zeros()、floor()等有了更深的理解,也学会了对子函数的调用。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,这次课程设计终于顺利完成了。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,收获喜悦。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。参考文献1罗建军.MATLAB教程.北京:电子工业出版社20052陈怀深.MATLAB在信息工程中的应用.北京:电子工业出版社 20033丁玉美,高西全编著数字信号处理.西安:西安电子科技大学出版社 20084李正周等编著.MATLAB数字信号处理与应用.北京:清华大学出版社2008.5杨永双等编著.数字信号处理实验指导书.郑州:郑州轻工业学院 2007

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论