MATLAB 程式設計/控制流
IF 語句可用於在邏輯測試(表示式)返回真值(除 0 外的任何值)時執行程式碼。在 IF 語句之後新增的 ELSE 語句在表示式為假(0)時執行。
語法
if expression
statements
elseif expression2
statements
end
SWITCH 語句用於根據單個變數的值執行多個可能的運算集之一。它們旨在取代基於相同變數的巢狀 IF 語句,因為巢狀 IF 語句可能變得非常繁瑣。語法如下
switch variable
case value1
statements(1)
case value2
statements(2)
...
otherwise
statements
end
END 關鍵字只在整個 SWITCH 塊結束後才需要,而不是在每個 CASE 之後。如果您終止 SWITCH 語句並在其後使用 CASE 語句,您將收到一個錯誤提示,提示 CASE 關鍵字的使用無效。如果發生這種情況,可能是因為您刪除了迴圈或 IF 語句,但忘記刪除相應的 END 關鍵字,從而導致多餘的 END 關鍵字。因此 MATLAB 認為您在預期之外的地方結束了 SWITCH 語句。
OTHERWISE 關鍵字會對除 CASE 語句中指定的那些值之外的任何 VARIABLE 值執行特定的程式碼塊(通常是錯誤訊息)。
習慣使用 C 風格語言的程式設計師通常會在每個 CASE 之後新增 BREAK 語句。在 C、C++ 和 Java 中,如果不新增 BREAK 語句,程式碼將在上面的程式碼中繼續執行,如果 VALUE1 為真,那麼 STATEMENTS(1)、STATEMENTS(2) 等將在 C 風格語言中執行。然而,在 MATLAB 中,只有 STATEMENTS(1) 會執行。
TRY/CATCH 語句在 TRY 塊中執行特定的程式碼塊。如果它因錯誤或警告而失敗,則此程式碼的執行將終止,並將執行 CATCH 塊中的程式碼,而不是僅僅向螢幕報告錯誤並終止整個程式。這在除錯和過濾錯誤計算時很有用,例如,如果您不小心嘗試查詢奇異矩陣的逆矩陣,而您不希望完全結束程式。
語法
try
statements
catch
statements
end
請注意,與其他控制流語句不同,TRY/CATCH 塊不依賴於任何條件。因此 TRY 塊中的程式碼將始終至少部分執行。TRY 塊中的程式碼並非全部都將始終執行,因為當出現錯誤時,TRY 的執行將結束。此外,如果 TRY 塊不失敗,CATCH 塊中的語句將永遠不會執行。
FOR 語句使用迭代器執行指定次數的程式碼。語法
for iterator = startvalue:increment:endvalue
statements
end
迭代器變數初始化為 STARTVALUE,並在每次遍歷迴圈時增加 INCREMENT 的值,直到達到 ENDVALUE 的值。如果省略 INCREMENT,則假定其值為 1,如以下程式碼所示
for ii = 1:3
statements
end
這將執行 STATEMENTS 三次。
WHILE 語句在特定條件評估為假或零之前執行程式碼。示例
while condition
statements
end
忘記在 WHILE 迴圈中更改條件是導致無限迴圈的常見原因。
MATLAB 包含 BREAK 和 CONTINUE 關鍵字,以便更嚴格地控制迴圈。BREAK 關鍵字將導致程式離開當前所在的迴圈,並從迴圈結束後的下一行繼續執行,無論迴圈的控制條件如何。如果程式碼位於巢狀迴圈中,它只會退出當前所在的迴圈,而不是所有迴圈。語法是在您希望中斷的迴圈中簡單地寫下 BREAK 關鍵字。
與 BREAK 相反,CONTINUE 將導致程式返回到當前所在的迴圈的開頭,並重新檢查條件,以檢視是否應該繼續執行迴圈程式碼。CONTINUE 語句後的迴圈中的程式碼在同一次遍歷中不會執行。
如果您想完全退出函式(而不是隻退出迴圈),可以在程式碼的最後一行之前使用 RETURN 關鍵字。任何輸出變數的值都會立即返回給呼叫函式。以下函式示例演示了其工作原理
function output = controlTest(doWhat)
switch doWhat
case 1
output = -1;
return;
case 2
output = 3;
end
output = output + 4;
end
呼叫
>> output = controlTest(1)
將返回 OUTPUT = -1,因為 OUTPUT 被定義為 -1,而 RETURN 語句告訴 MATLAB 立即獲取 OUTPUT 的當前值並將其傳遞迴呼叫函式。但是,呼叫
>> output = controlTest(2)
將返回 OUTPUT = 7,因為 OUTPUT 最初被定義為 3,然後為其添加了 4。由於 RETURN 語句僅在 DOWHAT=1 的情況下執行,因此它不會被呼叫,並且會執行函式的其餘部分。
請注意,如果在呼叫 RETURN 語句之前未定義輸出變數,您將收到一個錯誤提示,因此請謹慎使用此方法。