目录

if-else-end 结构

switch - case - otherwise - end 结构

for 循环

while 循环

try - catch 结构

其他中断、暂停语句


下面主要记录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

【 MATLAB 】程序流程控制语句格式简记_程序暂停

clear;
clc;
for i = (1:10)'
    a = i;
end

【 MATLAB 】程序流程控制语句格式简记_for循环_02

for i = [1 2 3;4 5 6;7 8 9]
    a = i;
end

 

【 MATLAB 】程序流程控制语句格式简记_可执行_03

从运行结果可以看出,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 】程序流程控制语句格式简记_程序暂停_04

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

【 MATLAB 】程序流程控制语句格式简记_程序暂停_05

当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

可执行的时候,出现如下:

【 MATLAB 】程序流程控制语句格式简记_编程技巧_06

【 MATLAB 】程序流程控制语句格式简记_编程技巧_07

可见,这种说法是错误的,这里在这里指出来。