一、if-else-end
格式:
①if expression
commands
end
如果条件为真,则执行命令组
②if expression
commands1:如果表达式为真,则执行
else
commands2:表达式为假,则执行
end
③
if expression1
commands1:如果表达式为真,则执行
elseif expression2
commands2:表达式为假,则执行
end
二,switch-case
格式: switch value
case1 test1
commands1%如果tset1=value
case2 test2
commands1%如果tset1=value
otherwise
commands%如果前面所有的值都不等于value,则执行commands,并结束该结构
end
说明:
(1)switch-case结构语法保证了至少有一组指令会被执行,
(2)switch指令之后的表达式value应为一个标量,或字符串。当标量时,用==比较,当为字符串时,会调用strcmp来进行比较
(3)如果value是一个元素数组,则matlab会把表达式的值,与元素数组的所有元素进行比较,如果元素数组中有某个元素与表达式值,相等,matlab则认为比较为真。
x=input('enter x:');
switch x
case 1
date='monday'
case 2
date='tuesday'
case 3
date='saturday'
otherwise
date='errror'
end
三、try-catch结构的具体语法形式如下
try
commands1
%命令1总是被首先执行。若正确,执行完成后结束此此结构
catch
commands2
%执行命令1时错误,则执行命令2
end
说明:
(1)只有当执行命令1错误时,才会执行命令2,try-catch只是提供了两个可供选择的命令组
(2)当执行command1发生错误时,可调用laster函数查询出错的原因,如果函数laster的运行结果为空字符串,则表示命令1执行成功
(3)如果执行命令2也发生错误,则matlab将终止该结构。
n=input('enter n');
m=input('enter m');
a=magic(n)
try
a_m=a(m,:)
-
catch
a_n=a(end,:)
end
四、for循环的具体语法结构如下
for x=array
commands
end
说明:
(1)for指令后面的变量x称为循环变量,而for与end之间的组命令commands被称为循环体,循环体执行的次数是确定的,该次数由array数组的列数确定,因此,在for循环过程中,循环次数x依次赋值为数组array的各列,每次赋值。循环体都被执行。
五、while循环
六、控制流的其他指令
1、return指令:
当被调用函数执行完之后,matlab会自动将控制权转回主函数或命令窗口,在被调用函数中插入return指令,可以强制matlab结束该函数并把控制权转出。
2、input和keyboard
input把控制权暂时交给用户,用户在键盘输入数值,字符或表达式等,enter键将键入内容传递到工作区
keyboard指令:当执行遇到keyboard指令时,matlab将控制权暂时交给键盘,用户可以由键盘输入各种matlab指令,只有当用户输入完成时,并输入return指令后,控制权才交给matlab;
3、pause
pause指令的功能为控制执行文件的暂停与恢复,其具体语法格式为:
pause:暂停执行文件,等待用户输入任意键继续
pause(n):再继续执行文件之前,暂停n秒
-----------------------------------------------------------------------------------------------------------------------------------
4、continue
结束本次循环,进行下次循环
5、breake指令
直接停止整个循环、
6error和warning
编写M文件时,常用的错误或者警告指令的具体语法
①error(‘message’):显示出错信息message,终止程序
②errrortop:错误发生后,控制程序继续执行与否的开关
③laster:显示matlab系统判断的最新出错原因,并终止程序
④warning(‘message’):显示警告信息message,继续运行程序
⑤lasrwarn:显示matlab系统给出的最新警告程序,并继续运行
matlab的匿名函数:
f=@(input1,input2……) expression
>> F=@(x,y) x*x+2*x*y+y*y;
>> whos
Name Size Bytes Class Attributes
F 1x1 32 function_handle
ans 1x1 8 double
i 1x1 8 double
sum 1x1 8 double