資源描述:
《matlab的程序設(shè)計(jì)和調(diào)試》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第四章MATLAB的程序設(shè)計(jì)和調(diào)試4.3腳本文件和函數(shù)文件4.3.1M腳本文件(一)腳本文件的特點(diǎn):它只是一串按用戶意圖排列而成的(包括控制流向指令在內(nèi)的)MATLAB指令集合腳本文件運(yùn)行后,所產(chǎn)生的所有變量都駐留在MATLAB基本工作空間(BaseWorkspace)中。只要用戶不使用clear指令加以清除,且MATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中?;究臻g將隨MATLAB的啟動(dòng)而產(chǎn)生;只有關(guān)閉MATLAB時(shí),該基本工作空間才被刪除。(二)M腳本文件的編寫和運(yùn)行(1)編寫
2、M腳本文件的步驟點(diǎn)擊MATLAB指令窗工具條上的NewFile圖標(biāo),就可打開MATLAB文件編輯調(diào)試器MATLABEditor/Debugger,其窗口名為untitled,用戶即可在空白窗口中編寫程序。編輯完程序,點(diǎn)擊編輯調(diào)試器工具條上的保存圖標(biāo),在彈出的Windows標(biāo)準(zhǔn)風(fēng)格的“保存為”對(duì)話框中,選擇保存文件夾,鍵入新編文件的文件名,點(diǎn)【保存】鍵,就完成了文件的保存。(2)運(yùn)行文件使剛剛保存的文件所在的目錄成為當(dāng)前目錄,或讓該目錄處在MATLAB的搜索路徑上。直接在命令窗口鍵入運(yùn)行文件的文件
3、名或在編輯器窗口中直接點(diǎn)擊工具條上的運(yùn)行按鈕都可運(yùn)行該M文件。4.3.2M函數(shù)文件(一)M函數(shù)文件的特點(diǎn)從形式上看,與腳本文件不同,函數(shù)文件的第一行總是一“function”引導(dǎo)的“函數(shù)申明行(FunctionDeclarationline)”。該行還羅列出函數(shù)與外界的聯(lián)系的全部“標(biāo)稱”輸入輸出宗量。但對(duì)“輸入輸出宗量”的標(biāo)稱數(shù)目并沒(méi)有限制,既可以完全沒(méi)有輸入輸出宗量,也可以時(shí)任意數(shù)目。MATLAB允許使用比“標(biāo)稱數(shù)目”較少的輸入輸出宗量,實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用。從運(yùn)行上看,與腳本文件不同,每當(dāng)函數(shù)文
4、件運(yùn)行,MATLAB就會(huì)專門為它開辟一個(gè)臨時(shí)工作空間(Contextworkspace)。該空間稱之為函數(shù)工作空間(Functionworkspace)。所有中間變量都存放在函數(shù)工作空間中。當(dāng)執(zhí)行完文件最后一條指令時(shí),或遇到return指令,就結(jié)束該函數(shù)文件的運(yùn)行,同時(shí)該臨時(shí)函數(shù)空間及其所有的中間變量就立即被清除。函數(shù)空間隨具體M函數(shù)文件的被調(diào)用而產(chǎn)生,隨調(diào)用的結(jié)束而刪除。函數(shù)空間是相對(duì)基本空間獨(dú)立的、臨時(shí)的。在MATLAB整個(gè)運(yùn)行期間,可以產(chǎn)生任意多個(gè)臨時(shí)函數(shù)空間。假如在函數(shù)文件中,發(fā)生對(duì)某腳
5、本文件的調(diào)用,那么該腳本文件運(yùn)行產(chǎn)生的所有變量都存放于那函數(shù)空間之中,而不是存放在基本空間。4.3.3局部變量和全局變量(1)局部(Local)變量存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運(yùn)行過(guò)程中,其影響范圍僅限于該函數(shù)本身。(2)全局(Global)變量通過(guò)global指令,MATLAB也允許幾個(gè)不同的函數(shù)空間以及基本工作空間共享同一個(gè)變量。這種被共享的變量稱為全局變量。每個(gè)希望共享全局變量的函數(shù)或MATLAB基本工作空間,必須逐個(gè)用global對(duì)其具體變量加以專門定義。沒(méi)采用globa
6、l定義的函數(shù)或基本工作空間,將無(wú)權(quán)享用全局變量。補(bǔ)充說(shuō)明:如果某個(gè)函數(shù)的運(yùn)作使全局變量的內(nèi)容發(fā)生了變化,那么其它函數(shù)空間以及基本工作空間中的同名變量也隨之變化。除非與全局變量聯(lián)系的所有工作空間都被刪除,否則全局變量依然存在。對(duì)全局變量的定義必須在該變量被使用之前進(jìn)行。建議把全局變量的定義放在函數(shù)體的首行位置。雖然MATLAB對(duì)全局變量的名字并沒(méi)有任何特別的限制,但是為了提高M(jìn)文件的可讀性,建議使用大寫字符命名全局變量。4.3.4M文件的一般結(jié)構(gòu)典型M函數(shù)文件的結(jié)構(gòu)如下:函數(shù)申明行(Functio
7、ndeclarationline):位于函數(shù)文件的首行,以MATLAB關(guān)鍵字function開頭,函數(shù)名以及函數(shù)的輸入輸出宗量都在這一行被定義。H1行(Thefirsthelptextline);緊隨函數(shù)聲明行之后以%號(hào)開頭的第一注釋行。按MATLAB自身文件的規(guī)則,H1行包含:大寫字體的函數(shù)文件名和運(yùn)用關(guān)鍵詞簡(jiǎn)要描述的函數(shù)功能。該H1行供lookfor關(guān)鍵詞查詢和help在線幫助使用在線幫助文本(Helptext)區(qū):H1行及其之后的連續(xù)的以%開頭的所有注釋行構(gòu)成整個(gè)在線幫助文本。它通常包括:
8、函數(shù)輸入輸出宗量的含義;調(diào)用格式說(shuō)明。編寫和修改記錄:它與在線幫助文本區(qū)相隔一個(gè)“空”行;也以%開頭;標(biāo)志編寫及修改M文件的作者和日期;版本記錄。它用作軟件檔案管理。函數(shù)體(Functionbody):為清晰起見(jiàn),它與前面的注釋以“空”行相隔。這部分內(nèi)容由實(shí)現(xiàn)M函數(shù)功能的MATLAB指令組成。它接收輸入宗量,進(jìn)行程序流控制,得到輸出宗量。其中為閱讀、理解方便,也配置適當(dāng)?shù)目招泻妥⑨?。若僅從運(yùn)算的角度看,唯“函數(shù)申明行”和“函數(shù)體”兩部分是構(gòu)成M函數(shù)文件所必不可少的。4.3.6子函數(shù)和私用函數(shù)1.