版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
函數(shù)與程序的調(diào)試第一頁,共二十三頁,編輯于2023年,星期五本講教學(xué)目標(biāo)
掌握函數(shù)文件的基本結(jié)構(gòu)掌握Matlab函數(shù)的調(diào)用方法了解函數(shù)參數(shù)的可調(diào)性掌握函數(shù)的句柄和常用的程序調(diào)試方法了解各種不同類型的函數(shù)第二頁,共二十三頁,編輯于2023年,星期五11.1函數(shù)11.1.1函數(shù)文件基本結(jié)構(gòu)由function語句引導(dǎo),其基本結(jié)構(gòu)為:
function輸出形參表=函數(shù)名(輸入形參表)
注釋說明部分函數(shù)體語句函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于一個(gè)時(shí),則應(yīng)該用方括號(hào)括起來。
第三頁,共二十三頁,編輯于2023年,星期五例1:編寫函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)。
函數(shù)文件如下:
%calculatetheareaandperimeterof
acircleofradiirfunction[s,p]=fcircle(r)%r—圓半徑,s—圓面積,p—圓周長(zhǎng)
s=pi*r*r;p=2*pi*r;第四頁,共二十三頁,編輯于2023年,星期五11.1.2函數(shù)調(diào)用函數(shù)調(diào)用的一般格式是:
[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)注意:函數(shù)調(diào)用時(shí)各實(shí)參出現(xiàn)的順序和個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)形參的順序和個(gè)數(shù)一致,否則會(huì)出錯(cuò)。函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。在MATLAB中,函數(shù)可以嵌套調(diào)用,即函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自身。一個(gè)函數(shù)調(diào)用它自身稱為遞歸調(diào)用。第五頁,共二十三頁,編輯于2023年,星期五例2:利用函數(shù)文件,實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(rho,theta)之間的轉(zhuǎn)換。函數(shù)文件tran.m:function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);
調(diào)用tran.m的命令文件main1.m:
x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[rho,the]=tran(x,y)第六頁,共二十三頁,編輯于2023年,星期五例3:利用函數(shù)的遞歸調(diào)用,求n!。遞歸調(diào)用函數(shù)文件factor.m如下:functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;%遞歸調(diào)用求(n-1)!endn!本身就是以遞歸的形式定義的,即求n!需要求(n-1)!,這時(shí)可采用遞歸調(diào)用。第七頁,共二十三頁,編輯于2023年,星期五11.1.3函數(shù)參數(shù)的可調(diào)性函數(shù)nargin和函數(shù)nargout分別用于確定函數(shù)的輸入輸出參數(shù)個(gè)數(shù)。函數(shù)nargin和函數(shù)nargout允許函數(shù)接收或返回任意數(shù)目的參數(shù)。只要在函數(shù)文件中包含這兩個(gè)函數(shù),就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時(shí)的輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)行處理。第八頁,共二十三頁,編輯于2023年,星期五例4:nargin用法示例。
函數(shù)文件examp.m:functionfout=charray(a,b,c)ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end命令文件my.m:
x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)第九頁,共二十三頁,編輯于2023年,星期五11.1.4函數(shù)句柄函數(shù)句柄可以實(shí)現(xiàn)對(duì)函數(shù)的間接操作,可以通過將函數(shù)句柄傳遞給其他函數(shù)實(shí)現(xiàn)對(duì)函數(shù)的操作,也可以將函數(shù)句柄保存在變量中,留待以后調(diào)用操作。函數(shù)句柄的創(chuàng)建格式如下:
fhandle=@functionname其中fhandle為創(chuàng)建的函數(shù)functionname的函數(shù)句柄。
第十頁,共二十三頁,編輯于2023年,星期五若要保存函數(shù)句柄,可以使用單元數(shù)組,如下:
trigFun={@sin,@cos,@tan};通過函數(shù)句柄實(shí)現(xiàn)對(duì)函數(shù)的間接調(diào)用,其調(diào)用格式與直接調(diào)用函數(shù)的格式相同:
fhandle(arg1,arg2,...,argn)其中fhandle為函數(shù)句柄。例5:函數(shù)句柄操作。
>>trigFun={@sin,@cos,@tan};>>plot(trigFun{2}(-pi:0.01:pi))第十一頁,共二十三頁,編輯于2023年,星期五函數(shù)句柄的操作
第十二頁,共二十三頁,編輯于2023年,星期五11.1.5匿名函數(shù)匿名函數(shù)提供了一種創(chuàng)建簡(jiǎn)單程序的方法,可以使用戶不必每次都編寫M文件,可以在命令窗口或其他任意M文件和腳本文件中使用。格式為:
fhandle=@(arglist)expr其中fhandle為該函數(shù)創(chuàng)建的函數(shù)句柄;@符號(hào)用于創(chuàng)建函數(shù)句柄;arglist為用逗號(hào)分隔的參數(shù)列表;expr為函數(shù)主體,一般為表達(dá)式。第十三頁,共二十三頁,編輯于2023年,星期五11.1.6主函數(shù)通常M文件中的第一個(gè)函數(shù)為主函數(shù),主函數(shù)之后可以是任意數(shù)量的子函數(shù),它們可以作為主程序的子程序。一般來說,主函數(shù)可被該文件之外的其他函數(shù)調(diào)用,而子函數(shù)只能被該文件內(nèi)的函數(shù)調(diào)用。在命令窗口或M文件種只能調(diào)用主函數(shù),調(diào)用的時(shí)候是通過存儲(chǔ)該函數(shù)的M文件名進(jìn)行。第十四頁,共二十三頁,編輯于2023年,星期五11.1.7子函數(shù)與其他語言一樣,在MATLAB7語言中也可以很方便地定義子函數(shù),用來擴(kuò)充函數(shù)的功能。在函數(shù)文件中題頭定義的函數(shù)為主函數(shù),而在函數(shù)體內(nèi)定義的其他函數(shù)都被視為子函數(shù)。每個(gè)子函數(shù)以函數(shù)定義語句開頭,直至下一個(gè)函數(shù)的定義或文件的結(jié)尾。子函數(shù)只能為主函數(shù)或同一主函數(shù)下的其他子函數(shù)所使用。第十五頁,共二十三頁,編輯于2023年,星期五11.1.8嵌套函數(shù)
一個(gè)函數(shù)內(nèi)部可以定義其他的函數(shù),這種內(nèi)部的函數(shù)稱作嵌套函數(shù)。定義嵌套函數(shù)時(shí),只要在一個(gè)函數(shù)內(nèi)部直接定義嵌套函數(shù)即可。注意:當(dāng)一個(gè)M文件中存在嵌套函數(shù)時(shí),該文件內(nèi)的所有函數(shù)必須以end結(jié)尾。第十六頁,共二十三頁,編輯于2023年,星期五例6:嵌套函數(shù)的結(jié)構(gòu)
functionx=A(p1,p2)...functiony=B(p3)...end...end每個(gè)函數(shù)中可以嵌套多個(gè)函數(shù)。第十七頁,共二十三頁,編輯于2023年,星期五11.1.9私有函數(shù)這類函數(shù)位于名為“private”的子文件夾中,只能被上一級(jí)文件夾中的函數(shù)或者這些函數(shù)所調(diào)用的M文件調(diào)用。如當(dāng)前文件夾為math,其中包含private文件夾,則private中的函數(shù)只能被math根目錄下的函數(shù)及這些函數(shù)調(diào)用的M文件調(diào)用。用戶可開發(fā)自己的函數(shù)庫,其名稱可以與系統(tǒng)標(biāo)準(zhǔn)M函數(shù)庫名稱相同,而不必?fù)?dān)心在函數(shù)調(diào)用時(shí)發(fā)生沖突,因?yàn)镸ATLAB首先查找私有函數(shù),再查找標(biāo)準(zhǔn)函數(shù)。第十八頁,共二十三頁,編輯于2023年,星期五11.1.10重載函數(shù)函數(shù)重載為程序編寫和用戶調(diào)用都提供了很大的方便。函數(shù)重載允許多個(gè)函數(shù)使用相同的函數(shù)名,不同的輸入?yún)?shù)類型。在函數(shù)調(diào)用時(shí),系統(tǒng)根據(jù)輸入?yún)?shù)的情況自動(dòng)選擇相應(yīng)的函數(shù)執(zhí)行。第十九頁,共二十三頁,編輯于2023年,星期五11.2程序的調(diào)試和優(yōu)化11.2.1程序的調(diào)試程序的錯(cuò)誤種類錯(cuò)誤的識(shí)別和程序調(diào)試
11.2.2程序的優(yōu)化程序優(yōu)劣的分析程序優(yōu)化的技巧有效地使用內(nèi)存第二十頁,共二十三頁,編輯于2023年,星期五11.2.1程序的調(diào)試
程序的錯(cuò)誤種類在MATLAB的表達(dá)式中存在兩種類型的錯(cuò)誤:(1)語法錯(cuò)誤語法錯(cuò)誤發(fā)生在M文件程序代碼的生成過程中,一般是由函數(shù)參數(shù)輸入類型有誤或是矩陣運(yùn)算階數(shù)不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東省聊城市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年甘肅省平?jīng)鍪泄_招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年福建省龍巖市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年山東省濱州市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- “異地戀更能考驗(yàn)?zāi)猩€是女生”辯論賽策劃書
- 浙江省湖州市(2024年-2025年小學(xué)六年級(jí)語文)部編版開學(xué)考試(上學(xué)期)試卷及答案
- 2025年數(shù)控刃磨床項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 2025年控、緩釋新型肥料項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 周記中秋節(jié)范文集錦九篇
- 2025年募投金融項(xiàng)目申請(qǐng)報(bào)告模式
- 期末測(cè)試卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 企業(yè)地震應(yīng)急預(yù)案管理方案
- 房地產(chǎn)園林綠化行業(yè)研究報(bào)告:市場(chǎng)規(guī)模統(tǒng)計(jì)、供需態(tài)勢(shì)及發(fā)展前景預(yù)測(cè)報(bào)告(智研咨詢)
- 2024春節(jié)前安全培訓(xùn)
- 物業(yè)管理基礎(chǔ)培訓(xùn)
- 視頻監(jiān)控方案-高空瞭望解決方案
- 完整液壓系統(tǒng)課件
- 2024-2030年中國(guó)通信工程行業(yè)發(fā)展分析及發(fā)展前景與趨勢(shì)預(yù)測(cè)研究報(bào)告
- 2024四川省專業(yè)技術(shù)人員繼續(xù)教育考試題及答案
- 2024六年級(jí)英語上冊(cè) Module 6 Unit 2 I've got a stamp from China教案 外研版(三起)
- 2024年安全員A證試題庫(附答案)
評(píng)論
0/150
提交評(píng)論