目录
专题三 MATLAB程序流程控制
在MATLAB中,程序文件的扩展名为.m,所有程序文件也成为m文件。
程序文件分为脚本文件和函数文件,其中国脚本文件是可以在命令行窗口直接执行的文件,也叫命令文件。
函数文件是定义一个函数,不能直接执行,必须以函数调用的方式来调用它。
文件的建立
- 用命令按钮创建文件。
-
用edit命令创建文件
>>edit test
在当前文件夹下创建了一个test.m的文件,输入并打开matlab进行编辑
3.1 顺序结构程序
-
数据的输入
A=input(“请输入变量A的值”);
-
数据的输出
disp(输出项)
-
程序的暂停
pause(延迟秒数)
若要强行终止程序的运行可以使用Ctrl+C命令
3.2 用if语句实现选择结构
-
单分支if语句
语句格式:
if 条件
语句组
end
当条件是标量时,非0表示条件成立,0表示条件不成立。
当条件是矩阵时,如果矩阵非空且不包含零元素,则条件成立否则不成立
-
双分支if语句
语句格式:
if 条件
语句组1
else
语句组2
end
-
多分支if语句
语句格式:
if 条件1
语句组1
else if 条件2
语句组2
……
elseif 条件m
语句组m
else
语句组n
end
3.3 用switch语句实现选择结构
语句格式:
switch 表达式
case 结果表达式1
语句组1
case 结果表达式2
语句组2
……
case 结果表达式m
语句组m
otherwise
语句组n
end
switch表达式应该是一个其值可以列举的表达式
case结果表为switch表达式的取值,当取值有多个时,用单元数据表示。
3.4 用for语句实现循环结构
格式:
for 循环变量=表达式1:表达式2:表达式3
循环体语句
end
表达式1的值为初值,表达式2的值为步长,表达式3的值为终值
for语句针对向量的每一个元素执行一次循环体
退出循环后,循环变量的值就是向量中最后的元素值
当向量为空时,循环体一次也不执行
按照MATLAB的定义,for语句的循环变量也可以是一个列向量,其格式为:
for循环变量=矩阵表达式
循环体语句
end
3.5 用while语句实现循环结构
格式:
while 条件
循环体语句
end
break和continue语句:
break语句用来跳出循环体,结束整个循环。
continue语句用来结束本次循环,接着进行下一次是否执行循环的判断。
循环的嵌套
如果一个循环结构的循环体又包含一个循环结构,就称为循环的嵌套,或称为多重循环结构。
3.6 函数文件的定义与调用
函数文件的基本结构
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
当有多个形参时,形参之间用逗号分隔,组成形参表。当输出形参多于一个时,应该用方括号括起来,构成一个输出矩阵。
函数文件名通常由函数名再加上扩展名m组成,函数文件名与函数名也可以不相同。
举例:编写函数文件,求半径为r的圆的面积和周长。
function [s,p]=fcircle(r)
s=pi*r*r;
p=2*pi*r;
函数调用
调用格式:
[输出实参表]=函数名[输入实参表]
在调用函数时,函数输入输出参数称为实际参数,简称实参。
我们在MATLAB命令行窗口调用前面的fcircle函数
>>[s,p]=fcircle(10)
匿名函数
基本格式:
函数句柄变量=@(匿名函数输入参数)匿名函数表达式
函数句柄变量相当于这个匿名函数的别名,@是创建这个句柄函数的运算符
除了可以给函数表达式定义函数句柄,我们也可以给已存在的函数定义函数句柄,并利用函数句柄来调用函数。
3.7 函数的递归调用
如果在一个函数的定义中调用了其他函数,这就是函数的嵌套调用,如果调用的函数是自己本身称为函数的递归调用。
-
直接递归调用
在一个函数中直接调用这个函数本身
-
间接递归调用
通过嵌套调用其他函数,在其他函数中又调用这个函数本身
3.8 函数参数用与变量的作用域
函数参数的可调性
在调用函数时,MATLAN有两个预定义变量:
nargin:输入实参的个数
nargout:输出实参的个数
局部变量:在程序中只在特定过程或函数中可以访问的变量
全局变量:作用域是整个MATLAB工作空间,也就是全程有效,所有的函数都可以对它进行存取和修改
全局变量定义格式:global 变量名