《第十章 MATLAB语言基础.ppt》由会员分享,可在线阅读,更多相关《第十章 MATLAB语言基础.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10章MATLAB语言基础10.1MATLAB数值运算基础(5*2+1.5-0.2)*20/8ans=28.25001、变量命名在MATLAB中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,变量名区分字母的大小写。2、赋值语句(1)变量=表达式(2)表达式3、预定义变量在MATLAB工作空间中,还驻留几个由系统本身定义的变量。例如,用pi表示圆周率的近似值,用i或j表示虚数单位。4、内存变量的管理内存变量的删除与修改MATLAB工作空间窗口专门用于内存变量的管理。clear命令用于删除MATLAB工作空间中的变量。who和whos这两个命令用于显示
2、在MATLAB工作空间中已经驻留的变量名清单。who命令只显示出驻留变量的名称whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。内存变量文件利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat。MAT文件的生成和装入由save和load命令来完成。常用格式为:save文件名变量名表-append-asciiload文件名变量名表-asciiMATLAB常用的三角函数名称含义名称含义名称含义sin正弦csc余割atanh反双曲正切cos余弦asec反正割acoth反双曲余切tan正切acsc反余割sech双曲正割cot余切sinh双
3、曲正弦csch双曲余割asin反正弦cosh双曲余弦asech反双曲正割acos反余弦tanh双曲正切acsch反双曲余割atan反正切coth双曲余切atan2四象限反正切acot反余切asinh反双曲正弦sec正割acosh反双曲余弦10.1.2MATLAB常用数学函数常用数学函数指数函数名称含义名称含义名称含义expE为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt平方根复数函数名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle相角imag复数虚部圆整函数和求余函数名称含义名称含义ceil向+圆整rem求余数fix向0
4、圆整round向靠近整数圆整floor向-圆整sign符号函数mod模除求余其他函数名称含义名称含义min最小值max最大值mean平均值median中位数std标准差diff相邻元素的差sort排序length个数norm欧氏(Euclidean)长度sum总和prod总乘积dot内积cumsum累计元素总和cumprod累计元素总乘积cross外积10.1.3数据的输出格式数据的输出格式formatshort:短格式方式,显示5位定点十进制数。formatlong:长格式方式,显示15位定点十进制数。formatshortg:当数据大于1000或小于1时便会以科学记数法显示(-e),若想坚
5、持用整数部分加小数部分的格式来显示,就要再后边加gformatlonggformathex:十六进制格式方式。formatbank:银行格式。按元、角、分(小数点后具有两位)的固定格式。format+:+格式,以,和空格分别表示中的正数,负数和零元素formatshorte:短格式e方式,显示5位浮点十进制数formatlonge:长格式e方式,显示15位浮点十进制数。formatrat:分数格式形式。用有理数逼近显示数据。如pi显示为355/113。10.2数组矩阵运算数组矩阵运算10.2.1数组、矩阵的概念数组、矩阵的概念MATLAB以矩阵作为基本的运算单元,其运算规则与线性代数中的矩阵运
6、算规则相同。数组是由一组复数排成的长方形阵列。一行多列的数组是行向量;一列多行的数组就是列向量;数组可以是二维的“矩形”,也可以是多维的。10.2.2数组与矩阵的输入数组与矩阵的输入一行多列的数组是行向量,矩阵横向行的所有元素依次序排列的元素也是行向量。1、一维行或列向量的输入显示元素列表输入A=12*pisqrt(3)4+5i冒号生成输入x=a:inc:b2、二维数组或矩阵的输入A=123;456;78910.2.3数组与矩阵的算术运算数组与矩阵的算术运算1、数组、矩阵的加减运算数组加减运算和矩阵加减运算都是两个数组或矩阵的行数与列数分别相同,即都是数组相对应元素或矩阵相应元素的加减运算.M
7、ATLAB里,维数为11的数组叫做标量。例10-1、执行下列命令。s=5;A=123;456;789;B=A+sC=A-s运行结果:B=67891011121314C=-4-3-2-1012342、数组、矩阵的乘法运算数组的乘法用运算符.*表示,即在乘号前加一个点来特别指定是数组的乘法运算。数组的乘法必须在具有相同维数的数组间进行,其结果是数组的对应元素间相乘的结果组成的新数组,而两矩阵相乘必须服从数学中矩阵叉乘的条件与规则。数组、矩阵与标量的乘法运算数组与一个标量之间或矩阵与一个标量之间的乘法运算都是指该数组(或矩阵)的每个元素与这个标量分别进行乘法运算。例10-2、数组与一个标量乘法运算指
8、令示例。s=5;A=123;456;789;B=s.*A数组、矩阵的乘法运算数组的乘法必须在具有相同维数的数组间进行,两矩阵相乘的条件是左矩阵的列数必须等于右矩阵的行数且不满足交换律。例10-3、数组乘法示例。a=123;456;789;b=222;222;222;c=a.*bd=b.*a数组、矩阵的转置运算在线性代数中,把矩阵A的行换成同序数的列而生成的矩阵,叫做A的转置矩阵。从矩阵A生成转置矩阵的过程就是矩阵A的转置运算,矩阵A的转置矩阵记作AT。在MATLAB中,用运算符“”定义的矩阵转置,是其元素的共轭转置;运算符“.”定义的数组的转置则是其矩阵元素的非共轭转置。可见,线性代数定义的矩
9、阵的转置对应着MATLAB中的数组转置。例10-5、数组与矩阵的转置运算示例。e=123;456E=e*(1+i)F=EG=E.运行结果:F=1.0000-1.0000i4.0000-4.0000i2.0000-2.0000i5.0000-5.0000i3.0000-3.0000i6.0000-6.0000iG=1.0000+1.0000i4.0000+4.0000i2.0000+2.0000i5.0000+5.0000i3.0000+3.0000i6.0000+6.0000i10.3MATLAB的程序设计10.3.1M文件M文件是使用MATLAB语言编写的程序代码文件。之所以称为M文件,是因
10、为这种文件都以.m作为文件的扩展名。用户可以通过任何文本编辑器来生成或编辑文件,但是在MATLAB提供的M-file编辑调试器生成和编辑M文件最为简单、方便且高效。M文件可以分成两种类型:一种是函数文件,另一种是命令文件。10.3.2MATLAB函数1、概念MATLAB函数通常是指MATLAB系统内已设计好的完成某一种特定的运算或实现某一特定功能的一个子程序。MATLAB中的函数即函数文件,是M文件最主要的形式。函数是能够接受输入参数并返回输出参数的文件。在MATLAB中,函数名和M文件名必须相同。函数只能在函数体内对变量进行操作。MATLAB中的函数是以两种不同的形式提供给用户一种是内置在M
11、ATLAB核心中最基本的运算函数;另一种是通过M文件实现的函数。这些函数大部分是是在最基本运算函数的基础上扩展而来,扩展的目的是为了实现与完善MATLAB新的功能。3、结构函数定义行函数M文件首行总是以关键字function开头,并在首行中列出全部输入、输出参数以及函数名。函数名应置于等号的右侧并与对应的M文件名相同。输出参数紧跟在function之后,常用方括号括起来;输入参数紧跟在函数名之后,常用圆括号括起来。H1行H1行是函数帮助文本的第一行,以“%”号开头,用来概要说明该函数的功能。函数帮助文本在H1之后而在函数体之前的说明文本就是函数帮助文本,说明函数的功能与用法。函数体是实现该函数
12、功能、进行运算所有程序代码的执行语句。在函数体中,除了进行运算外,还包括函数调用与程序调用的必要注释。注释在函数体后还跟注释行,用以说明各种需要交代的问题。函数文件由function语句引导,其基本结构为:function输出形参表=函数名(输入形参表)注释说明部分函数体语句其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。4、函数调用函数调用的一般格式是:输出实参表=函数名(输入实参表)要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形
13、参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。例10-6利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。函数文件tran.m:functionrho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m的命令文件main1.m:y=input(Pleaseinputy=:);x=input(Pleaseinputx=:);rho,the=tran(x,y);rhothe5、函数参数的可调性在调用函数时,MATLAB用两个永久变量nargin和nargout
14、分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。例10-8nargin用法示例。函数文件examp.m:functionfout=charray(a,b,c)ifnargin=1fout=a;elseifnargin=2fout=a+b;elseifnargin=3fout=(a*b*c)/2;end命令文件mydemo.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3)10.3.3MATLAB命令文件或程序在MATLAB中,实现某项功能的一
15、串MATLAB语句命令与函数组合成的M文件叫命令文件,也译作脚本文件。这种文件在MATLAB的工作空间内对数据进行操作,能在MATLAB环境下直接执行。命令文件不仅能够对工作空间已存在的变量进行操作,并能将建立的变量及其执行的结果保存在MATLAB的工作空间里,供在以后的计算中使用。与函数文件相比,命令文件既不带输入参数也不带输出参数。例10-9分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。程序1:首先建立命令文件f2c.mclear;%清除工作空间中的变量f=input(InputFahrenheittemperature:);c=5*(f-32)/9然后在MATLAB的命令窗口
16、中输入f2c将会执行该命令文件,执行情况为:InputFahrenheittemperature:73c=22.7778程序2:首先建立函数文件f2c.m。functionc=f2c(f)c=5*(f-32)/9然后调用该函数文件。clear;y=input();x=f2c(y)输出情况为:InputFahrenheittemperature:70c=21.1111x=21.111110.3.4程序设计基础MATLAB语言为解释性程序设计语言,程序中的语句边解释边执行。是由顺序、选择和循环三种基本控制结构所构成。MATLAB语句由表达式语句、赋值语句、控制语句、调试语句和空语句组成,控制语句包
17、括条件语句、循环语句及一些转移语句。MATLAB的任何一个语句键入后,按回车键即可执行,故又把语句称为命令。由MATLAB各种函数与诸多MATLAB语句、命令组成的M文件就是MATLAB程序,所以MATLAB程序也是一种类似命令文件的M文件。MATLAB程序书写格式与函数的结构类似,掌握以下原则对于设计或编写程序是很有用的。程序基本结构组成如下图:%后面的内容是程序的注释说明,包含有程序的名称、功能等。在主程序开头用clear指令清除变量定义变量参数集中放在程序的开始部分,在语句行的最后输入分号时,执行语句行的结果不会显示在屏幕上,以提高执行速度。一、表达式、表达式语句与赋值语句在MATLAB
18、程序中,广泛使用表达式语句与赋值语句。1、表达式2、表达式语句。3、赋值语句二、程序流程控制语句在MATLAB程序中,还广泛使用程序流程控制语句包括顺序、选择、循环三大基本结构控制语句实现各种不同运算功能。1、顺序结构语句将MATLAB函数与语句根据解决问题的需要按照书写顺序而执行的MATLAB程序就是顺序结构程序。数据的输入从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为:A=input(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入什么样的数据。如果在input函数调用时采用s选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:xm=inp
19、ut(Whatsyourname?,s);数据的输出MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为disp(输出项)其中输出项既可以为字符串,也可以为矩阵。2、分支选择结构语句分支选择语句有2种:if条件分支语句与switch开关分支语句。if条件分支语句if-else-end条件语句为程序流程控制提供了一种条件分支结构,这种语句有3种格式:ifexpressionstatementsendifexpressionstatements1elsestatements2endifexpression1statements1elseifexpression2statements2
20、elsestatements3endswitch开关分支语句switchexpressioncasetest1statements1casetest1statements1otherwisestatements3end例10-13某商场对顾客所购买的商品实行打折销售。程序如下:price=input(请输入商品价格);switchfix(price/100)case0,1%价格小于200rate=0;case2,3,4%价格大于等于200但小于500rate=3/100;casenum2cell(5:9)rate=5/100;casenum2cell(10:24)rate=8/100;case
21、num2cell(25:49)rate=10/100;otherwiserate=14/100;endprice=price*(1-rate)3循环结构语句for循环语句forv=expressionstatementsendwhile循环语句whileexpressionstatementsend例10-14一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。程序如下:form=100:999m1=fix(m/100);%求m的百位数字m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);%求m的个位数字ifm=m1*m1*m1+m2*
22、m2*m2+m3*m3*m3disp(m)endend三、常用图形命令1、绘图函数plot(x,y,s)plot(x1,y1,s1,x1,y2,s2,)例10-16在0 x2区间内,绘制曲线y=2e-0.5xcos(4x)程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)例10-17分析下列程序绘制的曲线。x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=x
23、1;x2;x3;y=y1;y2;y3;plot(x,y,x1,y1-1)2、坐标系调整函数MATLAB的绘图函数可根据要绘制曲线数据的范围自动选择合适的坐标系,使得曲线尽可能清晰地显示出来。一般情况下用户可以不必自己选择绘图坐标系。如果用户觉得自动选择的坐标系不理想,则可用函数axis()选择新的坐标系。axis(xmin,xmax,ymin,ymax,zmin,zmax)坐标有最小值(xmin,ymin,zmin)与最大值(xmax,ymax,zmax)axis函数功能丰富,常用的格式还有:axisequal:纵、横坐标轴采用等长刻度。axissquare:产生正方形坐标系(缺省为矩形)。a
24、xisauto:使用缺省设置。axisoff:取消坐标轴。axison:显示坐标轴。给坐标加网格线用grid命令来控制。gridon/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。给坐标加边框用box命令来控制。boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。3、图形标注函数title(text)为图形添加标题,函数的输入参数text为要添加的标注文本。xlabel(text)为x轴加标注ylabel(text)为y轴加标注zlabel(text)为z轴加标注text(x,y,string)在图形坐标为(x,y)位置处
25、添加文本字符串。legend(图例1,图例2,)函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。4、多次重叠绘制图形在实际应用中,还会有在已经存在的图上再重叠绘制一条或多条曲线的情况。为此。MATLAB提供了以下命令:holdon指令的功能是使当前轴与图形保持不变,准备此后在此图上再叠加绘制的新曲线。holdoff指令的功能是使当前轴与图形不再具备不被刷新的功能。5、图形窗口的分割MATLAB提供了在一个图形窗口显示几幅图的函数subplot(),它把整个图形窗口分割成多个字窗口来实现,其格式为:subplot(m,n,i)其功能是:把窗口分割成m行与n列的子窗口,并选定第i个窗口为当前窗口。例10-21subplot实例。x=0257101215172021;y=0.10.20.50.60.911.21.261.221.2;subplot(2,2,1),plot(x,y)%画左上角的图subplot(2,2,2),plot(x+2,y)%画右上角的图subplot(2,2,3),plot(x,y+2)%画左下角的图subplot(2,2,4),plot(x+2,y+2)%画右下角的图