Matlab 的判斷與循環
閱讀原文
預備知識 Matlab 的變數與矩陣
腳本文件
在講解更複雜的程序結構前,我們先來看腳本文件.腳本(script)文件 是包含若干個指令的文件,文件後綴名為 「.m」.腳本文件可以單獨執行,也在其他文件或 Command Window 中被調用(注意需要將所在文件夾添加到搜索路徑). 後者當於把被調用腳本的代碼直接插入到調用指令處,調用指令就是腳本文件的文件名.腳本中的每條命令後面應該加分號以隱藏輸出結果,若需要輸出,用 disp 函數.
>> disp(good); a = 3; disp([a = ,num2str(a)]) good a = 3
在腳本文件中,可以在行首或命令後用百分號 % 進行注釋(comment)(註:截止到 Matlab 2017b, 在英文版 Matlab IDE 中, 任何中文注釋都會在 Matlab 重啟後變為亂碼. 若要使用中文注釋, 建議使用中文操作系統和中文 Matlab).注釋是程序的說明,使程序更易讀,但在執行程序時會被忽略.
判斷結構
現在來看一段代碼(腳本文件). 要生成新的腳本文件, 可以在 Editor 菜單(圖 1 ) 的左邊單擊 New, 然後選 Script, 或者用快捷鍵 Ctrl+N. 在生成的 Editor 中輸入以下代碼
0001 a = rand(1,1); b = 0.5;0002 if a > b % a 較大0003 disp(a is larger);0004 else % b 較大0005 disp(b is larger);0006 end
這段程序用 rand 函數隨機生成一個從 0 到 1 的數,如果隨機數大於 0.5 則輸出第一段文字,否則輸出第二段文字. 不難猜測出這裡的 if用於判斷,如果條件滿足,則只執行 if 和 else 之間的指令.如果條件不滿足,則只執行 else 到 end 的指令. 注意 else 語句可以不在判斷結構中出現, 若不出現, 當判斷條件不滿足時程序將直接執行 end 後面的代碼.
要執行該代碼, 在 Editor 菜單中單擊 Run 圖標(綠色三角形), 如果代碼沒有保存, Matlab 會先彈出保存對話框. 再次強調文件必須保存在 Matlab 的搜索路徑下.
elseif 語句可用於在判斷結構中產生多個分支, 如
0001 a = rand(1,1);0002 if a > 0.90003 disp(a in (0.9, 1]);0004 elseif a > 0.60005 disp(a in (0.6, 0.9]);0006 elseif a > 0.30007 disp(a in (0.3, 0.6]);0008 else0009 disp(a in [0, 0.3]);0010 end
這個程序用於判斷隨機數 a 的區間. 若 if 的條件判斷成功, 判斷結構就只執行 if 到第一個 elseif 之間的命令. 若 if 判斷失敗, 程序就繼續判斷第一個 elseif 中的條件, 若判斷成功, 就只執行第一個 elseif 到第二個 elseif 之間的命令, 以此類推. 如果 if 和所有的 elseif 條件都判斷失敗, 則執行 else 後面的命令.
循環結構
我們先來看 for 循環
0001 for ii = 1:30002 disp([ii^2 = num2str(ii^2)]);0003 end
運行結果為
ii^2 = 1 ii^2 = 4 ii^2 = 9
容易看出這段代碼被執行了 3 次,循環變數 ii 按順序取 1:3 中的一個矩陣元.注意選取 ii 作為變數名是為了與虛數單位區分,當然也可以選擇其他變數名.再來看一個稍複雜的循環
(剩下部分見頂部的「閱讀原文」)
推薦閱讀: