基于Matlab的数字信号处理课程设计
基于MATLAB的数字信号处理课程设计一、课程设计目的1熟悉MATLAB运行环境,熟练使用MATLAB语言进行编程,进行数字信号处理。2全面复习数字信号课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。3提高综合运用所学知识独立分析和解决问题的能力;二、MATLAB简介MATLAB是功能强大的科学及计算软件,它不但具有以矩阵计算为基础的强大数学计算和分析功能,而且还具有丰富的可视化图形表现功能和方便的程序设计能力。MATLAB的应用领域极为广泛,除了数学计算和分析外,还被广泛地应用于自动控制、系统仿真、数字信号处理、图形图像分析、数理统计、人工智能、虚拟现实技术、通信工程、金融系统等领域,因此,MATLAB是面向21世纪的计算机程序设计及科学计算语言。三、MATLAB的主要组成部分MATLAB系统包括5个主要部分(1)开发环境MATLAB开发环境由一组工具和组件组成,这些工具是图形化的用户界面,包括MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、文件和搜索路径浏览器。(2)MATLAB数学函数库MATLAB集成了丰富的数学函数库,其强大的计算能力覆盖了从基本函数(如求和、正弦、余弦和复数运算等)到高级函数(如矩阵求逆、矩阵特征值、贝塞尔函数和快速傅立叶变换等)的范围。(3)MATLAB语言MATLAB语言是一种以矩阵运算为基础的高级语言,包括控制流的描述、函数、数据结构、输入输出及面向对象的编程环境,既可以编制快速使用小程序,也可以编制大型复杂的应用程序。(4)图形功能MATLAB提供了功能强大的图形系统,既可以用高级命令完成二维和三维数据的可视化、图像处理、动画和图形表达等功能,也可以通过使用图形句柄完成复杂的图形功能,实现对所有图形对象的操作。(5)应用程序接口(API)MATLAB还提供了应用程序接口库函数,允许用户使用C或FORTRAN语言编写程序与MATLAB连接,功能包括与MATLAB的动态连接、调用MATLAB作为运算引擎、读写MAT文件等。MATLAB的广泛应用促进了其本身功能的迅速发展,以特定领域的应用为主要目的的应用程序工具箱的数量和内容在不断增多。四、利用MATLAB熟悉画图(设计1)1、设计内容能够利用MATLAB熟悉地画图,内容包括X、Y坐标轴上的LABEL,每幅图上的TITLE,绘画多条曲线时的LEGEND,对图形进行适当的标注等。(1)在一副图上画出多幅小图;(2)画出一组二维图形;(3)画出一组三维图形;(4)画出复数的实部与虚部。1实验结果(1)、在一副图上画出多幅小图;4202410500511050051010203040504202405101520254202405005(2)、画出一组二维图形;012345673210123XY多条曲线绘制Y1SINXY2SINXY3SINX(3)、画出一组三维图形;50550521012XZSIN2X/3Y2YZ(4)、画出复数的实部与虚部;0204060813021060240902701203001503301800(5)、完成对一个源程序进行详细注释。(见程序)能够利用MATLAB熟悉地画图,内容包括X、Y坐标轴上的LABEL,每幅图上的TITLE,绘画多条曲线时的LEGEND,对图形进行适当的标注等。(1)在一副图上画出多幅小图;(2)画出一组二维图形;(3)画出一组三维图形;(4)画出复数的实部与虚部。(5)完成对一个源程序进行详细注释。CLEARCLCXLINSPACEPI,PI,200定义X轴坐标Y1SINX函数1Y2COSX函数2Y3EXPX函数3Y4SINXCOSX函数4在一幅图上绘制多幅小图FIGURE1SUBPLOT221,图一PLOTX,Y1绘制Y1GRIDON添加网格AXISMINXMAXXMINY1MAXY1指定显示范围SUBPLOT222,图二HISTY2绘制Y2GRIDON添加网格AXISMINXMAXXMINY2MAXY2指定显示范围SUBPLOT223,图三STEMX,Y3绘制Y3GRIDON添加网格AXISMINXMAXXMINY3MAXY3指定显示范围SUBPLOT224,图四PLOTX,Y4,RP绘制Y4GRIDON添加网格AXISMINXMAXXMINY4MAXY4指定显示范围画出一组二维图形FIGURE2ALINSPACE0,2PI,200K1,2,3YSINAKPLOTA,Y,1,A,Y,2,A,Y,3LEGENDY,NUM2STRK1,SINX,Y,NUM2STRK2,SINX,Y,NUM2STRK3,SINXXLABELXYLABELYTITLE多条曲线绘制GRIDON画出一组三维图形FIGURE3KK30XLINSPACE5,5,KKYLINSPACE5,5,KKFORI1KKFORJ1KKZI,JSINXICOSYJENDENDSURFX,Y,ZXLABELXYLABELYZLABELZTITLEZSIN2X/3Y2复数绘制FIGURE4CLEARKK1110FORI110YISINKKICOSKKI/KKIJENDCOMPASSY五、褶积的相关计算与编程(设计2)1设计内容计算普通褶积与循环褶积,分别使用时间域与频率域两种方法进行正、反演计算,指出循环褶积计算时所存在的边界效应现象;编写一个做相关分析的源程序。2实验成果(1)、构造如下两个向量A1,2,3,4B9,8,7,6计算得到线性褶积9265080654624循环次数时间域频率域循环褶积555505080655550508065633265080654633265080654679265080654624926508065462489265080654624092650806546240从计算结果可以看出,当循环次数小于N1N21时,线性褶积和循环褶积不等,当循环次数大于等于N1N21时,线性褶积和循环褶积相等。(2)、构造两个向量A123B1235计算相关得到频率域14131623时间域(6次)148351323程序1、褶积计算普通褶积与循环褶积,分别使用时间域与频率域两种方法进行正、反演计算,指出循环褶积计算时所存在的边界效应现象;编写一个做相关分析的源程序。验证循环褶积和线性褶积在什么条件下相等CLCCLEARA1,2,3,4A矩阵B9,8,7,6B矩阵KK1LENGTHAKK2LENGTHB循环褶积时间域XX8循环次数手动更改AAZEROSXX,1AA1KK1,1A扩展ABBZEROSXX,1BB1KK2,1B扩展BBB1ZEROSXX,XX循环矩阵FORI1XXBB1IXX,IBB1XXI1BB11I1,IBBXXI2XXENDOK1BB1AA循环褶积结果线性褶积时间域BB2ZEROSKK1KK21,KK1FORI1KK1BB2IIKK21,IB1KK2ENDANAOK2BB2AN线性褶积结果循环褶积频率域AFFFTAABFFFTBBOK3IFFTAFBF2、相关计算普通褶积与循环褶积,分别使用时间域与频率域两种方法进行正、反演计算,指出循环褶积计算时所存在的边界效应现象;编写一个做相关分析的源程序。求两个一维数组的相关系数CLEARCLCA123数组A较短时可以手动输入B1235数组B较短时可以手动输入ACSVREADCSV,0,0数组A较长时可以读取CSV文件BCSVREADCSV,0,0数组A较长时可以读取CSV文件频率域求相关A2ZEROS1,MAXLENGTHA,LENGTHBB2ZEROS1,MAXLENGTHA,LENGTHBA21,1LENGTHAAB21,1LENGTHBBFFTAFFTA2FFTBFFTB2FFTBCONJFFTBRESULTIFFTFFTAFFTB频率域求相关结果时间域求相关LONGLENGTHALENGTHB1AAZEROSLONG,1BBZEROSLONG,1AA1LENGTHA,1ABB1LENGTHB,1BTEMPZEROSLONGFORI1LONGTEMP1LONGI1,IAAILONGTEMPLONGI2LONG,IAA1I1ENDRESULT2TEMPBB时间域求循环相关六、设计一维滤波处理程序(设计3)1实验内容设计一个一维滤波处理程序(1、分别做低通、高通、带通、带阻等理想滤波器进行处理;2、窗函数)2实验结果(1)、一维信号理想滤波器(2)、窗函数程序3、一维理想滤波器一维信号滤波器设计FUNCTIONVARARGOUTNUM4_1LVBOVARARGINBEGININITIALIZATIONCODEDONOTEDITGUI_SINGLETON1GUI_STATESTRUCTGUI_NAME,MFILENAME,GUI_SINGLETON,GUI_SINGLETON,GUI_OPENINGFCN,NUM4_1LVBO_OPENINGFCN,GUI_OUTPUTFCN,NUM4_1LVBO_OUTPUTFCN,GUI_LAYOUTFCN,,GUI_CALLBACK,IFNARGINENDIFNARGOUTVARARGOUT1NARGOUTGUI_MAINFCNGUI_STATE,VARARGINELSEGUI_MAINFCNGUI_STATE,VARARGINENDFUNCTIONNUM4_1LVBO_OPENINGFCNHOBJECT,EVENTDATA,HANDLES,VARARGINHANDLESOUTPUTHOBJECTGUIDATAHOBJECT,HANDLESFUNCTIONVARARGOUTNUM4_1LVBO_OUTPUTFCNHOBJECT,EVENTDATA,HANDLESVARARGOUT1HANDLESOUTPUT全局变量说明YUCHU用于存放信号FFT变换结果LONG用于存放信号长度YS用于存放原始信号读取原始信号并进行预处理FUNCTIONBT_READ_CALLBACKHOBJECT,EVENTDATA,HANDLESFILENAME,PATHNAMEUIGETFILECSVGLOBALYSYSCSVREADFILENAMEAXESHANDLESWAVE_YSPLOTYS,1,YS,2GRIDONAXISMINYS,1MAXYS,1MINYS,23/2MAXYS,23/2GLOBALYUCHUYUCHUFFTYS,2GLOBALLONGLONGLENGTHYS,2低通滤波FUNCTIONBT_DT_CALLBACKHOBJECT,EVENTDATA,HANDLESGLOBALYUCHULONGYSF1STR2DOUBLEGETHANDLES_F1,STRINGFORI1LONGIFIFIXLONG/21FIXLONG/21F1FIXLONG/21DTIYUCHUIELSEDTI0ENDENDOKIFFTDTAXESHANDLESWAVE_DTPLOTYS,1,OKGRIDON高通滤波FUNCTIONBT_GT_CALLBACKHOBJECT,EVENTDATA,HANDLESGLOBALYUCHULONGYSF1STR2DOUBLEGETHANDLES_F1,STRINGFORI1LONGIFIFIXLONG/21FIXLONG/21F1FIXLONG/21GTI0ELSEGTIYUCHUIENDENDOKIFFTGTAXESHANDLESWAVE_GTPLOTYS,1,OKGRIDON带阻滤波FUNCTIONBT_DZ_CALLBACKHOBJECT,EVENTDATA,HANDLESGLOBALYUCHULONGYSF1STR2DOUBLEGETHANDLES_F1,STRINGF2STR2DOUBLEGETHANDLES_F2,STRINGFORI1LONGIFIFIXLONG/21F1ELSEDZIYUCHUIENDENDOKIFFTDZAXESHANDLESWAVE_DZPLOTYS,1,OKGRIDON带通滤波FUNCTIONBT_DAT_CALLBACKHOBJECT,EVENTDATA,HANDLESGLOBALYUCHULONGYSF1STR2DOUBLEGETHANDLES_F1,STRINGF2STR2DOUBLEGETHANDLES_F2,STRINGFORI1LONGIFIFIXLONG/21F1ELSEDZI0ENDENDOKIFFTDZAXESHANDLESWAVE_DATPLOTYS,1,OKGRIDON4、窗函数FUNCTIONVARARGOUTNUM4_WINDOWSVARARGIN本程序用于对一维信号进行窗函数滤波其中,F1、F2、F3、F4依次为带通滤波镶边后的四个频率为了使滤波效果较好,建议使F1F2F3F4GUI_SINGLETON1GUI_STATESTRUCTGUI_NAME,MFILENAME,GUI_SINGLETON,GUI_SINGLETON,GUI_OPENINGFCN,NUM4_WINDOWS_OPENINGFCN,GUI_OUTPUTFCN,NUM4_WINDOWS_OUTPUTFCN,GUI_LAYOUTFCN,,GUI_CALLBACK,IFNARGINENDIFNARGOUTVARARGOUT1NARGOUTGUI_MAINFCNGUI_STATE,VARARGINELSEGUI_MAINFCNGUI_STATE,VARARGINENDFUNCTIONNUM4_WINDOWS_OPENINGFCNHOBJECT,EVENTDATA,HANDLES,VARARGINHANDLESOUTPUTHOBJECTGUIDATAHOBJECT,HANDLESFUNCTIONVARARGOUTNUM4_WINDOWS_OUTPUTFCNHOBJECT,EVENTDATA,HANDLESVARARGOUT1HANDLESOUTPUT以下为信号读取以及原始信号的绘制FUNCTIONREAD_CALLBACKHOBJECT,EVENTDATA,HANDLESFILENAME,PATHNAMEUIGETFILECSVREADFILEGLOBALSIGNSIGNCSVREADFILENAMEAXESHANDLESAXES_SIGNPLOT1LENGTHSIGN,SIGN,2GRIDONFUNCTIONPLOT_CALLBACKHOBJECT,EVENTDATA,HANDLES采样频率100HZ,WPL20HZ,WPH30HZ,WSL15HZ,WSH35HZ,频率/采样频率2PIWPL04PI,WPH06PI,WSL02PI,WSH08PI,RP1AS20CLCT1FS1/TSETT1按照比值进行带通的四个频率成份的界定F1STR2DOUBLEGETHANDLES_F1,STRINGF2STR2DOUBLEGETHANDLES_F2,STRINGF3STR2DOUBLEGETHANDLES_F3,STRINGF4STR2DOUBLEGETHANDLES_F4,STRINGGLOBALSIGNKKLENGTHSIGN一维信号长度WPLTANF2/2/FSPIWPHTANF3/2/FSPIWSLTANF1/2/FSPIWSHTANF4/2/FSPIRP1AS40计算模拟低通原型的参数OMIGAPWPHWPL低通滤波器通带截止频率OMIGASWSHWSL低通滤波器通带截止频率N,WNBUTTORDOMIGAP,OMIGAS,RP,AS,SB,ABUTTERN,WN,SBT,ATLP2BPB,A,SQRTWPHWPL,WPHWPLB,ABILINEARBT,AT,FSHFREQZB,A,KK,WHOLEAXESHANDLESAXES_IFFT输出滤波器PLOT1KK,IFFTABSHFFTSIGN,2,RGRIDONAXESHANDLESAXES_FFT输出滤波后的信号PLOTABSH,RGRIDON六、验证褶积性质(设计4)1设计内容验证时间域的循环褶积对应的是频率域的乘积;线性褶积则不然。2实验结果A,B两向量取如下值A1,2,3,4B1,2,3计算得到如下结果当循环次数依次为4,5,6,7时,在频率域和时间域计算得到的循环褶积均相等;当循环次数小于6(N1N21)时,时间域和频率域计算所得的结果不同,但是当循环次数大于6时,两种方法计算得到的结果相等。因此可以得到如下结论1两个向量的循环褶积所对应的频谱是两信号各自频谱在频率域的乘积;2当两个向量在频率域计算线性褶积时,要对两个信号进行补零扩展,使两个信号同大小。当扩展出的新信号长度小于临界长度6(N1N21)时,频率域和时间域计算得到的线性褶积不相等;当扩展出的新信号长度大于等于临界长度6(N1N21)时,频率域和时间域计算得到的线性褶积相等。例如设LENGTHAN1LENGTHBN2LENGTH新信号N3如果N3N1N21两种方法所得结果相等;程序验证时间域的循环褶积对应的是频率域的乘积;线性褶积则不然。CLEARCLCA1,2,3,4B1,2,3KK1LENGTHAKK2LENGTHB临界循环次数(循环线性)MINLLENGTHALENGTHB1临界循环次数(循环线性)循环次数XX4循环次数手动更改MAXLENGTHA,LENGTHBAAZEROSXX,1AA1KK1,1A扩展ABBZEROSXX,1BB1KK2,1B扩展BBB1ZEROSXX,XX循环矩阵FORI1XXBB1IXX,IBB1XXI1BB11I1,IBBXXI2XXEND时间域计算循环褶积结果OK1BB1AA时间域计算循环褶积结果频率域计算循环褶积结果OK2IFFTFFTAAFFTBB频率域计算循环褶积结果作差比较PLUS1OK1OK2作差比较时间域计算线性褶积结果OK3CONVA,B时间域计算线性褶积结果KK5AAZEROSKK,1AA1KK1,1A扩展ABBZEROSKK,1BB1KK2,1B频率域计算线性褶积结果OK4IFFTFFTAAFFTBB频率域计算线性褶积结果OK33ZEROSLENGTHOK3LENGTHOK4,1OK331LENGTHOK3,1OK3OK44ZEROSLENGTHOK3LENGTHOK4,1OK441LENGTHOK4,1OK4作差比较PLUS2OK33OK44作差比较七、实习感想通过这次的计算机编程与数字信号处理实习,使我对数字信号处理的了解有了很大的提高。老师生动细致的讲解和悉心辅导让人印象深刻。在此,首先要对老师的指导致以深深的谢意。刚刚开始的时候,我感觉对MATLAB比较生疏,编程时还是比较喜欢使用C语言,但是随着学习的深入,渐渐地体会到了MATLAB的优势,尤其是在大量复杂的数据处理方面。当然,这两周短暂的上机实习并不足以使我们完全掌握MATLAB软件的用法,我将在日后继续学习。
如果觉得《基于matlab下数字信号的课程设计 基于Matlab的数字信号处理课程设计》对你有帮助,请点赞、收藏,并留下你的观点哦!