




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第6 6章章 MM文件和函數(shù)句柄文件和函數(shù)句柄單獨的單獨的MATLAB指令,及由若干指令構(gòu)成的孤立表達(dá)式,只指令,及由若干指令構(gòu)成的孤立表達(dá)式,只能解算或仿真簡單理論數(shù)學(xué)模型所描述的問題。能解算或仿真簡單理論數(shù)學(xué)模型所描述的問題。 復(fù)雜些的問題通常需要用一組理論數(shù)學(xué)算式。這些問題的解復(fù)雜些的問題通常需要用一組理論數(shù)學(xué)算式。這些問題的解算及仿真就需要借助較復(fù)雜的算及仿真就需要借助較復(fù)雜的MATLAB程序進(jìn)行。程序進(jìn)行。 這種這種MATLAB程序由較多的程序由較多的MATLAB指令和多種多樣的指令和多種多樣的MATLAB表達(dá)式組成,并循著一定的執(zhí)行次序運行。擴(kuò)展名表達(dá)式組成,并循著一定的執(zhí)行次序
2、運行。擴(kuò)展名為為m。這就是腳本。這就是腳本M文件或函數(shù)文件或函數(shù)M文件。文件。 6.1 MATLAB控制流控制流6.2 腳本文件和函數(shù)文件腳本文件和函數(shù)文件6.3 MATLAB的函數(shù)類別的函數(shù)類別6.4 函數(shù)句柄函數(shù)句柄6.1 MATLAB控制流控制流1. if-else-end條件控制條件控制單單 分分 支支雙雙 分分 支支多多 分分 支支if expr(commands) endif expr(commands1)else(commands2)ENDif expr1(commands)elseif expr2(commands).else (commandsk)end當(dāng)expr給出“邏輯1
3、”時,(commands)指令組才被執(zhí)行。當(dāng)expr給出“邏輯1”時,(commands1)指令組被執(zhí)行;否則,(commands2)被執(zhí)行。expr1,expr2, 中,首先給出“邏輯1”的那個分支的指令組被執(zhí)行;否則,(commandsk)被執(zhí)行。 該使用方法常被switch-case所取代?!纠?.1-1】 2. switch-case控制結(jié)構(gòu)控制結(jié)構(gòu)指 令 格 式含 義switch expr CASE VALUE_1 (commands1) CASE VALUE_2(commands2) CASE VALUE_k (commandsk) otherwise (commands)end
4、expr為根據(jù)此前給定變量進(jìn)行計算的表達(dá)式 value_1是給定的數(shù)值、字符串標(biāo)量(或單元數(shù)組) 若expr結(jié)果與value_1(或其中的單元元素)相等,則執(zhí)行。 value_k是給定的數(shù)值、字符串標(biāo)量(或單元數(shù)組) 若expr結(jié)果與value_k(或其中的單元元素)相等,則執(zhí)行。 該情況是以上的“并”的“補(bǔ)” 若所有case都不發(fā)生,則執(zhí)行該組命令?!纠?.1-2】 3. for循環(huán)和循環(huán)和while循環(huán)循環(huán)for 循環(huán)循環(huán)while循環(huán)循環(huán)for ix=array (commands)endWHILE EXPRESSION (commands)end4. 控制程序流的其它常用指令控制程序流
5、的其它常用指令指令及使用格式指令及使用格式使使 用用 說說 明明v=input(message) v=input(message,s) 該指令執(zhí)行時,“控制權(quán)”交給鍵盤;待輸入結(jié)束,按下Enter鍵,“控制權(quán)”交還MATLAB。message是提示用的字符串。keyboard遇到keyboard時,將“控制權(quán)”交給鍵盤,用戶可以從鍵盤輸入各種MATLAB指令。breakbreak指令,或?qū)е掳撝噶畹膚hile、for 循環(huán)終止,或在if - end, switch - case, try catch中導(dǎo)致中斷。參見例6.1-5。CONTINUE跳過位于它之后的循環(huán)體中其他指令,而執(zhí)行循環(huán)的
6、下一個迭代.見例6.1-5。pausepause(n)第一種格式使程序暫停執(zhí)行,等待用戶按任意鍵繼續(xù);第二種格式使程序暫停n秒后,再繼續(xù)執(zhí)行。RETURN結(jié)束return指令所在函數(shù)的執(zhí)行,而把控制轉(zhuǎn)至主調(diào)函數(shù)或者指令窗。否則,只有待整個被調(diào)函數(shù)執(zhí)行完后,才會轉(zhuǎn)出。6.2 腳本文件和函數(shù)文件腳本文件和函數(shù)文件1. M腳本文件腳本文件對于一些比較簡單的問題,從指令窗中直接輸入指令進(jìn)行計算是十分輕松簡單的事。但隨指令數(shù)的增加,或隨控制流復(fù)雜度的增加,或重復(fù)計算要求的提出,直接從指令窗進(jìn)行計算就顯得煩瑣。而此時腳本文件最為適宜。 它是一串按用戶意圖排列而成的(包括控制流向指令在內(nèi)的)MATLAB指令
7、集合。腳本文件運行后,產(chǎn)生的所有變量都駐留在MATLAB基本工作空間(Base workspace)中。只要用戶不使用clear指令加以清除,只要MATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中。2. M函數(shù)文件函數(shù)文件與腳本文件不同,函數(shù)文件(Function file)猶如一個“黑箱”。從外界只看到:傳給它的輸入量和送出來的計算結(jié)果。而內(nèi)部運作是藏而不見的。 從結(jié)構(gòu)上看,腳本文件只是比函數(shù)文件少一個“函數(shù)申明行”,所以只需描繪清楚函數(shù)文件的結(jié)構(gòu),腳本文件的結(jié)構(gòu)也就無須多費筆墨了。 函數(shù)文件的第一行是以function引導(dǎo)的函數(shù)申明行。該行還列出函數(shù)與外界交換數(shù)據(jù)的全部標(biāo)稱輸入/
8、輸出量。輸入輸出量的數(shù)目沒有限制。允許使用比標(biāo)稱數(shù)目少的輸入/輸出量,實現(xiàn)對函數(shù)的調(diào)用。運行時,MATALAB會專門為它開辟一個臨時工作空間,稱為函數(shù)工作空間,存放所有中間變量,當(dāng)執(zhí)行完文件最后一條指令后,或遇到return指令,就結(jié)束該函數(shù)文件的運行,同時該臨時空間及所有中間變量即被清除。在MATLAB整個運行期間可以產(chǎn)生任意多個臨時函數(shù)空間如果在函數(shù)文件中,調(diào)用某個腳本文件,那么該腳本文件運行產(chǎn)生的所有變量都存放于那個函數(shù)空間中,而不是存放于基本空間中函數(shù)申明行:位于函數(shù)文件的首行;以關(guān)鍵字function開頭;函數(shù)名以及函數(shù)的輸入/輸出量名都在這一行H1行:緊隨函數(shù)申明行后以%開頭的第一
9、注釋行,包括函數(shù)文件名和簡要描述的函數(shù)功能。該行供lookfor關(guān)鍵詞查詢和help在線幫助使用。在線幫助文本區(qū):H1行及其之后連續(xù)的以%開頭的所有注釋行。通常包括:函數(shù)輸入/輸出宗量的含義;調(diào)用格式說明。編寫和修改記錄:與在線幫助文本區(qū)相隔一個空行,以%開頭,標(biāo)志編寫及修改該M文件的作者、日期、版本。用作軟件檔案管理。M函數(shù)文件的結(jié)構(gòu):3. 局部變量和全局變量局部變量和全局變量(1)局部()局部(Local)變量)變量存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運行過程中,其影響范圍也僅限于該函數(shù)本身。正由于這行過程中,其影響范圍也僅限于該函數(shù)本
10、身。正由于這種空間、時間上的局部性,中間變量被稱為局部變量。種空間、時間上的局部性,中間變量被稱為局部變量。(2)全局()全局(Global)變量)變量通過通過global指令,指令,MATLAB也允許幾個不同的函數(shù)空也允許幾個不同的函數(shù)空間以及基本工作空間共享同一個變量。這種被共享的變間以及基本工作空間共享同一個變量。這種被共享的變量稱為全局變量。量稱為全局變量?!纠纠?.2-1】 6.3 MATLAB的函數(shù)類別的函數(shù)類別函數(shù)Function 又被細(xì)分為:主函數(shù);子函數(shù);嵌套函數(shù);私用函數(shù);匿名函數(shù)等。本節(jié)只對主函數(shù)、子函數(shù)及匿名函數(shù)進(jìn)行闡述。 6.3.1 主函數(shù)(主函數(shù)(Primary
11、function)一般為”與保存文件同名”的那個函數(shù)在當(dāng)前目錄、搜索路徑上,列出文件名的函數(shù)在指令窗中或其他函數(shù)中,可直接調(diào)用的函數(shù)M函數(shù)文件中,由第一個function引出的函數(shù)采用helpfunctionname可獲取函數(shù)所攜帶的幫助信息6.3.2 子函數(shù)(子函數(shù)(Subfunction)子函數(shù)不獨立存在,只能寄生在主函數(shù)體內(nèi)在函數(shù)文件中,由非第一個function引出的函數(shù)一個M函數(shù)文件可以包含多個子函數(shù)子函數(shù)只能被其所在的主函數(shù)和其他“同居”子函數(shù)調(diào)用子函數(shù)可以出現(xiàn)在主函數(shù)體的任何位置,其位置先后與調(diào)用次序無關(guān)在M函數(shù)文件中,任何指令通過“名字”對函數(shù)進(jìn)行調(diào)用時,子函數(shù)的優(yōu)先級僅次于內(nèi)
12、裝函數(shù)同一文件的子函數(shù)、子函數(shù)的工作空間都是彼此獨立的,各函數(shù)間的信息,或通過輸入輸出宗量傳遞,或通過全局變量傳遞采用help functionname/subfunfctionname可以獲取子函數(shù)所帶的幫助信息不管在什么地方,只要存在于那子函數(shù)句柄,就可以直接調(diào)用子函數(shù)【例6.3-1】 6.3.3 匿名函數(shù)(匿名函數(shù)(Anonymous function)匿名函數(shù)不以文件形式駐留在文件夾上;可在指令窗或任何函數(shù)體中通過指令直接生成1)在指令窗或任何M文件中創(chuàng)建匿名函數(shù)FH=(arglist)exprFH是所創(chuàng)建匿名函數(shù)的句柄;arglist是匿名函數(shù)的輸入量列表;expr是由輸入量構(gòu)成的函
13、數(shù)表達(dá)式2)匿名函數(shù)的調(diào)用格式FH(arglist) 直接調(diào)用格式feval(FH,arglist) 間接調(diào)用格式Arglist中輸入量的次序必須與創(chuàng)建該匿名函數(shù)句柄時的輸入量次序相同所有借助feval構(gòu)成的泛函指令也采用間接調(diào)用格式6.4 函數(shù)句柄函數(shù)句柄函數(shù)句柄(函數(shù)句柄(Function handle)是)是matlab 6.0版起用的新數(shù)版起用的新數(shù)據(jù)類型。它保存著據(jù)類型。它保存著“為這函數(shù)創(chuàng)建句柄時的路徑、視野、函數(shù)為這函數(shù)創(chuàng)建句柄時的路徑、視野、函數(shù)名,以及可能存在的重載方法名,以及可能存在的重載方法”。引入函數(shù)句柄的理由是:使引入函數(shù)句柄的理由是:使feval及借助于它的泛函指令工作及借助于它的泛函指令工作更可靠;使更可靠;使“函數(shù)調(diào)用函數(shù)調(diào)用”象象“變量調(diào)用變量調(diào)用”一樣靈活方便;可迅一樣靈活方便;可迅速獲得同名重載函數(shù)的位置、類型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豐田買車銷售合同范本
- 合同范本租房
- 增強(qiáng)民營企業(yè)發(fā)展活力促進(jìn)經(jīng)濟(jì)高質(zhì)量增長
- 吊裝租賃搬運合同范本
- 合同范本不需審查
- 合同范本電子版
- 公路工程竣工檢測合同范本
- 醫(yī)療美容項目合同范例
- 兄弟之間借款合同范例
- 語文-2025年江西省中考第一次模擬考試(全解全析)
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案一套
- 《養(yǎng)老保險的理念》課件
- 2024-2025學(xué)年第二學(xué)期英語教研組工作計劃
- 山東省海洋知識競賽(初中組)考試題庫500題(含答案)
- 服務(wù)行業(yè)人力資源薪酬體系管理與優(yōu)化
- 馬尼拉草皮施工方案
- 《蔚來發(fā)展》課件
- 人工智能融入土木水利碩士人才培養(yǎng)模式研究
- 2024年山東商務(wù)職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 醫(yī)學(xué)教育中的學(xué)習(xí)風(fēng)格與個性化教學(xué)
- GB/T 45167-2024熔模鑄鋼件、鎳合金鑄件和鈷合金鑄件表面質(zhì)量目視檢測方法
評論
0/150
提交評論