MATLAB編程基礎(chǔ)
MATLAB編程基礎(chǔ)
MATLAB有兩種常用的工作方式:一種是交互式命令操作方式,另外一種是M文件的編程工作方式。在M文件的編程工作方式下,MATLAB可以像其他高級語言一樣具有數(shù)據(jù)結(jié)構(gòu)、控制流、輸入輸出和面向?qū)ο缶幊痰哪芰?,即編寫一種擴展名為.m的MATLAB程序,簡稱M文件。M文件編程具有語法簡單、使用方便、調(diào)試容易等特點,被人們稱為第四代編程語言。
1 M文件
M文件是由MATLAB命令或函數(shù)組成的文本文件,以.m為擴展名。M文件有兩種形式,即命令文件(Script)和函數(shù)文件(Function)。命令文件是以命令和函數(shù)的結(jié)合,命令文件運行時不需要任何輸入?yún)?shù),也沒有輸出參數(shù),MATLAB自動按順序執(zhí)行命令文件中的命令。函數(shù)文件使用Function聲明的M文件,可以在文件中,輸入?yún)?shù)和返回參數(shù),一般情況下,用戶不能靠單獨輸入其文件名來運行函數(shù)文件,而必須先給出輸入?yún)?shù),然后調(diào)用M文件函數(shù)。值得注意的是,函數(shù)文件是M文件最重要的組成部分,以下主要對函數(shù)文件進行介紹。
2 M文件函數(shù)的基本結(jié)構(gòu)
MATLAB提供了3種結(jié)構(gòu)允許用戶創(chuàng)建自己的函數(shù),即M文件函數(shù)(簡稱M函數(shù))、匿名函數(shù)和內(nèi)聯(lián)函數(shù)。其中,最常用M文件函數(shù)結(jié)構(gòu)。
MATLAB語言的函數(shù)文件包含如下5個部分。
(1) 函數(shù)題頭:指函數(shù)的定義行,是函數(shù)語句的第一行,在該行中將定義函數(shù)名、輸入變量列表及輸出變量列表等。
(2) HI行:指函數(shù)幫助文本的第一行,為該函數(shù)文件的幫助主題,當使用lookfor命令時,可以查看到該行信息。
(3) 幫助信息:這部分提供了函數(shù)的完整的幫助信息,包括HI之后至第一個可執(zhí)行行或空行為止的所有注釋語句,通過MATLAB語言的幫助系統(tǒng)查看函數(shù)的幫助信息時,將顯示該部分。
(4) 函數(shù)體;指函數(shù)代碼段,也是函數(shù)的主體部分。
(5) 注釋部分:指對函數(shù)體中各語句的解釋和說明文本,注釋語句是以%引導(dǎo)的。
例如:
function[output,output2]=function—example(input1,input2) % 函數(shù)題頭
%This is function to exchange two matrices % HI行
%input1,input2 are input variables % 幫助信息
%output1,output2 are output variables % 幫助信息
output1=input2; % 函數(shù)體
output2=input1; % 函數(shù)體
%The end of this example function
3 程序流控制
MATLAB提供了5種控制程序流的結(jié)構(gòu):for循環(huán)結(jié)構(gòu)、while循環(huán)結(jié)構(gòu)、if-else-end分支結(jié)構(gòu)和switch-case結(jié)構(gòu)。由于MATLAB的這5種控制指令用法與C語言的十分類似,主要區(qū)別在于不需要用括號( )命令組括起來,而是用end來標識命令組結(jié)束。
(1)for循環(huán)結(jié)構(gòu)
for循環(huán)結(jié)構(gòu)的語法形式為:
for x=a : b : c % a為循環(huán)初值,b為循環(huán)步長,c為循環(huán)終值。
(commands1)
end
(2) while循環(huán)結(jié)構(gòu)
while循環(huán)結(jié)構(gòu)的語法結(jié)構(gòu)為:
while expression %循環(huán)判決條件
(commands1) % expression為邏輯真時,執(zhí)行組命令commands1
end
(3) if-else-end分支結(jié)構(gòu)
if-else-end指令為程序流提供了一種分支結(jié)構(gòu),指令形式如下:
if expression %判決條件;
(commands1) %expression為邏輯真時,執(zhí)行組命令commands1
else (commands2) ; %expression為邏輯假時,執(zhí)行組命令commands2。
end
(4) switch-case結(jié)構(gòu)
switch-case指令的一般語法結(jié)構(gòu)形式如下:
switch ex %ex為一標量或字符;
case test1
(commands1) %當ex等于test1時,執(zhí)行該組命令commands1,%然后跳出該結(jié)構(gòu);
case test2
……
otherwise %otherwise指令可以不存在;
(commands) %ex不等于前面所有檢測值,則執(zhí)行該組命令。
end
(5) try-catch分支結(jié)構(gòu)
try-catch指令的一般語法結(jié)構(gòu)形式如下:
try
(commands1) %該組命令commands1總被執(zhí)行;%若正確,則跳出此結(jié)構(gòu)
catch
(commands2) %僅當組命令commands1出現(xiàn)執(zhí)行錯誤時,
%組命令commands2才被執(zhí)行
end
4 Matlab函數(shù)創(chuàng)建與調(diào)試
MATLAB的M文件是通過M文件編輯/調(diào)試器窗口(Editor/Debugger)來創(chuàng)建的。單擊MATLAB桌面上的圖標,或者單擊菜單“File”—“New”—“M-file”,可打開空白的M文件編輯器,也可以通過打開已有的M文件來打開M文件編輯器。如圖A-8所示為打開已創(chuàng)建的M文件。MATLAB在Editor/Debugger窗口的Debug菜單中,提供了一些方法和函數(shù)用于M文件的調(diào)試;支持用戶進行斷點調(diào)試。同時在,用戶創(chuàng)建和調(diào)試M文件時,可以在MATLAB的命令窗口中,運行mlint函數(shù)來分析M文件中的語法錯誤以及其他可能存在的問題和不完善的地方。