1 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
Matlab語(yǔ)言編寫的可以在Matlab環(huán)境中運(yùn)行的程序稱為 M 文件。M 文件用擴(kuò)展名.m結(jié)尾,可在命令行中執(zhí)行,也可被其它程序調(diào)用,我們可以使用任何文本編輯器編輯M文件。
M文件分為兩種:命令文件和函數(shù)文件,它們有各自的特點(diǎn)。
1.5.1 命令文件
命令文件沒有輸入?yún)?shù)也沒有輸出參數(shù),只是一些Matlab命令和函數(shù)的組合。命令文件可以操作工作空間的變量,也可以生成新的變量,但是當(dāng)命令文件執(zhí)行結(jié)束后新變量將保存在工作空間中,不會(huì)被自動(dòng)清除。
例2-20:編寫命令文件test_com.m,用于求解小于2000且為2的整數(shù)次冪的正整數(shù)。
解:
%test_com.m
F(1)=2;
k=1;
while F(k)<1000
F(k+1)= 2*F(k);
k=k+1;
end
F,k
為了能夠在命令窗口執(zhí)行test_com命令,可以建立一個(gè)\MySample子目錄,然后用命令窗口的【File】|【Set Path】菜單將該目錄加入的Matlab的搜索目錄中。這樣就可以直接在Matlab命令窗口鍵入test_com執(zhí)行這個(gè)命令,其運(yùn)行結(jié)果為:
F = Columns 1 through 6
2 4 8 16 32 64
Columns 7 through 10
128 256 512 1024
k =10
1.5.2 函數(shù)文件
函數(shù)接收輸入?yún)?shù),返回輸出參數(shù)。函數(shù)文件與程序文件類似也是以 逗.m地 為擴(kuò)展名的文本文件,而程序文件與函數(shù)文件的主要區(qū)別在于,函數(shù)允許通過數(shù)值進(jìn)行參數(shù)傳遞,而且函數(shù)使用局部變量而不是全局變量操作。另外函數(shù)文件的第一行必須包括 逗function地 這個(gè)關(guān)鍵字。函數(shù)文件的文件名必須和函數(shù)定義的函數(shù)名稱相同。
MATLAB的函數(shù)M文件通常由以下幾個(gè)部分組成:
1 函數(shù)定義行
函數(shù)M文件的第一行用關(guān)鍵字逗function地把M文件定義為一個(gè)函數(shù),并指定它的名字,并且與文件名必須相同,同時(shí)定義了函數(shù)的輸入和輸入?yún)?shù)。輸入?yún)?shù)的定義用小括號(hào)(),如果有多個(gè)輸入?yún)?shù)則用逗號(hào)分隔;輸出參數(shù)的定義用中括號(hào)[],如果有多個(gè)輸出參數(shù)則用逗號(hào)分隔。
2 H1行
所謂H1行指幫助文本的第一行,它緊跟在定義行之后并以逗%地符號(hào)開頭,用于概括說明函數(shù)名和函數(shù)的功能。在命令窗口用 lookfor 命令時(shí)將顯示所尋求函數(shù)的H1行。
3 函數(shù)幫助文本
幫助文本指位于H1行之后函數(shù)體之前的說明文本,它同樣以逗%地符號(hào)開頭,一般用來比較詳細(xì)地介紹函數(shù)的功能和用法。在命令窗口用help命令時(shí)將顯示函數(shù)的H1行和所有幫助文本。
4 函數(shù)體
是函數(shù)的主體部分,包括進(jìn)行運(yùn)行和賦值操作的所有MATLAB程序代碼,其中可以有流程控制、輸入輸出、計(jì)算、賦值、注釋以及函數(shù)調(diào)用等操作。
5 注釋
除了函數(shù)開始獨(dú)立的幫助文本外,還可以在函數(shù)體中添加對(duì)語(yǔ)句的注釋。注釋必須以逗%地符號(hào)開頭,MATLAB在編譯執(zhí)行M文件時(shí)把每一行中逗%地后面的全部?jī)?nèi)容作為注釋不進(jìn)行編譯。
1.5.3 子函數(shù)
一個(gè) M 文件中可以定義多個(gè)函數(shù),其中第一個(gè)定義的函數(shù)稱為主函數(shù),主函數(shù)名必須與M文件名相同,其它函數(shù)稱為子函數(shù)。子函數(shù)只能被定義它的文件中的函數(shù)調(diào)用,其它函數(shù)和文件不能調(diào)用。
1.5.4 局部函數(shù)
把一些文件放在private目錄下,那么這些文件中定義的函數(shù)就是局部函數(shù)。局部函數(shù)只能被其父母目錄中的函數(shù)或文件調(diào)用,其它函數(shù)和文件無權(quán)調(diào)用。
1.5.5 M文件的執(zhí)行
當(dāng)Matlab遇到一個(gè)新的名稱(命令、函數(shù)、變量)時(shí),按如下次序查找這個(gè)名稱:
(1) 當(dāng)前的工作空間;
(2) 子函數(shù)名稱;
(3) 局部函數(shù)名稱;
(4) set path指定的路徑。
要想使自己編寫的函數(shù)或命令能夠在命令窗口自由的使用,一個(gè)比較好的處理方法是建立一個(gè)目錄,并把這個(gè)目錄加到Set Path指定的目錄中,將自己編寫的 M 文件都存放到這個(gè)目錄中。
例1-21:編寫函數(shù)求。
解:function r=AddJc(n)
%AddJc.m 函數(shù)AddJc(n)求1到n的階乘的和
% n為輸入?yún)?shù),Jc為子函數(shù)
r=0; k=1;
while k<=n
r=r+Jc(k);
k=k+1;
end
%Jc(m)求解m的階乘,是文件內(nèi)部函數(shù)(子函數(shù))
function s=Jc(m)
s=1; k=1;
while k<=m
s=s*k;
k=k+1;
end
將AddJc.m保存到工作目錄中,在命令窗口可以直接使用AddJc函數(shù),但是不能使用子函數(shù)Jc。
添加回答
舉報(bào)