MATLAB程序的流程控制

上传人:豆浆 文档编号:50738260 上传时间:2018-08-10 格式:PPT 页数:40 大小:368.50KB
返回 下载 相关 举报
MATLAB程序的流程控制_第1页
第1页 / 共40页
MATLAB程序的流程控制_第2页
第2页 / 共40页
MATLAB程序的流程控制_第3页
第3页 / 共40页
MATLAB程序的流程控制_第4页
第4页 / 共40页
MATLAB程序的流程控制_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《MATLAB程序的流程控制》由会员分享,可在线阅读,更多相关《MATLAB程序的流程控制(40页珍藏版)》请在金锄头文库上搜索。

1、复习:复习:Matlab Matlab 编程编程q Matlab 编程简介u Matlab 作为一种广泛应用于科学计算的工具软件,不仅 具有强大的数值计算、符号计算、矩阵运算能力和丰富的 绘图功能,同时也具有和 C、FORTRAN 等高级语言一样 进行程序设计。u 在 Matlab 程序设计中,要充分利用 Matlab 数据结构 的特点,提高编程效率。u 利用 Matlab 的程序控制功能,可以将有关 Matlab 命 令编成程序存储在一个文件中(M 文件),然后在命令 窗口中运行该文件,Matlab 就会自动依次执行文件中的 命令,直到全部命令执行完毕。q 用 Matlab 语言编写的程序称

2、为 M 文件。q M 文件是由若干 Matlab 命令组合在一起构成的,它可以 完成某些操作,也可以实现某种算法。事实上,Matlab 提供 的内部函数以及各种工具箱,都是利用 Matlab 语言开发的 M 文件。用户也可以结合自己的工作需要,开发自己的程序 或工具箱。q M 文件根据调用方式的不同可以分为两类:u Script:脚本文件/命令文件 u Function:函数文件 M M 文件文件q M 文件以 .m 为扩展名。q M 文件是一个文本文件,可以用任何文本编辑器来建 立和编辑,通常使用 Matlab 自带的 M 文件编辑器。M M 文件的建立与打开文件的建立与打开q 新建一个 M

3、 文件u 菜单操作 ( File New M-File ) u 命令操作 ( edit M 文件名 ) u 命令按钮 ( 快捷键 )q 打开已有的 M 文件u 菜单操作 ( File Open ) u 命令操作 ( edit M 文件名 ) u 命令按钮 ( 快捷键 ) u 双击 M 文件 u 在命令窗口中输入 f2cs,即可执行该 M 文件。例:编写一个命令文件将华氏温度转化为摄氏温度命令文件举例命令文件举例clear; % 清除当前工作空间中的变量 f=input(Please input Fahrenheit temperature:); c=5*(f-32)/9; fprintf(Th

4、e centigrade temperature is %gn,c);u 新建一个 M 文件 f2cs.m,内容如下:命令文件运行后,文件中所产生的所有变量都驻 留在 Matlab 当前工作空间,可以用 whos 查看。function 输出形参列表=函数名(输入形参列表)% 注释说明部分(可选) 函数体语句(必须)u 第一行为引导行,表示该 M文件是函数文件u 函数名的命名规则与变量名相同 ( 必须以字母开头 )u 当输出形参多于一个时,用方括号括起来u 函数必须是一个单独的 M文件u 函数文件名必须与函数名一致u 以百分号开始的语句为注释语句函数文件函数文件q 函数文件由 function

5、 语句引导例1 编写函数文件求半径为r的圆的面积和周长。函数文件如下: function s,p=fcircle(r) % calculate the area and perimeter of a circle of radii r % r ,s ,p分别为圆的半径、面积以及周长 s=pi*r*r; p=2*pi*r;q 函数调用的一般格式输出实参列表=函数名(输入实参列表)u 函数调用时,实参的顺序应与函数定义时的形参的顺 序一致。 u 函数可以嵌套调用,即一个函数可以被其它函数调用 ,甚至可以被它自身调用,此时称为递归调用。u 函数所传递的参数具有可调性,Matlab 用两个永久变 量

6、nargin 和 nargout 分别记录调用该函数时的输入实 参和输出实参的个数。函数调用函数调用q 程序控制结构有三种:顺序结构、选择结构和循 环结构。任何复杂的程序都由这三种基本结构组成.u 顺序结构MM文件程序的流程控制文件程序的流程控制l 按排列顺序依次执行各条语句,直到程序的最后。l 这是最简单的一种程序结构,一般涉及数据的输入输 出、数据的计算或处理等。例 : A=input(Please input A: )u 数据的输入:inputA=input(提示信息)l 其中 提示信息 为字符串, l 该命令要求用户输入 A 的值 (可以是数或字符串)数据输入 inputA=input

7、(提示信息, s)注:此时输入的字符串不要加单引号!l 如果是输入字符串,也可以使用下面的方法name=input(Whats your name? , s)例 :disp(X)输出变量 X 的值,可以是数值矩阵或字符串 B=1 2 3; 4 5 6; 7 8 9; disp(B)数据输出 dispu 数据的输出:disp A=Hello,Tom !; disp(A)例 : 例 求一元二次方程ax2 +bx+c=0的根。程序如下:function x = myfun3(a,b,c)a=input(请输入系数a: );b=input(请输入系数b: );c=input(请输入系数c: );d=b

8、*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);数据输出 fprintffprintf(fid,format,variables)按指定的格式将变量的值输出到指定的文件u 数据的输出:fprintfl fid 为文件句柄,若缺省,则将变量的值输出到屏幕上 l format 用来指定数据输出时采用的格式,常见的有 %d ( 整数 ) %e (实数:采用科学计数法形式 ) %f (实数:采用浮点数形式) %g ( 由系统自动选取上述两种格式之一) %s ( 输出字符串) l

9、format 中还可以使用一些特殊格式,如:n ( 换行 ) t ( 制表符 ) b ( 退格 ) ( 反斜杆 ) % ( 百分号 ) 数据输出 fprintf a=Hello; b=2.4; c=100*pi; fprintf(a=%s,b=%f,c=%en,a,b,c)例 :l format 中的输出格式要与输出变量一一对应l 可以没有输出变量 fprintf( Today is Mondayn)例 : 选择结构 是根据给定的条件成立或不成立,分别执 行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 switch 语句。选择结构l 单分支结构if expression (

10、条件)statements (语句组)endif 条件语句if expression (条件)statements1(语句组1) elsestatements2(语句组2)endl 双分支结构if expression1 (条件1)statements1(语句组1) elseif expression2 (条件2)statements2(语句组2). . elseif expressionm (条件m)statementsm(语句组m) elsestatements(语句组)endl 多分支结构if 条件语句n例:编写函数,计算nfunction y=myfun4(x)nn=length(x)

11、;nfor i=1:nnif x(i)1 y(i)=x(i)2;nelseif x(i)-1 y(i)=1;nelse y(i)=3+2*x(i);nendnendl 根据表达式的不同取值,分别执行不同的语句。switch expression (表达式)case value1 (表达式1)statement1(语句组1)case value2 (表达式2)statement2(语句组2). .case valuem (表达式m)statementm(语句组m)otherwisestatement (语句组) endswitch 语句l Matlab 首先计算 expression 的值,然后

12、将它依次 与各个 case 指令后的检测值进行比较,当比较结果为 真时,就执行相应的语句组,然后跳出 switch 结构。l switch 后面的表达式 expression 的值可以是一个 标量或字符串。switch 语句l otherwise 指令可以不出现。l 如果所有的比较结果都为假,则执行 otherwise 后 面的语句组,然后跳出 switch 结构。n例 某商场对顾客所购买的商品实行打折销售,标准如下 (商品价格用price来表示): n price10000为止.fnum(1)=1;fnum(2)=1;i=2; while fnum(i) 0)summean=sum/cnt

13、endu break 和 continuel break 语句用于终止循环的执行,即跳出最内层循环 l continue 语句用于结束本次循环,进行下一次循环 l break 和 continue 一般与 if 语句配合使用其它流控制语句u returnl return 语句用于退出正在运行的脚本或函数,通常用在函数文件中。程序如下: for n=100:200 if rem(n,21)=0continue end break; End; n%n/21的余数不等于0则 继续下一次循环, 即for 循环: n继续加1, 直到余数 等于零, 跳出continue循环体例 求100,200之间第一个

14、能被21整除的整数。n = 105% 函数文件 myfun5.m function f=myfun5(n) if (n=1)f=1; elsef=n*myfun5(n-1); end% main.m % 计算 s=1!+2!+3!+4!+5! % clear; s=0; for i=1:5s=s+myfactor(i); end fprintf( s=%g n,s)例:利用函数的递归调用计算 n!递归函数举例函数所传递的参数具有可调性,Matlab 用两个永久变量 nargin 和 nargout 分别记录调用该函数时的输入实参 和输出实参的个数。参数的可调性举例参数的可调性举例functio

15、n out=ex4argin(a,b) if (nargin=1)out=a; elseif (nargin=2)out=a*b; endfunction p,q=ex4argout(a,b) if (nargout=1)p=a+b; elseif (nargout=2)p=a+b; q=a-b; endq 函数通过输入和输出参数与其它 M 文件进行数据传递。q 当函数调用完毕后,该函数文件中定义的所有局部变量都将被释放,即全部被清除。q 如果在若干个 M文件中,都把某个变量定义为全局变量,则这些函数将公共使用这一变量。所有函数都可以对它 进行存取和修改操作。q 函数文件中的变量都是局部的,即

16、一个函数文件中定义 的变量不能被另一个函数文件或其它 M 文件使用。全局变量与局部变量q 定义全局变量是 M文件间传递信息的一种手段。l 变量名列表中的各个变量用空格隔开,不能用逗号!全局变量给函数间的数据传递带来了方便,但却破坏 了函数对变量的封装,降低了程序的可读性,因而在 结构化程序设计中,全局变量是不受欢迎的。特别是 当程序较大,子程序较多时,全局变量将个程序调试 和维护带来不便,故不提倡使用全局变量。global 变量名列表全局变量的定义l 在使用全局变量的所有M文件中,都要对其所使用的全局变量进行定义。程序示例% ex4global.m clear; global a b a=1; b=3; y=mysquaresum(a,b); fprintf( a=%g, b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号