1. 程式人生 > >【 MATLAB 】程式流程控制語句格式簡記

【 MATLAB 】程式流程控制語句格式簡記

目錄

for 迴圈

下面主要記錄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

可執行的時候,出現如下:

可見,這種說法是錯誤的,這裡在這裡指出來。