【 MATLAB 】程式流程控制語句格式簡記
目錄
下面主要記錄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
可執行的時候,出現如下:
可見,這種說法是錯誤的,這裡在這裡指出來。