本節書摘來自異步社群出版社《matlab圖像處理超級學習手冊》一書中的第2章,第2.9節,作者:matlab技術聯盟 , 張岩 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
matlab圖像處理超級學習手冊
在matlab中,提供了很多程式流程控制語句,如資料的輸入輸出、順序結構、判斷語句、分支語句、循環語句以及其他流程控制函數。
2.9.1 資料的輸入和輸出
matlab中提供的用于資料輸入和輸出的函數分别為input函數和disp函數,下面将對其進行介紹。
1.資料的輸入
在matlab中,input函數用于實作資料的輸入,該函數的調用格式為:
其中,提示資訊是一個字元串,用于提示使用者輸入什麼樣的資料。
如果在input函數調用時采用's'選項,則允許使用者輸入一個字元串。例如,想輸入一個人的姓名,可采用如下指令:
2.資料的輸出
在matlab中,disp函數用于實作資料的輸出,該函數的調用格式為:
其中輸出項既可以為字元串,也可以為矩陣。
當用disp函數顯示矩陣時,将不顯示矩陣的名字,而且其格式更緊密,且不留任何沒有意義的空行。
【例2-26】求一進制二次方程ax2+bx+c=0的根。
2.9.2 順序結構
順序結構是最簡單的程式結構,系統在編譯程式時,按照程式的實體位置順序執行。這種程式的優點是容易編制,缺點是結構單一、能夠實作的功能有限。例如:
2.9.3 判斷語句
在matlab中,判斷語句可以使程式中的一段代碼隻在滿足一定條件時才執行。if與else或elseif連用,偏向于是非選擇,當某個邏輯條件滿足時執行if後的語句,否則執行else語句。
1.結構為if…end
當程式隻有一個判斷語句時,可以選擇if…end結構,此時程式結構為:
隻有一個判斷語句,其中的表達式為邏輯表達式,當表達式為真時,執行相應的語句,否則,直接跳到下一段語句。語句中的end是決不可少的,沒有它,在邏輯表達式為0時,就找不到繼續執行程式的入口。
【例2-27】判斷輸入的兩個參數a和b是否都大于0,是則傳回“a和b都大于0”,否則不傳回,程式最後傳回“否”。
disp('否');
2.結構為if…else…end
當程式有兩個選擇時,可以選擇 if…else…end 結構, 此時程式結構為:
當判斷表達式為真時,執行程式塊1,否則執行程式塊2。
【例2-28】判斷輸入的兩個參數a和b是否都大于0,是則傳回“a和b都大于0”,如果不全大于0,則顯示“a和b不全都大于0”。
下面的例子為分段函數值的計算。
3.結構為if…elseif…else…end
當程式的判斷包含多個選擇時,可以采用if…elseif…else…end結構,此時程式結構為:
其中,可以包含任意多個 elseif 語句。
【例2-29】判斷輸入學生成績的所屬等級:60以下不合格,60~70中等,70~89良好,90以上優秀。
2.9.4 分支語句
在matlab 中,還提供了的另一種多選擇語句,即分支語句。分支語句的結構為:
其中,分支語句為一個變量(數值或者字元串變量),如果該變量的值與某一條件相符,則執行相應的語句,否則,執行 otherwise 後面的語句。在每一個條件中,可以包含一個條件語句,也可以包含多個條件,當包含多個條件時,以單元數組的形式表示條件。
【例2-30】任意底的對數的實作。
【例2-31】某商場對顧客所購買的商品實行打折銷售,标準為:小于200(沒有折扣),200~500(5%折扣),500~1 000(8%折扣),1 000~2 500(15%折扣),2 500~5 000(20%折扣),大于等于5 000(25%折扣)。輸入所售商品的價格,求其實際銷售價格。
2.9.5 for循環語句
在matlab中,for語句調用的基本格式如下:
其中,a為循環體。
此語句表示把語句組a反複執行n次。循環次數n(需要預先指定)為:n=1+(終值-初值)/增量。在每次執行時程式中的index的值按“增量”增加。
【例2-32】用循環求解 1+2+…+99+100。

2.9.6 for語句的嵌套
for語句的嵌套也稱為循環的嵌套,或稱為多重循環結構,是指一個循環結構的循環體又包括一個循環結構。
【例2-33】建立一個100階數組,數組中的每一個元素a(k, n)滿足a(k, n)=1/(k+n-1)。
2.9.7 while循環語句
在matlab中,while 語句用于将相同的程式塊執行多次(次數不需要預先指定),當條件表達式為真時,執行程式塊,直到條件表達式為假。
while 語句的結構為:
【例2-34】用循環求解最小的m,使其滿足sumlimits_{i = 1}^m {i > 100} 。