目录
switch - case - otherwise - end 结构
下面主要记录matlab中的程序流程控制格式:
if-else-end 结构
1.
if expr %expr为表达式,如果成立,则执行到end为止的所有commands,否则不执行
commands;
end
2.
if expr1
commands1;
elseif expr2
commands2;
else
commands3;
end
根据程序分支的多少,elseif的个数可以有0个到多个。
switch - case - otherwise - end 结构
switch expr
case value1
command1;
case value2
command2;
...
case valuek
commandk;
otherwise
commands;
end
otherwise建议始终保留,commands可以为空语句;
for 循环
for ix = array
commands;
end
在命令窗口中输入以下代码,体会for循环的用法。
for i = 1:10
a = i;
end
clear;
clc;
for i = (1:10)'
a = i;
end
for i = [1 2 3;4 5 6;7 8 9]
a = i;
end
从运行结果可以看出,for循环在MATLAB中和其他语言中还是有些差别的。MATLAB的for循环的机制是遍历array的列,无论这个array是向量还是矩阵。如果array是行向量,那么for就遍历它的每个元素;如果是列向量,for循环就循环一次,即遍历列向量本身;如果array是矩阵,那么for循环就遍历它的每一个列,循环n次,n是array的列数。此外,如果array是三维矩阵,那么for循环先遍历第一页的所有列,之后是第二页的所有列,等等。
while 循环
while expr //expr为真执行commands,否则退出循环
commands;
end
try - catch 结构
try
commands1;
catch ME
commands2;
end
该结构意义是执行commands1,如果不发生错误,则不用执行commands2;如果执行commands1的过程中发生了错误,那么commands2就会被执行,同时ME记录了发生错误的相关信息。
其他中断、暂停语句
MATLAB在循环体内还可以利用 continue 语句跳出位于它之后的循环体的其他指令,而执行循环的下一次迭代:
clear;
clc;
for ix = 1:5
if ix == 3
continue
end
disp( ['ix =', num2str(ix)] )
end
MATLAB还可以用break语句结束包含该指令的while或for循环体,用于跳出循环。
例如:
clc
clear
jx = 3;
for i = 1:3
if i == 2
disp( ['i = ', num2str(i)] );
break
disp( ['jx = ', num2str(jx)]);
end
end
当i = 2时,执行if - end结构中的内容,可见jx = 3,没有显示,因为程序见到break就跳出了循环。
最后一个:
pause(n)可以使程序暂停n秒后再继续执行;pause指令使程序暂停执行,等待用户按任意键继续。
最后,我在《MATLAB高效编程技巧与应用》这本书时,对于break指令,书中说:break语句还可以在if -end,switch - case,try - catch结构中使用,还给出了如下的例子:
clc
clear
jx = 3;
ix = 6;
if jx == 3
disp( ['i = ', num2str(i)] );
break
disp( ['jx = ', num2str(jx)]);
end
可执行的时候,出现如下:
可见,这种说法是错误的,这里在这里指出来。