MATLAB 支援二種條件指令(Branching Command,或中譯成「分支指令」),一種是 if-then-else 條件指令,另一種是 MATLAB 在第五版之後開始支援的 switch - case - otherwise 條件指令,以下分述之。
最常用的條件指令是 if - then - else,其使用語法為:
if 條件式
運算式一;
else
運算式二;
end
當條件式成立時,MATLAB 將執行運算式一,否則,就執行運算式二。若不需使用運算式二,則可直接省略 else 和運算式二。例如:在數值運算的過程中,若變數值為 NaN(即 Not A Number )時,我們要立刻印出警告訊息,可輸入如下:
在上例中,isnan(x) 可用於判斷 x 是否為 NaN,若是,則傳回 1(真),否則即傳回 0(偽)。
在下例中,我們可根據向量 y 的元素值為奇數或偶數,來顯示不同的訊息:
上述的 if - then - else 為雙向條件,亦即程式只會執行「運算式一」或「運算式 二」,不會有第三種可能。
MATLAB 亦可執行多向條件,其使用語法為:
if 條件式一
運算式一;
elseif 條件式二
運算式二;
elseif 條件式三
運算式三;
else
運算式四;
end
可見若要進行更多向的條件,只需一再重覆 elseif 即可。例如,欲判斷 y 向量之元素是屬於 3n、3n+1、 或 3n+2,可輸入如下:
我們也可以使用矩陣於條件式中,此時必需在矩陣元素皆不為零時,條件式才算成立。換句話說:「if x, expression; end」完全等效於「if all(x(:)), expression; end」。但是必需注意的是:當 x 是空矩陣時,條件式將永遠不成立。
MATLAB 也支援 switch-case-otherwise 的多向條件指令,其使用語法如下:
switch expression
case value(1)
statement(1)
case value(2)
statement(2)
...
case value(n-1)
statement(n-1)
otherwise
statement(n)
end
在上述語法中,expression 為一數值或字串,當其值和 value(k) 相等時,MATLAB 即執行 statement(k) 並跳出 switch 指令。若 expression 不等於 value(k),k=1, 2, …, n-1,則 MATLAB 會執行 statement(n) 並跳出 switch 指令。例如:欲根據月份來判斷其季別,可輸入如下:
在上例中,我們省略了 otherwise 敘述。如果 expression 是字串,那麼若要在 case 之後比對多個字串,就必需使用字串的異值陣列(Cell Arrey of Strings),例如:
一般而言,switch–case–otherwise 的執行效率優於 if–then–else 。因此,我們應該多多使用 switch–case–otherwise。
MATLAB程式設計:入門篇