武汉理工大学Matlab课程设计报告书_第1页
武汉理工大学Matlab课程设计报告书_第2页
武汉理工大学Matlab课程设计报告书_第3页
武汉理工大学Matlab课程设计报告书_第4页
武汉理工大学Matlab课程设计报告书_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学《Matlab》课程设计说明书学号:课程设计题目学院专业班级姓名指导教师年月日

课程设计任务书学生姓名:胡健 专业班级: 电信1004 指导教师:李景松、祝立华 工作单位: 信息工程学院 题目:Matlab运算与应用设计1初始条件:Matlab6.5以上版本软件;课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”等;先修课程:信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)初步了解Matlab、熟悉Matlab界面、进行简单操作;MATLAB的数值计算:创建矩阵、矩阵运算、多项式运算、线性方程组、数值统计;基本绘图函数:plot,plot3,mesh,surf等,要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定等;使用文本编辑器编辑m文件,函数调用;能进行简单的信号处理Matlab编程;按要求参加课程设计实验演示和答辩等。课程设计说明书按学校“课程设计工作规范”中“统一书写格式”撰写。时间安排:1周参考文献:(美)\o"穆尔"穆尔,\o"高会生"高会生,\o"刘童娜"刘童娜,\o"李聪聪"李聪聪,MATLAB实用教程(第二版),电子工业出版社,2010\o"王正林"王正林,\o"刘明"刘明,精通MATLAB(升级版),电子工业出版社,2011\o"陈杰"陈杰,MATLAB宝典(第3版),电子工业出版社,2011\o"刘保柱"刘保柱,\o"苏彦华"苏彦华,\o"张宏林"张宏林,MATLAB7.0从入门到精通(修订版),人民邮电出版社,2010指导教师签名: 年月日系主任(或责任教师)签名: 年月日武汉理工大学《Matlab》课程设计说明书目录1.Matlab软件简介………………11.1Matlab的发展历程……………………11.2Matlab的基本功能……………………11.3Matlab的基本应用……………………22.具体题目分析……………………22.1题1.1…………22.2题1.2…………32.3题1.3…………42.4题1.4…………52.5题1.5…………112.6题1.6…………122.7题1.7…………132.8题1.8…………142.9题1.9…………152.10题1.10………………………163.心得体会……………184.参考文献……………195.本科生课程设计成绩评定表…………20武汉理工大学《Matlab》课程设计说明书Matlab运算与应用设计11.Matlab软件简介MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。1.1 Matlab的发展历程20世纪70年代,美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、SteveBangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。1.2Matlab的基本功能MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++和JAVA的支持。可以直接调用,用户也可将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。1.3 Matlab的应用MATLAB产品族可以用来进行以下各种工作:●数值分析●数值和符号计算●工程与科学绘图●控制系统的设计与仿真●数字图像处理技术●数字信号处理技术●通讯系统设计与仿真MATLAB在通讯系统设计与仿真的应用●财务与金融工程MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。

具体题目分析2.1题1.1:计算y1=和y2=;2.1.1理论分析: 该题为多项式运算,可直接写出y1和y2的Matlab语言表达式,进行计算。2.1.2程序代码:>>y1=2*sin(0.3*pi)/(1+sqrt(5)) %y1=y1=0.5000 %计算结果>>y2=2*cos(0.3*pi)/(1+sqrt(5)) %y2=y2=0.3633 %计算结果2.1.3题目小结: 通过题目,我了解到sin()函数和cos()函数。从计算结果来看,Matlab对于pi,和cos,sin的计算是有一定误差的。2.2题1.2: 画出衰减震荡曲线及其他的包络线,t的取值范围是[0,4].2.2.1理论分析: 本题要学会使用plot()函数来绘制二维曲线图。2.2.2程序代码:>>t=0:0.01:4*pi; %产生向量t>>y=exp(-t/3).*sin(3*t); %产生向量y>>y0=exp(-t/3); %产生向量y0>>plot(t,y,t,y0) %绘制曲线和包络线图2.2.SEQ图2.2.\*ARABIC1二维图形绘制2.2.3题目小结: 通过本题我们学会了如何用plot()函数绘制二维曲线图形。2.3题1.3 画出所表示的三维曲面。x,y的取值范围是[-8,8]。2.3.1理论分析: 本题要求我们用meshgrid()函数来形成XY矩形网络,用mesh()函数来绘制网线图,用surf()函数来绘制三维曲面。2.3.2程序代码:>>x=-8:0.01:8;>>y=-8:0.01:8;>>[x,y]=meshgrid(x,y); %形成格点矩阵>>z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);>>mesh(x,y,z); %绘制三维网线图>>xlabel('x'),ylabel('y'),zlabel('z')图2.3.SEQ图2.3.\*ARABIC1三维曲面的绘制2.3.3题目小结: 通过这题,我们学会了如何绘制三维曲线图,以及其中如何用不同颜色来表示不同区域。2.4题1.4:分析下面每条指令的功能并运行,观察执行结果。X=0:0.1:1;Y=X.*exp(-X);plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);A=zeros(2,5)A(:)=-4:5L=abs(A)>3islogical(L)X=A(L)A=[1:4;5:8]pow2(A)A=zeros(2,3)A(:)=1:6A=A*(1+i)A1=A.’;B1=A’;A=ones(1,2)B=ones(2)C=eye(3)D=diag(C)E=repmat(C,1,3)2.4.1理论分析: 运行个代码,并验证结果。2.4.2程序代码:(1)>>X=0:0.1:1; %X的范围是[0,1]>>Y=X.*exp(-X); >>plot(X,Y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') %绘制X,Y的曲线图,横坐标为x,纵坐标为y,标题为y=x*exp(-x)图2.4.SEQ图2.4.\*ARABIC1(1)y=x*exp(-x)的曲线(2)>>A=zeros(2,5) &建立一个2×5的零矩阵A=0000000000>>A(:)=-4:5 %采用单下标为A赋值A=-4-2024-3-1135>>L=abs(A)>3 %abs()为取绝对值L=1000100001>>islogical(L) %islogical为数组检测函数,检测L是否为逻辑型,为真返回1,为假返回0ans=1>>X=A(L) %取出A中的元素,形成列向量X=-445(3)>>A=[1:4;5:8] %A为2×4的矩阵A=12345678>>pow2(A) %pow2()函数为取2的多少次幂ans=248163264128256(4)>>A=zeros(2,3)A=000000>>A(:)=1:6A=135246>>A=A*(1+i) %A中每个元素乘以1+iA=1.0000+1.0000i3.0000+3.0000i5.0000+5.0000i2.0000+2.0000i4.0000+4.0000i6.0000+6.0000i>>A1=A.' %求A的转置矩阵A1=1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i4.0000+4.0000i5.0000+5.0000i6.0000+6.0000i>>B1=A' %求A的共轭转置B1=1.0000-1.0000i2.0000-2.0000i3.0000-3.0000i4.0000-4.0000i5.0000-5.0000i6.0000-6.0000i(5)>>A=ones(1,2) %形成1×2的全1矩阵A=11>>B=ones(2) %形成2×2的全1矩阵B=1111>>C=eye(3) %形成3×3的单位矩阵C=100010001>>D=diag(C) %将C转换为逻辑型D=111>>E=repmat(C,1,3) %以C为元胞数组,构成1×3的新数组E=1001001000100100100010010012.4.3题目小结: 通过本题,我们可以学到矩阵的一些基本操作,比如建立特殊矩阵,以及矩阵的运算,比如乘法和求转置,还有就是发现了求转置和求共轭转置的不同之处。2.5题1.5:计算在x=0.1与10处的值。2.5.1理论分析: 本题为多项式的求值问题,涉及到多项式在Matlab中是如何表示的,可利用polyval()函数或polyvalm()函数。2.5.2程序代码:>>p=[10.1000-100];>>x=[0.110];>>y=polyval(p,x) %求p在x处的值y=1.0e+005*-0.00101.0090 %结果用科学计数法表示2.5.3题目小结: 通过本题我们学会了如何在Matlab中表示多项式,即用多项式的系数向量来表示,并会用plyval()函数求多项式在某一点的值。并且发现Matlab中数据的精度是有限的,会产生误差。2.6题1.6:求函数1+1/2+1/3+…+1/n,n=100的值。2.6.1理论分析: 利用循环语句求值2.6.2程序代码:>>y=0;>>forn=1:100y=y+1/n;end>>yy=5.18742.6.3题目小结: 通过本题我们学会了循环语句for的使用,以及递归算法的使用。2.7题1.7: 求500个元素的随机数向量A中大于0.5的元素个数。2.7.1理论分析: 产生随机数,并用循环语句遍历其中的数。2.7.2程序代码:>>y=rand(1,500); %产生500个随机数>>i=0;>>forn=1:500ify(n)>0.5 %判断y(n)是不是大于0.5i=i+1;end;end>>ii=2452.7.3题目小结: 通过本题,我们可以了解如何产生随机数。2.8题1.8: 求线性方程组AX=b的根。2.8.1理论分析: 利用矩阵的除法解线性方程组2.8.2程序代码:>>A=[0.41560.23190.20240.29300.3690;0.32060.46500.56620.18120.4631;0.51460.37340.83150.35750.6278;0.71920.05000.42260.93410.9445;0.84200.07390.83950.58940.4058]A=0.41560.23190.20240.29300.36900.32060.46500.56620.18120.46310.51460.37340.83150.35750.62780.71920.05000.42260.93410.94450.84200.07390.83950.58940.4058>>B=[0.0505;0.4449;0.5959;0.7483;0.8642]B=0.05050.44490.59590.74830.8642>>X=A\BX=-2.27421.43791.38904.0710-2.1998 %方程的解2.8.3题目分析: 通过本题,我学会了如何用Matlab解线性方程组,即利用矩阵的除法。2.9题1.9:画出y=|1000sin(4x)|+1的x轴为对数的图。2.9.1理论分析: 将横坐标转化为对数后绘制图像2.9.2程序代码:>>x0=0:0.01:1000;>>x=log(x0);>>y=abs(1000*sin(4*x)+1);>>plot(x,y);xlabel('logx'),ylabel('y')图2.9.SEQ图2.9.\*ARABIC1对数坐标图像的绘制2.9.3题目分析 通过本题可以学会对数坐标图像的绘制,对数坐标在信号分析中有着很重要的作用。2.10题1.10: 用FFT直接计算x=cos(2*pi*40*t)+2sin(2*pi*120*t)+w(t)的功率谱2.10.1理论分析; 功率谱估计是数字信号处理的主要内容之一,主要研究信号在频域中的各种特征,目的是根据有限数据在频域内提取被淹没在噪声中的有用信号。用快速傅立叶变换(FFT)来计算离散傅立叶变换(DFT),用DFT的幅度平方作为信号中功率的度量,利用周期图法求功率谱。2.10.2程序代码:>>t=0:0.001:0.25;>>x=cos(2*pi*40*t)+2*sin(2*pi*120*t);>>y=x+2*randn(size(t));>>Y=fft(y,256);>>Pyy=Y.*conj(Y)/256;>>f=1000/256*(0:127);>>plot(f,Pyy(1:128))>>plot(f(1:50),Pyy(1:50))>>xlabel('频率/Hz'),ylabel('振幅'),title('功率谱')图2.10.SEQ图2.10.\*ARABIC1功率谱2.10.3题目总结:学会用周期图法估计功率谱,并且发现得到的功率谱并不是平滑的。

3.心得体会刚知道有Matlab课程设计的时候,我并没有很在意,只是我也听说这个软件很长一段时间了,一直想学一下又没时间去学,就打算接这个契机好好学一下Matlab这个软件。Matlab本是一个数学软件,但在电子信息工程中有着非常频繁的应用,比如在信号处理中的应用,通信系统的仿真以及自动控制。这次课程设计给的时间并不长,不足以我学完整个Matlab,当然,题目给的也比较简单,只是最基本的语法以及矩阵的操作。学完这几章之后我便完成了这次课程设

温馨提示

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

评论

0/150

提交评论