1仅靠一条一条地输入语句,MATLAB难以实现复杂功能,为了实现诸如循环、条件、分支等功能,MATLAB利用了M文件,M文件是由一系列的MATLAB语句组成。2MATLAB实际上可以认为是一种解释性语言,用户可以在MATLAB工作环境下一条一条地键入命令,也可以直接键入用MATLAB的语言编写的M文件名,或它们结合起来使用。这样MATLAB软件对此命令或M文件中各条命令进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。所以说MATLAB语言的结构可用下式进行描述:MATLAB语言=窗口命令+M文件3MATLAB提供了丰富的库函数,库函数是根据系统编制好了的、提供用户直接使用的函数。MATLAB中常用的基本数学函数如表1-3所示。除了基本函数外,不同版本的MATLAB还增加了不同的有专门功能的库函数,也称工具箱。例如通讯工具箱、控制系统工具箱和信号处理工具箱等等。对于各种函数的功能和调用方法可使用MATLAB的联机帮肋help来查询,其使用格式为help函数名1.2.2MATLAB的库函数4表1-3MATLAB的基本数学函数函数名含义函数名含义sin()正弦sqrt()平方根cos()余弦real()实部tan()正切imag()虚部asin()反正弦conj()复数共轭acos()反余弦round()4舍5入到整数atan()反正切fix()舍入到最接近0的整数atan2()第四象反正切floor()舍入到最接近-∝的整数sonh()双曲正弦ceil()舍入到最接近+∝的整数cosh()双曲余弦sign()符号函数tanh()双曲正切rem()留数exp()自然指数bessel()贝塞尔函数log()自然对数gamma()伽吗函数logl0()以10为底的对数rat()有理逼近abs()绝对值或模rand()随机数51.2.3MATLAB的磁盘文件由于MATLAB本身可以被认为是一种高效的语言,所以用它可编写出具有特殊意义的磁盘文件来。这些磁盘文件是由一系列的MATLAB语句组成,它既可能是由一系列窗口命令语句构成的文本文件,又可以是由各种控制语句和说明语句构成的函数文件。由于它们都是由ASCII码构成的,其扩展名均为“.m”,故统称为M文件。6由于M文件具有普通的文本格式,因而可以使用系统认可的文本文件编辑器来建立M文件,如dos下的edit,windows的记事本和word等。而一般常用且最为方便的是使用MATLAB提供的M文件编辑/调试器。M文件的建立与打开71、建立新的M文件为建立新的M文件,启动MATLAB的M文件编辑/调试器。(1)命令按钮操作。单击MATLAB主窗口工具栏上的NewM-File(新建)命令按钮,屏幕上将出现M文件编辑器窗口。(2)菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现M文件编辑器窗口。8M文件编辑器92、编写或修改后的M文件的保存用鼠标左键单击MATLAB文件编辑器窗口工具栏的“存盘”图标。(1)若是修改后的M文件,则完成了保存。(2)若是新编写的M文件,则弹出对话框,输入文件名后,则完成了保存。103、打开已有的M文件(1)命令按钮操作。单击MATLAB主窗口工具栏上的OpenFile命令按钮,再从弹出的对话框中选择所需打开的M文件。(2)菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。打开的M文件在M文件编辑器窗口内。可以对它进行编辑修改,编辑完成后,将M文件存盘。11M文件的语法类似于C语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,MATLAB是解释性的编程语言。M文件包括文本文件和函数文件。独立的M文件—称文本文件可调用M文件—称函数文件M文件121.文本文件文本文件由一系列的MATLAB语句组成,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。在MATLAB的提示符下直接键入文本文件名,便可自动执行文件中的一系列命令,直至给出最终结果。文本文件在工作空间中运算的变量为全局变量。13例1-1求函数在x=-4时的值。解首先打开M文件编辑器,建立以下文本文件ex1_1.m,并保存。%ex1_1.m%thisisanMfileforcalculaterssqrt︱x︱+x^3x1=abs(x);x2=sqrt(x1)+x^3;y=x23xxy14当文本文件ex1_1.m建立后,在MATLAB命令窗口中输入以下命令:x=-4;ex1_1结果显示:y=-62这里执行的中间变量x1,x2都被保存下来,这与函数文件是不同的。152.函数文件函数文件的功能是建立一个函数,且这个函数可以同MATLAB的库函数一样使用,它与文本文件不同,在一般情况下不能单独键入函数文件的文件名来运行一个函数文件,它必须由其它语句来调用,函数文件允许有多个输入参数和多个输出参数值,其基本格式如下:function[f1,f2,f3,…]=fun(x,y,z,…)注释说明语句函数体语句其中:x,y,z,…是形式输入参数;而f1,f2,f3,…是返回的形式输出参数值;fun是函数名。16实际上,函数名一般就是这个函数文件的磁盘文件名,注释语句段的内容同样可用help命令显示出来。调用一个函数文件只需直接使用与这个函数一致的格式[y1,y2,y3,…]=fun(a,b,c,…)其中:a,b,c,…是相应的实际输入参数,而y1,y2,y3,…是相应的实际输出参数值。17例1-2求函数在x1=-2,x2=3,x3=1时的值解首先建立函数文件ex1_2.m%ex1_2.mfunction[y1,y2]=ex1_2(x1,x2,x3)z1=3*x1^2;z2=x2+x3;y1=z1+z2;y2=z1-z2;322123221133xxxyxxxy18当函数文件ex1_2.m建立后,在MATLAB命令窗口中输入以下命令:a1=-2;a2=3;a3=1;[b1,b2]=ex1_2(a1,a2,a3)则显示结果为b1=16b2=819函数文件中定义的变量为局部变量,也就是说它只在函数内有效。即在该函数返回后,这些变量会自动在MATLAB工作空间中清除掉,这与文本文件是不同的,但可通过命令global<变量>来定义一个全局变量。函数文件与文本文件另一个区别在于其第一行是由function开头的,且有函数名和输入形式参数与输出形式参数,若是没有这一行的磁盘文件就是文本文件。201.2.4输入与输出函数如果用户想在计算的过程中给计算机输入一个参数,则可以使用input()函数来进行,该函数的调用格式为变量名=input(提示信息,选项)这里提示信息可以为一个字符串显示,它用来提示用户输入什么样的数据,input()函数的返回值赋给等式左边的变量名。21例如,用户想输入A矩阵,则可以采用下面的命令来完成A=input('EntermatrixA=');执行该命令时首先给出EntermatrixA=提示信息,然后等待用户从键盘按MATLAB格式输入矩阵,并把此值赋给A。如果在input()函数调用时采用了‘s’选项,则允许用户输入一个字符串,此时需用单引号将所输字符串括起来。22MATLAB提供的命令窗口输出函数主要有disp()函数,其调用格式为disp(变量名)其中,变量名既可以为字符串,也可以为变量矩阵。例如s='HelloWorld'结果显示:s=HelloWorlddisp(s)结果显示:HelloWorld23MATLAB提供了较实用的字符串处理及转换的函数,例如int2str()函数就可以方便在将一个整形数据转换成字符串形式,该函数的调用格式为cstr=int2str(n)其中:n为一个整数,而该函数将返回一个相关的字符串cstr。例如:num的数值为num=15,而在输出中还想给出其它说明性附加信息,则可利用下面的语句num=15;disp(['Thevalueofnumis',int2str(num),'!ok'])结果显示:Thevalueofnumis15!ok24与int2str()函数的功能及调用方式相似,MATLAB还提供了num2str()函数,可以将给出的实型数据转换成字符串的表达式,最终也可以将该字符串输出出来。例如给绘制的图形赋以数字的标题时可采用下面的命令c=(70-32)/1.8;title(['Roomtemperatureis',num2str(c),'degreesC'])则会在当前图形上加上题头标注Roomtemperatureis21.1111degreesC251.2.5数值显示格式MATLAB可以使用format命令来改变显示格式,其调用格式为format控制参数其中:控制参数决定显示格式,控制参数如表1-5表示。26控制参数意义例100/3short5位有效数字,同默认显示33.3333long长格式,15位有效数字33.33333333333334shorte短格式,5位有效数字的浮点数3.3333e+001longe长格式,15位有效数字的浮点数3.333333333333334e+001hex十六进制格式4040aaaaaaaaaaabbank2个十进制位33.33+正、负或零+rat有理格式100/3表1-5format命令的控制参数27小结:文本文件和函数文件的区别(1)文本文件是一串指令的集合,没有输入输出参数;函数文件第一行是由function开头的,且有函数名和输入形式参数与输出形式参数,即函数文件需要输入变量,返回输出变量。(2)文本文件在MATLAB的提示符下直接键入文本文件名;函数文件在一般情况下不能单独键入函数文件名来运行,它必须由其它语句来调用。(3)文本文件在工作空间中运算的变量为全局变量;函数文件中定义的变量为局部变量,它只在函数内有效。281.3MATLAB的控制语句MATLAB是一个功能极强的高度集成化程序设计语言,它具备一般程序设计语言的基本语句结构,并且它的功能更强,由它编写出来的程序结构简单,可读性强。和其它高级语言一样,MATLAB也提供了条件转移语句、循环语句等一些常用的控制语句,从而使得MATLAB语言的编程显得十分灵活。291.3.1循环语句在实际计算中,经常会遇到许多有规律的重复计算,此时就要根据循环条件对某些语句重复执行。MATLAB中可以使用两种循环语句:for语句和while语句30for循环语句for语句的基本格式为:for循环变量=表达式1:表达式3:表达式2循环语句组end其中,循环变量可以取做任何MATLAB变量。首先将循环变量的初值赋成表达式1的值,判断若循环变量的值介于表达式1和表达式2的值之间,则执行循环体中的语句,否则结束循环语句的执行。执行完一次循环体中的语句之后,则会将循环变量自增一个表达式3的值,然后再判断循环变量是否介于表达式1和表达式2之间,如果满足就再执行循环体语句直至不满足为止。这时将结束循环语句的执行,而继续执行后面的语句。如果表达式3的值为1,则可省略表达式3。31例1-3求的值。解MABLAB程序如下:%ex1_3.mmysum=0;fori=1:100mysum=mysum+i;endmysum运行结果显示:mysun=50501001ii32while循环语句将循环体中的语句循环执行不定次数。其基本格式为:while表达式循环体语句end其中,表达式一般是由逻辑运算和关系运算组成的,以判断循环的进行和停止。若表达式的值非0(逻辑为真),则执行循环体语句;执行后再判断表达式是否仍然成立,若不成立,则跳出循环,向下继续执行。While循环语句33例:用while循环语句求1~100间整数的和。sum=0;i=1;whilei=100sum=sum+i;i=i+1;endsum运行结果显示:sum=505034MA