基于MATLAB的卷积演示系统方案_第1页
基于MATLAB的卷积演示系统方案_第2页
基于MATLAB的卷积演示系统方案_第3页
基于MATLAB的卷积演示系统方案_第4页
基于MATLAB的卷积演示系统方案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

/数字信号处理课程设计题目:基于MATLAB的卷积演示系统学院:专业:班级:学号:姓名:指导教师:目录摘要3Abstract4第一章背景51.1MATLAB的优点51.2MATLAB的组成6第二章设计原理及分析82.1卷积的定义82.2线性卷积的运算82.3循环卷积的运算9第三章设计内容与分析103.1设计内容103.2线性卷积的分析103.3循环卷积的分析10第四章实验代码及结果114.1线性卷积的MATLAB设计源程序114.2循环卷积的MATLAB设计源程序124.3分析两类卷积关系144.4动态演示基于重叠相加法的长序列快速卷积144.5用MATLAB设计一个卷积演示界面17第五章收获与体会20致谢21参考文献22摘要本文讲述的是运用MATLAB软件编写线性卷积和循环卷积,运行程序并得到正确结果,附上运行结果图让大家参照对比。MATLAB是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。而线性卷积和循环卷积在工程上的应用亦非常广泛,在MATLAB软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,着重介绍并分析了卷积的运算过程,让大家明白什么是卷积。程序运行之后得到正确的结果,将运行后正确的波形图放在本次论文中让大家直观的做比较。关键词:MATLAB、线性卷积、循环卷积、波形图AbstractThisisaboutusingMATLABsoftwarelinearconvolutionandcyclicconvolution,operationprocedureandgettherightresult,enclosedoperationresultdiagramleteverybodyreferenceMATLABisatypeoftechnologyinapplicationsofmathematics,especiallyinnumericalcalculationoftheleadingsoftware,whichcanbematrixcalculation,anddatamappingfunction,therealizationofalgorithms,creationofuserinterface,connectedtootherprocedures,suchasprogramminglanguages,themainapplicationinengineeringcomputing,controldesign,signalprocessingandcommunications,imageprocessing,signaldetection,financialmodelinginareassuchasdesignandanalysis.AndlinearconvolutionintheapplicationofengineeringhasaverywiderangeofsoftwareinMATLAB,therealizationofanytwosequencesoflinearconvolutionsupportforprojectsisveryimportant.Convolutionrelationshipbetweenthemostimportantcase,thatislinearinthesignalanddigitalsignalprocessingsystemortheconvolutiontheorem.Useofthetheoremcanbetime-domainorspacedomaintotheconvolutionoperationinfrequencydomainequivalentofthemultiplicationoperation,thustheuseofFFTandotherfastalgorithms,thecalculationofeffective,cost-savingoperation.Fromlinearconvolutionandcirculationofthedefinition,analyzesitsoperationprincipleandrelevantformula,procedures,andemphaticallyintroducesandanalysestheconvolutionoperationprocess,leteveryoneknowwhatconvolution.Aftertheprogramisrunningproperlyafteroperation,theresultswillbeputontherightofthewaveformDesmondtutupaperleteverybodyintuitivetocompare.Keywords:MATLAB;Linearconvolution;Circularconvolution;SequenceWave第一章背景1.1MATLAB的优点MATLAB编程语言又称为M语言,是一种交互式的高级编程语言,一种高阶的矩阵/数组语言。它具有以下的特点和优势:<1>语法简单和编程效率高<2>便于用户使用和扩充<3>方便高校的矩阵和数组运算<4>方便的图形和图像操作功能<5>功能强大的工具箱1.1.1语法简单编程效率高MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。1.1.2便于用户使用和补充新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序作为强大的科学计算软件,MATLAB提供了图形界面的设计与开发功能,MATLAB中的基本图形用户界面对象分为三类:用户界面控制对象、下拉式菜单对象和内容式菜单对象。1.1.3方便高效的矩阵和数组运算MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。在高校中,MATLAB以成为数学,信息,控制等诸多学科有关课程的有效教学工具1.1.4方便图形和图像操作功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。它对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。1.1.5功能强大的工具箱MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。1.2MATLAB的组成MATLAB很重要的特点,是附加了一个解决专门问题的应用程序大家族,叫工具箱。它对于MATLAB用户是非常重要的,能让用户学习和应用专门的技术。工具箱是MATLAB函数的全面集合,扩展了MATLAB解决特殊类型问题的环境。工具箱可以应用的领域包括信号处理、控制系统、神经网络、磨具逻辑、子波、模拟等方面。MATLAB这个名字,代表MATRIXLABOROATOR.MATLAB系统由5个主要部分组成:1.2.1开发环境这是一组工具程序,帮助用户使用MATLAB功能和文件。许多工具是图形用户界面,包括MATLAB桌面和命令窗口,命令的历史窗口,编辑器和差错程序,观看帮助信息的浏览器,工作区,文件和收索路径。1.2.2MATLAB的数学函数库这是一个计算算法的巨大集合,范围从初等函数,入求和、正弦、余弦和复数运算,到更高级别的函数,像矩阵求逆、矩阵特征值、贝赛尔函数和快速傅里叶变换。1.2.3MATLAB语言一个高级的矩阵和数组运算,具有控制流语句、函数、数据结构、输入和输出、面向对象的程序特点。用这种语言能够快速建立运行快且短小的程序,也能建立大的和复杂的应用程序。1.2.4图形MATLAB有广泛的程序,用于把向量和矩阵显示为图形,以及注解和打印这些图像。它包括高级功能,用于二维和三维数据的形象化、图像处理、动画和演示图形;包括低级功能,让用户完全定制图形外观,以及为用户的应用程序建立完全的图形用户界面。1.2.5MATLAB应用程序接口〔API这是一个程序库,允许用户写C和FORTRAN程序与MATLAB交互。其中包含的程序,用于从MATLAB调用例行程序,调用MATLAB作为计算引擎,以及读取MAT文件。第二章设计原理及分析2.1卷积的定义任意信号f<t>都可以根据不同需要进行不同的分解。如信号f<t>可以分解为直流分量和交流分量,也可以分解为奇分量和偶分量,或分解为实部分量和虚部分量。如果信号费解为冲击信号,那么信号分解为一系列不同强度,不同时延的冲击信号的叠加,这个过程称为卷积积分。一般而言,如果有两个函数和,则它们的积分称为与的卷积积分,简称卷积,表达式为:,即:2.2线性卷积的运算卷积运算是线性时不变系统分析的重要工具,很多滤波器的设计中都要用到卷积运算。给出线性卷积运算的定义,设有离散信号x<n>和y<n>,其线性卷积为:线性卷积有四步运算:①卷积运算时,y<n>要先反折得到y<-n>;②m>0表示y<-n>序列右移,m<0表示左移,不同的m表示不同的∁xy<m>值。线性卷积运算简洁表示为:式中"∗"表示线性卷积运算符。由线性卷积的定义,等式右边是乘积求和形式,,因而考虑能否用矩阵相乘的形式来表示线性卷积。假设序列x<n>长度为4点,y<n>长度为3点,x<n>除区间之外皆为零,y<n>除区间之外皆为零,用矩阵的形式来表达线性卷积Z:x<n>,y<n>序列长度不同,则将短序列补0使两者相同。2.3循环卷积的运算有限长序列的循环移位是指也就是先让序列y<n>以N为周期进行周期延拓,再进行反折,然后朝右移位,只朝一个方向移位的原因是:对周期序列向右移动一个位置,也就相当于向左移动了N-1个位置,最后取〔0,N-1的N个值就得到了循环移位后的N个序列值。设有序列x<n>和y<n>,其N点循环卷积为:由于循环移位的关系最后得到的循环卷积的长度就是N点,m取[0,1,2,…,N-1]。循环卷积的简洁表示为:式中⊗表示循环卷积运算符。例如N=4的循环卷积如下:其中,N≥length<y<n>>。值得说明的是,当N≥length<y<n>>+length<x<n>>-1时,循环卷积的值等于线性卷积。第三章设计内容与分析3.1设计内容自行设计两个有限长序列,要求:序列的长度和内容由运行时输入;分别动态演示它们进行线性卷积和循环卷积的过程,要求体现翻转、移位、相乘、求和等过程;根据卷积结果,分析两类卷积的关系;动态演示基于重叠相加法的长序列快速卷积,长短序列内容自定;用MATLAB设计一个卷积演示界面。3.2线性卷积的分析两个序列的线性卷积可以分为下列4个步骤:翻转:先将x<n>和h<n>的变量n换成m,变成x<n>和h<m>,再将h<m>以y轴为对称轴翻转成h<-m>。移位:将h<-m>移位n,得h<n-m>。当n为正数时,右移n位;当n为负数时,左移n位。相乘:将h<n-m>和x<m>的对应点值相乘。求和:将以上所有对应点的乘积累加起来,即得y<n>。3.3循环卷积的分析两个序列的循环卷积可以分三个步骤完成:初始化:确定循环点数N,测量输入2个序列的长度,长度小于N的在后面补0。循环右移函数:将序列x<n>循环右移,一共移N次〔N为循环卷积的循环次数,最后将每次循环成的新序列组成一个矩阵V。相乘:将x<n>移位后组成的矩阵V与第二个序列h<n>对应相乘,即得循环卷积结果。第四章实验代码及结果4.1线性卷积的MATLAB设计源程序1.线环卷积源程序:functiony=conv<x1,x2>;%定义一个函数x1=input<'x1='>;%输入序列x1x2=input<'x2='>;%输入序列x2N1=length<x1>;%定义x1的长度M=length<x2>;%定义x2的长度L=N1+M-1;%序列的长度for<n=1:L>%n取1、2、……L,每个值都执行for循环中的代码一次y<n>=0;for<m=1:M>%m取1、2、……M,每个值都执行for循环中的代码一次k=n-m+1;if<k>=1&k<=N1>y<n>=y<n>+x2<m>*x1<k>;%定义序列y〔nendendendy1=conv<x1,x2>;%x1和x2进行卷积nx1=0:N1-1;%定义nx1取值nx2=0:M-1;%定义nx2取值ny=0:L-1;%定义ny的取值subplot<2,3,1>;%画出卷积结果图stem<nx1,x1,'.k'>;xlabel<'n'>;ylabel<'x1<n>'>;gridon;title<'序列x1'>%命名x轴,y轴subplot<2,3,2>;stem<nx2,x2,'.k'>;xlabel<'n'>;ylabel<'x2<n>'>;gridon;title<'序列x2'>subplot<2,3,3>;%画出运行结果图形stem<ny,y,'.k'>;xlabel<'n'>;ylabel<'y<n>'>;gridon;title<'线性卷积'>subplot<2,3,4>;stem<y1'>;xlabel<'n'>;ylabel<'y1'>;gridon;title<'conv直接卷积'>%对图形进行命名运行程序,输入序列x1和x2X1=[-123-5]X2=[67-10412]线性卷积结果为:运行结果如下图所示:图1现行卷积运行结果4.2循环卷积的MATLAB设计源程序1.循环卷积源程序:x1=input<'x1='>;%输入序列x1x2=input<'x2='>;%输入序列x2N=input<'N='>;%输入点数Nxn1=length<x1>;%定义x1的长度xxn1=0:xn1-1;%定义xxn1取值subplot<3,1,1>;%画出运行结果图形stem<xxn1,x1,'.'>;title<'x2'>;xn2=length<x2>;%定义x2的长度xxn2=0:xn2-1;%定义xxn2取值subplot<3,1,2>;%画出循环卷积图stem<xxn2,x2,'.'>;title<'x2'>;%命名为x2if<length<x1>>N>;x1=[x1,zeros<1,N-length<x1>>];%把序列x1按点数扩展,不足补零x2=[x2,zeros<1,N-length<x2>>];%把序列x1按点数扩展,不足补零m=0:N-1;x=zeros<N,N>;%N行N列矩阵forn=0:N-1%n取1、2、……N-1,每个值都执行for循环中的代码一次x<:,n+1>=x2<mod<<n-m>,N>+1>;end;yn=x1*x;subplot<3,1,3>;%画出运行结果图形stem<m,yn,'r','.'>;title<'序列x1和序列x2的循环卷积结果'>;%图形命名运行程序,输入序列x1,x2x1=[-123-5]x2=[67-10412]N=10循环卷积结果如图2:图2:N=10时循环卷积运行结果图当输入序列x1=[-123-5],x2=[67-10412],N=8时。结果如图3图3:N=8时循环卷积运行结果图4.3分析两类卷积关系循环卷积是线性卷积进行循环移位后的结果,当循环卷积的点数N>=线性卷积两个信号长度的和减1,则循环卷积与线性卷积的结果是一样的。假设lfm信号长度是N,lfm_back长度是N,循环卷积的长度是L,则L应该>=2*N-1.4.4动态演示基于重叠相加法的长序列快速卷积1.重叠相加法快速卷积源程序如下:N=8;%分段的长度,也就是做fft的长度h=[1,3,2,1];%系统冲击响应h<n>fori=0:9%定义x<n>x<i+1>=5-i;endfori=10:18x<i+1>=i-15;endLenx=length<x>;M=length<h>;M1=M-1;%重叠部分的长度L=N-M1;%不重叠部分的长度h=fft<h,N>;K=ceil<Lenx/L>;%分的段数fori=Lenx:K*L-1%将x<n>补成长度为K*L的序列x<i+1>=0;endY=zeros<K,N>;%保存结果矩阵初始化YY=zeros<1,<K-1>*L+N>;%最终结果矩阵初始化fork=0:K-1xk=[x<k*L+1:k*L+L>,zeros<1,M1>];Y<k+1,:>=<ifft<fft<xk>.*h>>;YY<k*L+1:k*L+N>=YY<k*L+1:k*L+N>+Y<k+1,:>end运行后结果如下:4.5用MATLAB设计一个卷积演示界面〔1启动MATLABR2010a在正确完成MATLAB的安装并启动计算机之后,选择"开始"|"所有程序"|MATLAB|R2010a|MATLABR2010a命令,或者直接双击桌面上的MATLAB的快捷方式图标,启动MATLABR2010a。〔2MATLABR2010a的主界面MATLAB的默认窗口如图4所示,其中包括主菜单栏、工具栏、命令窗口、历史命令窗口、工作区浏览器和当前路径窗口等。图4:MATLAB默认窗口〔3点击工具栏的按钮,将弹出以下的菜单,如图5。图5:MATLAB窗口在空白处写下所要实现的卷积源程序代码,如图6。图6:程序输入窗口〔4源程序代码写好后,此时按下F5按钮,将弹出以下的菜单,如图7。图7:保存程序窗口点击保存按钮,将弹出以下界面,如图8。图8:运行程序窗口〔5输入X1=[-123-5],X2=[67-10412]后,按下Enter键:出现以下结果:同时弹出以下的运行界面,如图9图9:程序运行结果图第五章收获与体会总结本次数字信号处理课程设计,我受益匪浅。首先就是方案的确定。由于这个学期我学习了数字信号处理这门课程,课程中我了解到要

温馨提示

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

评论

0/150

提交评论