《第五讲 程序设计与M文件.ppt》由会员分享,可在线阅读,更多相关《第五讲 程序设计与M文件.ppt(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第五讲第五讲 程序设计与程序设计与M M文件文件MATLAB有两种工作方式:1:交互式的命令行工作方式2:M文件的程序工作方式M脚本文件和M函数文件1.M脚本文件M脚本文件的说明如下:(1)MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行;(2)M脚本文件运行产生的变量都驻留在MATLAB的工作空间中,可以很方便地查看变量,在命令窗口中运行的命令都可以使用这些变量;(3)脚本文件的命令可以访问工作空间的所有数据,因此要注意避免工作空间和脚本文件中的同名变量相互覆盖,一般在M脚本文件的开头使用“clear”命令清除工作空间的变量。例5-1 在
2、M文件编辑调试器窗口中编写M脚本文件得出10-50范围内的所有素数。%EX5_1 计算10-50内的素数cleary1=primes(50);%获得50以内的所有素数n=length(primes(10);%获得10以内素数的个数y=y1(n+1:end)在命令窗口中输入:ex5_1y=11 13 17 19 23 29 31 37 41 43 47在工作空间中就可以查看到变量y1、n和y,并可以修改和使用这些变量。M函数文件 函数文件是另一种形式的M文件,每一个函数文件都定义一个函数,MATLAB提供的标准函数大部分都是由函数文件定义的。格式:function 输出形参表=函数名(输入形参表
3、)函数体 其中以function开头的一行为引导行,表示该M文件是一个函数文件,函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数,当输出形参多于1个时,则应该用方括号括起来。M函数文件(1)关于函数文件名:函数文件名与函数名也可以不相同。当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此调用时使用函数文件名。(2)关于return语句。执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。通常,在函数文件中不使用return语句,这时被调函数执行完成后自动返回。例例 编写函数文件求半径编写函数文件求半径为为r r的圆的周长。的圆的周长。funct
4、ionp=fcirclefcircle(r)%r%r 圆半径圆半径%p%p 圆周长圆周长p=2*pi*r;p=2*pi*r;M函数文件调用 函数调用的一般格式是:输出实参表=函数名(输入实参表)要注意的是,函数调用时各实参出现的顺序、个数,要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能而实现参数传递,然后再执行函数的功能。例:r=1 2 3 4 5 y=fcirclefcircle(r
5、)返回:y=6.2832 12.5664 18.8496 25.1327 31.4159M函数文件调用 函数可以嵌套调用,即一个函数可以函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身,一个函调用别的函数,甚至调用它自身,一个函数调用它自身称为函数的递归调用。数调用它自身称为函数的递归调用。全局变量和局部变量 全局变量的作用域是整个MATLAB工作空间,是函数间传递信息的一种手段。全局变量定义:global 变量名 例:global cheng全局变量应用示例例:先建立函数文件 wadd.m,该函数将输入的参数加权相加。function f=wadd(x,y)global ALPH
6、A BETAf=ALPHA*x+BETA*y;在命令窗口中输入:global ALPHA BETA ALPHA=1;BETA=2;s=wadd(1,2)输出为:s=5选择结构1 1 单分支单分支ifif语句:语句:if if 条件条件 语句组语句组 endend 当条件成立时,则执行语句组,执行完之后继续执当条件成立时,则执行语句组,执行完之后继续执行行ifif语句的后继语句,若条件不成立,则直接执行语句的后继语句,若条件不成立,则直接执行ifif语句的后继语句。语句的后继语句。选择结构 2.2.双分支双分支ifif语句:语句:if if 条件条件 语句语句组组1 1 else else 语句
7、语句组组2 2 end end 当条件成立时,执行语句组当条件成立时,执行语句组1 1,否则执行语句组,否则执行语句组2 2,语句组,语句组1 1或语句组或语句组2 2执行后,再执行执行后,再执行ifif语句的后语句的后继语句。继语句。选择结构例题 例例:计算分段函数的值计算分段函数的值 x=input(x=input(请输入请输入x x的值的值:);:);if x=0if xA(3)&A(1)+A(3)A(2)&A(2)+A(3)A(1)p=(A(1)+A(2)+A(3)/2;s=sqrt(p*(p-A(1)*(p-A(2)*(p-A(3);disp(s);else disp(不能构成一个三
8、角形。)end运行:请输入三角形的三条边:4 5 6 9.9216例:输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。c=input(,s);if c=A&c=a&c”提示符,当键盘输入“return”后,程序才继续运行。keyboard命令可以用来在程序调试或程序执行时3.input命令 r=input(str,s)%从键盘中输入数据保存到变量r4.disp命令disp命令是较常用的显示命令,常用来显示字符串型的信息提示。5.pause命令pause命令用来使程序暂停运行,当用户按任意键才继续执行。常用于程序调试或查看中间结果,也可以用来控制执行的速度。pause的命令格式如下:pause(n)%暂停n秒