《Matlab应用课程设计》课程设计说明书.doc_第1页
《Matlab应用课程设计》课程设计说明书.doc_第2页
《Matlab应用课程设计》课程设计说明书.doc_第3页
《Matlab应用课程设计》课程设计说明书.doc_第4页
《Matlab应用课程设计》课程设计说明书.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学Matlab应用课程设计课程设计说明书1 Matlab的简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。MATLAB应用: 利用MATLAB可以进行以下各种工作 数值分析 数值和符号计算 工程与科学绘图 控制系统的设计与仿真 数字图像处理 数字信号处理 通讯系统设计与仿真 财务与金融工程 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。2课程设计内容2.1 y1=和y2= 2.1.1 理论分析 这是利用matlab处理数值运算的题目。在matlab中有很多内部函数和固定变量。这其中要用到cos(),sqrt()等函数以及固定变量pi。2.1.2程序代码y1=5*cos(0.6*pi)/(2+sqrt(3) %计算y1的表达式y2=5*cos(0.2*pi)/(3+sqrt(3) %计算y2的表达式2.1.3程序运行结果y1 = -0.4140 y2 =0.8548 2.1.4总结我们注意到matlab中的pi与真正的有差距,而且数字与因式相乘要使用乘法符号*。Matlab中的表达式的优先级与C语言等汇编语言一样,通过这个计算,了解到matlab有处理数据计算的功能。2.2绘制函数在时的曲线2.2.1理论分析利用MATLAB软件绘制曲线图。在这里用到的是funtool命令。熟悉使用funtool命令。也可以使用plot()函数等绘制二维的图形,但此处可直接使用此命令,更加方便快捷。2.2.2程序代码funtool %调出函数图像框在Figure3中f= 处填入表达式 x*exp(-x)*sin(x),在x= 处填入x的范围 0, 1,按Enter后在Figure1中出现所需的函数图象2.2.3程序运行结果如图1所示:图12.2.4总结Funtool命令是很好使用命令。用它可以很方便的画出所需区域的函数图像,甚至可以很轻松的描绘处函数运算之后以及符合函数的图像, 可以不用代码对图形进行标注。2.3用图形表示离散函数2.3.1 理论分析在matlab的二维曲线绘图指令中,最基本的是plot,plot的调用格式为:plot(x,y,s),其中x,y为同维向量,绘制分别以x为横坐标,y为纵坐标的曲线;s为可选项,用于图形修饰。在此题中还用到绝对值的函数abs(),描粗方格函数gird on。2.3.2 程序代码n=1:14; %以1为起点,以1为步长,取1到14y=1./abs(n-6).*exp(n); %离散变量表达式plot(n,y,m*-,MarkerSize,20); %用紫色的虚线及星号绘制grid on %给图形加上网络2.3.3程序运行结果如图2所示:图22.3.4总结在描点的时候n=6的点没有画出,因为在n=6时分母为0,函数值为inf,即无穷大。用plot函数可以定义所描的点的大小、形状和颜色。2.4分析下面每条指令的功能并运行,观察执行结果2.4.1.1 理论分析用plot函数可对图形进行标注,如此题中xlabel,ylabel分别为坐标轴标记,title为标题标记。2.4.1.2程序代码x=0:0.5:20; %产生一组自变量数据y=x.*exp(-x); %数组的乘法plot(x,y),xlabel(x),ylabel(y),title(y=x.*exp(-x); %对函数图形标注坐标轴和标题2.4.1.3程序运行结果如图3所示:图32.4.2.1理论分析在matlab中有多种方法生成矩阵,此题中主要运用特殊函数生成法,如题中zeros()生成一个元素全为0的矩阵。L为逻辑数组,其元素是0为1。2.4.2.2 程序代码A=zeros(4,5) %定义一个4x5的全零矩阵A(:)=-4:15 %将元素-4到15按列取出生成4行5列数组L=abs(A)4 %绝对值大于3的值变为1,小于3的为0islogical(L) %判断L是不是逻辑数X=A(L) %取出A中大于1的元素组成一个新矩阵2.4.2.3程序运行结果A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A = -4 0 4 8 12 -3 1 5 9 13 -2 2 6 10 14 -1 3 7 11 15L = 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1ans = 1X = 5 6 7 8 9 10 11 12 13 14152.4.3.1 理论分析此题为matlab中用冒号生成法生成数组,通用格式为:变量=初值:增量:终值,当增量为1时可省略。2.4.3.2 程序代码A=1:5;6:10 %生成一个矩阵pow2(A) %矩阵相应位置变为以2为底的指数2.4.3.3程序运行结果A = 1 2 3 4 5 6 7 8 9 10ans = 2 4 8 16 32 64 128 256 512 10242.4.4.1理论分析此题主要为矩阵的转换A.为矩阵A的转置矩阵,A矩阵A的共轭转置矩阵。2.4.4.2 程序代码A=zeros(5,6) %生成一个3x2的全零矩阵A(:)=1:30 %将1到30分别赋给矩阵的各元素A=A*(1+i) %给A矩阵的元素从新赋值A1=A.; %A的转置矩阵B1=A; %A的共轭转置矩阵2.4.4.3程序运行结果A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A = 1 6 11 16 21 26 2 7 12 17 22 27 3 8 13 18 23 28 4 9 14 19 24 29 5 10 15 20 25 30A = Columns 1 through 3 1.0000 + 1.0000i 6.0000 + 6.0000i 11.0000 +11.0000i 2.0000 + 2.0000i 7.0000 + 7.0000i 12.0000 +12.0000i 3.0000 + 3.0000i 8.0000 + 8.0000i 13.0000 +13.0000i 4.0000 + 4.0000i 9.0000 + 9.0000i 14.0000 +14.0000i 5.0000 + 5.0000i 10.0000 +10.0000i 15.0000 +15.0000i Columns 4 through 6 16.0000 +16.0000i 21.0000 +21.0000i 26.0000 +26.0000i 17.0000 +17.0000i 22.0000 +22.0000i 27.0000 +27.0000i 18.0000 +18.0000i 23.0000 +23.0000i 28.0000 +28.0000i 19.0000 +19.0000i 24.0000 +24.0000i 29.0000 +29.0000i 20.0000 +20.0000i 25.0000 +25.0000i 30.0000 +30.0000i 若去掉最后两行后的分号,则矩阵A1,B1为:A1 = Columns 1 through 3 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 6.0000 + 6.0000i 7.0000 + 7.0000i 8.0000 + 8.0000i 11.0000 +11.0000i 12.0000 +12.0000i 13.0000 +13.0000i 16.0000 +16.0000i 17.0000 +17.0000i 18.0000 +18.0000i 21.0000 +21.0000i 22.0000 +22.0000i 23.0000 +23.0000i 26.0000 +26.0000i 27.0000 +27.0000i 28.0000 +28.0000iColumns 4 through 5 4.0000 + 4.0000i 5.0000 + 5.0000i 9.0000 + 9.0000i 10.0000 +10.0000i 14.0000 +14.0000i 15.0000 +15.0000i 19.0000 +19.0000i 20.0000 +20.0000i 24.0000 +24.0000i 25.0000 +25.0000i 29.0000 +29.0000i 30.0000 +30.0000iB1 = Columns 1 through 3 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 6.0000 - 6.0000i 7.0000 - 7.0000i 8.0000 - 8.0000i 11.0000 -11.0000i 12.0000 -12.0000i 13.0000 -13.0000i 16.0000 -16.0000i 17.0000 -17.0000i 18.0000 -18.0000i 21.0000 -21.0000i 22.0000 -22.0000i 23.0000 -23.0000i 26.0000 -26.0000i 27.0000 -27.0000i 28.0000 -28.0000i Columns 4 through 5 4.0000 - 4.0000i 5.0000 - 5.0000i 9.0000 - 9.0000i 10.0000 -10.0000i 14.0000 -14.0000i 15.0000 -15.0000i 19.0000 -19.0000i 20.0000 -20.0000i 24.0000 -24.0000i 25.0000 -25.0000i 29.0000 -29.0000i 30.0000 -30.0000i 2.4.5.1 理论分析 此题主要为特殊函数生成矩阵以及矩阵的操作函数,如ones表示元素全为1的矩阵,eye表示单位矩阵;diag表示将矩阵转换为对角矩阵,repmat表示按指定的行列数复制矩阵。2.4.5.2 程序代码A=ones(2,3) %定义一个2x3的全一矩阵B=ones(3) %定义一个2x2的全一矩阵C=eye(4) %生成四行四列的单位矩阵D=diag(C) %生成C的对角矩阵E=repmat(C,1,3) %将C矩阵作为一个元素生成一个1行3列的矩阵2.4.5.3程序运行结果A = 1 1 1 1 1 1B = 1 1 1 1 1 1 1 1 1C = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1D = 1 1 1 1E =1 0 0 0 1 0 0 0 1 0 0 00 1 0 0 0 1 0 0 0 1 0 00 0 1 0 0 0 1 0 0 0 1 00 0 0 1 0 0 0 1 0 0 0 12.4.6 总结Matlab中有多种生成数组的方法,以及数组的一些操作函数等,对于数组的处理等很方便。但要写代码的时候要特别注意分号的使用,若一个输出表达式后有分号,则只计算而不在command窗口中显示出来。2.5计算在x=0.1与10处的值2.5.1 理论分析这道题目是运用MATLAB计算函数值,可使用的方法有:直接调用M文件,用feval命令,用eval命令,使用内联函数等方法,此处采用使用内联方法计算函数值。2.5.2 程序代码y=inline(2*x.5+0.1*x.3-10) %建立内联函数y(0.1) %求x=0.1处的函数值y(10) %求x=10处的函数值2.5.3程序运行结果y = Inline function: y(x) = 2*x.5+0.1*x.3-10ans = -9.9999ans = 2000902.5.4 总结 在matlab中提供的多种方法求解函数值,操作者可根据需要选择,方便快捷。2.6求函数, n=100的值2.6.1 理论分析在matlab中,有专门计算级数和的函数。这个函数就是symsum()。例如symsum(s,x,a,b)计算表达式s的级数和,其中x为自变量,x省略则默认为对自由变量求和;s为符号表达式;a,b为参数x的取值范围。2.6.2 程序代码syms n; %定义符号变量s=exp(n); %级数的表达式symsum(s,n,0,100) %求s在0到100范围内的级数和 2.6.3程序运行结果ans = exp(101)/(exp(1)-1)-1/(exp(1)-1)2.6.4总结 在计算级数和的过程中,注意要先定义变量,否则将不会得到最终结果。会出现程序不能运行,需要用syms()将n符号化。2.7 求3000个元素的随机数向量A中大于0.5的元素个数2.7.1 理论分析这道题中要用到随机函数rand()。在生成矩阵后还要要用到循环控制结构,可用for语句while语句,在循环中还可加入if进行选择。2.7.2 程序代码A=rand(50,60); %定义一个50x60的矩阵 n=0; %令n的初值为0for i=1:50, %外部for循环处理行for j=1:60, %内部for循环处理行if A(i,j)0.5 %if语句用来判断表达式n=n+1; %若表达式为真,则n加1 end, %if语句结束句end, %内部for语句结束句end, %外部for语句结束句disp(n); %输出n2.7.3程序运行结果 15302.7.4总结编写代码的过程中要注意,与;的用法 就只有正确的用法才能得出结果。另一方面,end的使用也要注意,if语句和for语句都要以end作为结束语句,并且需要注意end的个数。2.8用图形表示连续调制波形 及其包络线,运行下面的程序,观察结果,并简单说明2.8.1理论分析 Matlab能用于信号的处理,通过编写代码能使用matlab将调制波形等绘制出来,能够应用于信号与系统中进行信号的处理。2.8.2 程序代码t=(0:pi/100:pi); %定义一组自变量y1=sin(t)*1,-1; %调制信号y2=sin(t).*sin(9*t); %调制后的信号t3=pi*(0:9)/9; %定义一组自变量y3=sin(t3).*sin(9*t3); %去调制信号中幅值为0的点plot(t,y1,r:,t,y2,b,t3,y3,bo); %绘制调制波形axis(0,pi,-1,1) %控制x,y轴的取值范围2.8.3程序运行结果如图4所示:图42.8.4总结: 利用matlab可以方便的绘制调制信号的波形等,能够用于今后的学习中信号处理。2.9计算下列矩阵A的特征值与特征向量 2.9.1 理论分析这里是运用matlab中的函数来处理矩阵,从而生成所需要的矩阵。Matlab中求解特征值和特征向量用到的函数为eig,其常用的调用方式为:D=eig(A) 得到A的特征向量V,D=eig(A) 得到矩阵A的特征值和特征向量2.9.2 程序代码A=1 1 4;2 2 5; 3 3 6; %定义一个3x3的矩阵V,D=eig(A) %返回矩阵A的特征值和特征向量2.9.3程序运行结果V = 0.3908 0.8637 0.7071 0.5605 0.2007 -0.7071 0.7302 -0.4623 -0.0000D = 9.9083 0 0 0 -0.9083 0 0 0 -0.00002.9.4总结在MATLAB中有很多很方便的函数帮助我们处理数据。我们要时常注意相关的函数,在以后的数据处理中就显得很轻松了。2.10 用FFT计算x=3sin(2*pi*30*t)+3cos(2*pi*140*t)+w(t)的功率谱2.10.1 理论分析在此题中,其调用方法为X=FFT(x);X=FFT(x,N);x=IFFT(X);x=IFFT(X,N)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。2.10.2 程序代码t=linspace(0,1,1000); %时间序列w=randn(1,length(t); %利用随机函数产生噪音信号x=3*sin(2*pi*30*t)+3*cos(2*pi*140*t)+w; %信号输入y=fft(x,512); %对信号进行快速Fourier变换f=1000*(0:255)/512; %频率序列p=y.*conj(y)/512; %求功率,conj()共轭plot(f,p(1:256); %绘出功率谱图像xlabel(频率/Hz);ylabel(振幅);title(功率谱); %分别对X,Y轴及标题进行标记2.10.3程序运行结果如图5所示:图52.10.4总结一般地,利用fft只是对已有数据进行傅里叶变换,而具体应用到画图还要经过处理,如对已知数据x进行fft傅里叶变换只需运行:y=fft(x);做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理,要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。注意w=rands(1,N)为加入噪音信号。3课程设计心得体会通过此次课程设计对MATLAB的学习,使我对MATLAB有了一个初步的认识,了解了它的一些简单的应用。MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空、文件的浏览器。 在此次的课程设计中我强烈的感受到了matlab是一个非常强大的数据处理软件,用它我们可以很方便快捷的进行计算,绘制出我们所需要的图形。而且matlab本身就带有很多的内部函数以及内部固定常量,这些都可以简化我们的程序,使操作者更加容易掌握。另一方面

温馨提示

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

评论

0/150

提交评论