資源描述:
《《matlab函數(shù)》PPT課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第六講函數(shù)文件本講主要內(nèi)容:什么是函數(shù)文件如何編寫(xiě)函數(shù)文件函數(shù)參數(shù)的可調(diào)性遞歸函數(shù)全局與局部變量子函數(shù)自定義函數(shù)的三種途徑M文件根據(jù)調(diào)用方式的不同可以分為兩類:Script:腳本文件/命令文件獨(dú)立的m文件--直接輸入文件名即可運(yùn)行Function:函數(shù)文件可調(diào)用m文件--它由function引導(dǎo),可供其它M文件調(diào)用,通常帶輸入?yún)?shù)和輸出參數(shù)Matlab編程表3-1腳本文件與函數(shù)文件的區(qū)別腳本文件函數(shù)文件輸入、輸出沒(méi)有輸入?yún)?shù),不返回輸出參數(shù)可以帶輸入?yún)?shù)也可返回輸出參數(shù)變量操作只操作基本工作空間變量(全局變量)可操作基本工作空間變量(全局變量需用global指定)和局部變量調(diào)用
2、方式直接運(yùn)行必須以函數(shù)調(diào)用方式第一行為引導(dǎo)行,表示該M文件是函數(shù)文件函數(shù)名的命名規(guī)則與變量名相同(必須以字母開(kāi)頭)當(dāng)輸出形參多于一個(gè)時(shí),用方括號(hào)括起來(lái)以百分號(hào)開(kāi)始的語(yǔ)句為注釋語(yǔ)句函數(shù)文件函數(shù)文件由function語(yǔ)句引導(dǎo)函數(shù)文件名必須與函數(shù)名一致函數(shù)必須是一個(gè)單獨(dú)的M文件function輸出形參列表=函數(shù)名(輸入形參列表)%注釋說(shuō)明部分:%可以被help命令顯示程序語(yǔ)句段%函數(shù)體部分函數(shù)文件(ftoc.m):例:將華氏溫度轉(zhuǎn)化為攝氏溫度:編程示例clear;f=input('Pleaseinputf:');c=5*(f-32)/9;fprintf('c=%g',c);腳本文
3、件(ftoc.m):functionc=ftoc(f)%將華氏溫度f(wàn)轉(zhuǎn)化為攝氏溫度cc=5*(f-32)/9;fprintf('c=%g',c);函數(shù)文件舉例function[s,l]=mycircle(r)%函數(shù)功能:求半徑為r的圓的面積和周長(zhǎng)%輸入?yún)?shù):圓的半徑r%輸出參數(shù):圓的面積s和周長(zhǎng)ls=pi*r^2;l=2*pi*r;例:編寫(xiě)函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)函數(shù)定義好了以后,就可以像系統(tǒng)函數(shù)一樣,隨意調(diào)用。試一試:a=mycircle(10)[ab]=mycircle(5)y=f2cf(0);函數(shù)文件舉例functiony=func(x)%函數(shù)功能:求分段函
4、數(shù)ifabs(x)<1y=sqrt(1-x^2);elsey=x^2-1;end例:編寫(xiě)函數(shù)文件求下面的分段函數(shù)函數(shù)定義好了以后,就可以像系統(tǒng)函數(shù)一樣,隨意調(diào)用。試一試:a=func(10)func(0.5)ezplot('func(x)',[-2,2]),holdonfplot('func(x)+0.5',[-2,2],'--r'),holdoff函數(shù)調(diào)用的一般格式輸出實(shí)參列表=函數(shù)名(輸入實(shí)參列表)函數(shù)調(diào)用時(shí),實(shí)參的順序應(yīng)與函數(shù)定義時(shí)形參的順序一致實(shí)參與形參之間的結(jié)合是通過(guò)值傳遞實(shí)現(xiàn)的函數(shù)可以嵌套調(diào)用,即一個(gè)函數(shù)可以被其它函數(shù)調(diào)用,甚至可以被它自身調(diào)用,此時(shí)稱為遞歸調(diào)用函
5、數(shù)所傳遞的參數(shù)具有可調(diào)性,Matlab用兩個(gè)永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參和輸出實(shí)參的個(gè)數(shù)函數(shù)調(diào)用%narginEx.mfunctiony=narginEx(a,b)if(nargin==1)y=a;elseif(nargin==2)y=a*b;end參數(shù)的可調(diào)性舉例重要系統(tǒng)變量nargin:存儲(chǔ)調(diào)用函數(shù)時(shí)輸入實(shí)參的個(gè)數(shù)。例:nargin的使用:若調(diào)用格式如下,運(yùn)行結(jié)果分別是什么?narginEx(4,5)narginEx(3)narginEx(1,2,3)解:函數(shù)文件內(nèi)容為functionc=calnar(a,b)%當(dāng)輸入1個(gè)參數(shù)求其絕對(duì)
6、值%輸入2個(gè)參數(shù)求其平方和的算術(shù)平方根if(nargin==1)c=abs(a);elseif(nargin==2)c=sqrt(a.^2+b.^2);end例:定義一個(gè)函數(shù),當(dāng)輸入1個(gè)參數(shù)求其絕對(duì)值,輸入2個(gè)參數(shù)求其平方和的算術(shù)平方根。例:畫(huà)以r為半徑的圓,返回圓面積,可以指定線色等屬性。functionsa=circle(r,s)%CIRCLEplotacircleofradiirinthelinespecifiedbys.%r指定半徑的數(shù)值%s指定線色的字符串%sa圓面積%circle(r)利用藍(lán)實(shí)線畫(huà)半徑為r的圓周線.%circle(r,s)利用串s指定的線色畫(huà)半徑為r
7、的圓周線.%sa=circle(r)計(jì)算圓面積,并畫(huà)半徑為r的藍(lán)色圓面.%sa=circle(r,s)計(jì)算圓面積,并畫(huà)半徑為r的s色圓面.ifnargin>2error('輸入?yún)?shù)太多。');end;ifnargin==1s='b';end;t=0:0.01:2*pi;plot(r*cos(t),r*sin(t),s);axisequal;sa=pi*r^2;參數(shù)的可調(diào)性舉例重要系統(tǒng)變量nargout:存儲(chǔ)調(diào)用函數(shù)時(shí)輸出實(shí)參的個(gè)數(shù)。例:nargout的使用:%nargoutEx.mfunct