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