MATLAB课程设计.doc_第1页
MATLAB课程设计.doc_第2页
MATLAB课程设计.doc_第3页
MATLAB课程设计.doc_第4页
MATLAB课程设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学Matlab应用课程设计说明书1 Matlab 软件简介 MATLAB是美国MathWorks公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到了广泛应用。它不仅是一个在各类工程设计中便于使用的训算工具,而且也是一个在数学、数值分析和工程计算等课程教学中的优秀的教学工具,在世界各地的高等院校中十分流行,在各类工业应用中更有不俗的表现。MATLAB可以在几乎所有的PC机和大型计算机上运行,适用于Windows、UNIX等多种系统平台。1.1 MATLAB产生的历史背景 MATLAB名称是由两个英文单词Maix和Laboratory的前二个字母组成。20世纪70年代后期,美国新墨西哥大学计算机系主任CleveMoler教授为了便于教学,减轻学生编写Fortran程序的负担,为两个矩阵运算软件包Linpack和Eispack编写了接口程序,这也许就算MATLAB的第一个版本。1984年,在JackLittle(也称JohnLittle)的建议推动下,由Little、Moler、SteveBangert三人合作,成立rMathWorks公司,同时把MATLAB正式推向市场。从那时开始,MATLAB的源代码采用C语言编写,除加强了原有的数值计算能力外,还增加了数据图形的可视化功能。1993年,MathWorks公司推出了MATLAB的40版本,系统平台由DOS改为Windows,推出了功能强大的、可视化的、交互环境的用于模拟非线性动态系统的工具Simulink,第一次成功开发出了符号计算工具包Symbolic Math Toolbox 10,为MATLAB进行实时数据分析、处理和硬件开发而推出了与外部直接进行数据交换的组件,为MATLAB能融科学计算、图形可视、文字处理于一体而制作了Notebook,实现了MATLAB与大型文字处理软件Word的成功对接。至此,MathWorks使MATLAB成为国际控制界公认的标准计算软件。 1997年,MathWorks公司推出了MATLAB的50版本,紧接着产生了51、52版本,至1999年MATLAB发展到53版本。MATLAB拥有了更丰富的数据类型和结构,更好的面向对象的快速精美的图形界面,更多的数学和数据分析资源,MATLAB工具也达到了25个,几乎涵盖了整个科学技术运算领域。在大部分大学里,应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教材都把MATLAB作为必不可少的内容。在国际学术界,MATLAB被确认为最准确可靠的科学计算标准软件,在许多国际一流的学术刊物上都可以看到MATLAB在各个领域里的应用。 MATLAB当前推出的最新版本是70版(R14),本书无特殊注明均指70版。12 MATLAB的语言特点和开发环境 MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。被称为第四代编程语言的MATLAB最大的特点就是简洁开放的程序代码和直观实用的开发环境。具体地说MATLAB主要有以下特点: (1)库函数资源丰富 数百种库函数大大减轻了用户子程序的编写工作量,也避免了一些不必要的错误,因而用户也不必担心程序的可靠性问题。 (2)语言精炼,代码灵活 MATLAB的编程语言符合人们的思维习惯,对代码的书写也没有特别严格的控制,语言精炼,程序的亢余度非常小。 (3)运算符多而灵活 MATLAB的内核是用c语言编写的,它为用户提供了和C语言一样多的运算符,用户运用这些运算符可以使程序更加简炼。 (4)面向对象,控制功能优良 MATLAB在5x各版本中优化了数据结构,使得程序的结构化控制更精良,面向对象的功能更加友善。特别是当前的70版,在可视化编程方面比以前的版本又有了更大的提高,使界面编程更方便、自由。 (5)程序设计自由 MATLAB70版支持长变量名达到63个字符,用户可以不对矩阵进行预定义就使用,变量和数组的应用也有了很大的扩展,这为用户编写程序提供了更大的自由度,使编程更加简单、方便。 (6)图形功能强大 在很多程序语言中,绘制图形是一件很麻烦的事情。但在MATLAB中,只需调用相应的绘图函数即可,既方便又迅速。随着硬件的发展和MATLAB70推出,MATLAB的图形功能更好,可视化编程能力得到更进一步的提高。 (7)程序的兼容性好 MATLAB可以在各种PC机、大型计算机和各种操作系统上运行。 (8)源代码开放 MATLAB的最重要的特点是源代码的开放性,除了内部函数,所有的MATLAB核心文件和工具箱文件都完全开放,都可渎可改。用户对源文件修改就可以生成适合自己的源代码文件。 (9)形形色色的工具箱 凡有工具箱的软件大都分为两大部分,就是核心部分和形形色色的工具箱。MATLAB有数百个核心内部函数,数十个形形色色的工具箱。工具箱大致可以分为两大类,类是学科性工具箱,另一类是功能性工具箱。学科性工具箱大都涵盖了本学科所有的已有的基本概念和基本运算,大都十分专业。如符号数学工具箱,简直就是一个高等数学、工程数学解题器。极限、导数、微分、积分、级数运算与展开、微分方程求解、Laplace变换等应有尽有。还有控制系统、信号处理、模糊逻辑、神经网络、小波分析、统计;优化、金融预测等工具箱,无一不是非常优秀的运算工具。这些工具箱都可以添加自己根据需要编写的函数,用户可以不断更新自己的工具箱,使之更适合于自己的研究和计算 1.3 基本语法1.3.1变量1、变量的命名:变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。2、一些特殊的变量:ans:用于结果的缺省变量名 i、j:虚数单位pi:圆周率 realmin:最小正实数realmax:最大正实数 1.3.2简单的数学运算1、常用的数学运算符:,*(乘),/(左除),(右除),(幂)在运算式中,MATLAB通常不需要考虑空格;多条命令可以放在一行中,它们之间需要用分号隔开;逗号告诉MATLAB显示结果,而分号则禁止结果显示。2、常用数学函数:abs,sin,cos,tan,sqrt,exp,imag,real, rem,1.3.3流程控制语句1、if语句基本格式:if 逻辑表达式 执行语句 End 其执行过程为:当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。2、while循环语句基本格式:while 表达式 循环体 End其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。 4、switch语句基本格式:switch 表达式(可以是标量或字符串) case 值1 语句1 case 值2 语句2 . otherwise 语句3 End其执行过程为:当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n。当任意一个分支的语句执行完后,直接执行switch语句的下一句。5、for语句基本格式:for 循环变量=表达式1:表达式2:表达式3 循环体语句 end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。1.3.4特殊矩阵:常用的产生通用特殊矩阵的函数有:zeros:产生全0矩阵(零矩阵)。ones:产生全1矩阵(幺矩阵)。eye:产生单位矩阵。rand:产生01间均匀分布的随机矩阵。randn:产生均值为0,方差为1的标准正态分布随机矩阵。1.3.5函数文件 1、函数文件的基本结构函数文件由function语句引导,其基本结构为:function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。2、函数调用函数调用的一般格式是: 输出实参表=函数名(输入实参表)要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。1.3.6二维数据曲线图 1绘制单根二维曲线 plot函数的基本调用格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 2设置曲线样式MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。要设置曲线样式可以在plot函数中加绘图选项,其调用格式为:plot(x1,y1,选项1,x2,y2,选项2,xn,yn,选项n) 3 图形标注与坐标控制 有关图形标注函数的调用格式为:title( 图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)第2套题目:Matlab运算与应用设计21 计算y1=和y2=;2 画出衰减震荡曲线及其他的包络线,t的取值范围是0,6.3 画出所表示的三维曲面。x,y的取值范围是-9,9。4 分析下面每条指令的功能并运行,观察执行结果。(1) X=0:0.2:2;Y=X.*exp(-X);plot(X,Y),xlabel(x), ylabel(y),title(y=x*exp(-x);(2) A=zeros(3,4)A(:)=-4:7L=abs(A)3islogical(L)X=A(L)(3) A=1:5;6:10pow2(A)(4) A=zeros(3,5)A(:)=1:15A=A*(1+i)A1=A.;B1=A;(5) A=ones(2,3)B=ones(2)C=eye(4)D=diag(C)E=repmat(C,1,3)5 计算在x=0.1与10处的值。6 求函数, n=100的值。7 求1000个元素的随机数向量A中大于0.5的元素个数。8.求线性方程组AX=b的根。9.画出y=|1000sin(4x)|+1的y轴为对数图。10用FFT直接计算x=sin(2*pi*40*t)+2cos(2*pi*120*t)+w(t)的功率谱。3.设计内容1.计算y1=和y2=; 1.1理论分析该题为多项式运算,可直接写出Y1,y2的matlab的语言表达形式。 1.2程序代码 y1=2*sin(pi/2)/(sqrt(6)+1) %产生向量y1y1 = 0.5798 %运算结果y2=3*cos(pi/2)/(sqrt(7)+1) % 产生向量与y2y2 = 5.0387e-017 %运算结果2画出衰减震荡曲线及其他的包络线,t的取值范围是0,6. 2.1理论分析 该题为二维图像的绘制,可调用二维绘图命令plot(x,y),其中x为横坐标,y为纵坐标。 2.2程序代码 t=linspace(0,6*pi); %产生向量t y=exp(-3*t).*cos(t/5); %产生向量y plot(t,y) %绘制曲线 图2-1衰减震荡曲线t=linspace(0,6*pi); %产生向量ty0=exp(-3*t); %产生向量y0 plot(t,y0) %绘制曲线图2-2 包络线1. 画出所表示的三维曲面。x,y 的取值范围是-9,9。3.1理论分析 该题为三维图形的绘制,是由做基本的三维曲线绘制命令surf函数实现,其基本调用格式为:surf(x,y,z),其中x,y,z分别为三维曲线的三个坐标值向量,并且可自动对图像表面着色。3.2程序代码 x=-9:0.45:9; %产生向量xy=-9:0.45:9; %产生向量yx,y=meshgrid(x,y); %形成格点矩阵z=cos(sqrt(2*x.2+2*y.2)./sqrt(x.2+y.2); %产生向量zsurf(x,y,z); %绘制三维曲面xlabel(x), ylabel(y), zlabel(z); %坐标名 图3-1 三维曲面4分析下面每条指令的功能并运行,观察执行结果。(1)X=0:0.2:2 %产生向量X X=0:0.2:2;X =Columns 1 through 90 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 Columns 10 through 111.8000 2.0000 Y=X.*exp(-X) %产生向量YY = Columns 1 through 9 0 0.1637 0.2681 0.3293 0.3595 0.3679 0.3614 0.3452 0.3230Columns 10 through 110.2975 0.2707plot(X,Y),xlabel(x),ylabel(y),title(y=x*exp(-x) %绘制曲线;规定坐标名 图4-1 Y=X.*exp(-X)曲线图(2) A=zeros(3,4) %产生3行4列全为零的矩阵A(:)=-4:7 %A的元素从-4到7共12个元素按照由上到下从左到右排列过去L=abs(A)3 %标记矩阵A中元素的绝对值大于3的元素,其中大于1是,0就不是islogical(L) %判断L是不是逻辑数X=A(L) % 取出A中绝对值大于3的元素组成一个新的矩阵执行结果:A = 0 0 0 0 0 0 0 0 0 0 0 0A = -4 -1 2 5 -3 0 3 6 -2 1 4 7L =1 0 0 1 0 0 0 1 0 0 1 1ans = 1X = -4 4 5 6 7(3)A=1:5;6:10 pow2(A) %分别取A中元素的平方 A =1 2 3 4 5 6 7 8 9 10ans =2 4 8 16 32 64 128 256 512 1024(4)A=zeros(3,5) %产生3行5列全为零的矩阵A =0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A(:)=1:15 %1,2,3,4,5,6,7,8,9,10,11,12,13,14,15分别赋给A A = 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15A=A*(1+i) %A中元素分别与(1+i)相乘 A =Columns 1 through 41.0000 + 1.0000i 4.0000 + 4.0000i 7.0000 + 7.0000i 10.0000 +10.0000i2.0000 + 2.0000i 5.0000 + 5.0000i 8.0000 + 8.0000i 11.0000 +11.0000i3.0000 + 3.0000i 6.0000 + 6.0000i 9.0000 + 9.0000i 12.0000 +12.0000iColumn 513.0000 +13.0000i 14.0000 +14.0000i 15.0000 +15.0000iA1=A. %对A进行非共轭转置A1 =1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i 6.0000 + 6.0000i 7.0000 + 7.0000i 8.0000 + 8.0000i 9.0000 + 9.0000i 10.0000 +10.0000i 11.0000 +11.0000i 12.0000 +12.0000i 13.0000 +13.0000i 14.0000 +14.0000i 15.0000 +15.0000iB1=A %对A进行共轭转置 B1 =Columns 1 through 4 1.0000 + 1.0000i 4.0000 + 4.0000i 7.0000 + 7.0000i 10.0000 +10.0000i 2.0000 + 2.0000i 5.0000 + 5.0000i 8.0000 + 8.0000i 11.0000 +11.0000i 3.0000 + 3.0000i 6.0000 + 6.0000i 9.0000 + 9.0000i 12.0000 +12.0000iColumn 513.0000 +13.0000i 14.0000 +14.0000i 15.0000 +15.0000i(5)A=ones(2,3) %生成23全为1的矩阵 B=ones(2) %生成22全为1的矩阵C=eye(4) %产生对角线为1,其余为0的4阶矩阵D=diag(C) %取C中对角线的元素E=repmat(C,1,3) %重新复制矩阵C, 生成39的矩阵执行结果:A = 1 1 1 1 1 1B = 1 1 1 1C = 1 0 0 0 1 0 0 0 1D = 1 1 1E = 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 5.计算在x=0.1与10的值。5.1理论分析 该题属于数值计算问题,运用线性代数知识将表达式表示成行向量形式,然后可直接运用ployval函数对表达式求解,方法简单且便于理解。5.2程序代码A=1 0 0.1 0 0 -90; % 将y函数表示成行相量y=polyval(A,0.1) %求出多项式在x处的值y =-89.9999 A=1 0 0.1 0 0 -90; % 将y函数表示成行相量y=polyval(A,10) %求出多项式在x处的值y =100010 6. 求函数, n=100的值。 6.1理论分析: 第一次通过for循环n=1, 执行y=y+1/n; 第2 次,n=2, 执行y=y+1/n; 第100次,n=100, 执行 y= y+1/n; 在n=101时,for循环结束,然后执行end语句后面的命令。 6.2程序代码y=0; for n=1:100 y=y+1/n2;end 6.3执行结果y = 1.6350 7求500个元素的随机数向量A中大于0.5的元素个数。7.1理论分析: 该题首先要得到一个拥有1000个元素的随机数组,这可以通过函数rand实现,然后要对这1000个元素依次与0.5进行比较,这个过程可用for循环实现。7.2流程图为:判断y(n)0.5是否成立执行i=i+1For循环11000真假endn1000结束forN0.5 %判断y(n)是否大于0.5 i=i+1; %成立就执行此语句 end; %一次if结束end %for循环结束 n i n = 1000i =5188.求线性方程组AX=b的根。理论分析 该题为非齐次线性方程组Ax=b特解得求解问题,可直接使用命令Ab求解非齐次线性方程组的特解。8.2程序代码A=0.4156 0.2319 0.2024 0.2730 0.3690;0.3206 0.3650 0.5662 0.1812 0.4631; 0.5146 0.3734 0.7315 0.3575 0.6278; 0.7192 0.0500 0.4226 0.6341 0.9445; 0.8420 0.0739 0.8395 0.5864 0.4058 ; b=0.0305;0.3449;0.5759;0.7483;0.4642;X=Ab %A为55的矩阵,n=m;因为n=m,且A可逆, 矩阵给出方程的唯一解8.3执行结果X = -2.5682 -0.1145 0.8904 2.9677 0.36319.画出y=|1000sin(4x)|+1 的y 轴为对数的图。 9.1理论分析 该题也是二位图像的绘制,不同的是将y轴用对数函数log代替,自变量成为y,依次需用到函数semilogy来绘制图像。9.2程序代码x=0:0.01:2*pi;y=abs(1000*sin(4*x)+1;semilogy(x,y) 9.3执行结果 图9-1 对数图10.用 FFT 直接计算x=sin(2*pi*40*t)+2cos(2*pi*120*t)+w(t)功率谱。 10.1理论分析 该题是信号处理问题,问题关键是信号振幅获得,在题目处理过程中我们可以对信号进行傅里叶变换而得到其振幅,此功能可以通过fft函数来实现。10.2程序代码fs=100;N=128; %采样频率和数据点数n=0:N-1;t=n/fs; %时间序列x=sin(2*pi*40*t)+2*cos(2*pi*120*t) ; %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求得Fourier变换后的振幅f=n*fs/N; %频率序列subplot(2,2,2),plot(f(1:N/2),mag(1:N/2); %绘出随频率变化的振幅xlabel(频率/Hz);ylabel(振幅);title(功率谱); %分别对X,Y轴进行标记

温馨提示

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

评论

0/150

提交评论