




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)學(xué)實(shí)驗(yàn)第第六講六講 函數(shù)文件函數(shù)文件本講主要內(nèi)容本講主要內(nèi)容 :l 什么是函數(shù)文件l 如何編寫(xiě)函數(shù)文件l 函數(shù)參數(shù)的可調(diào)性l 遞歸函數(shù)l 全局與局部變量l 子函數(shù)l 自定義函數(shù)的三種途徑q M 文件根據(jù)調(diào)用方式的不同可以分為兩類(lèi):文件根據(jù)調(diào)用方式的不同可以分為兩類(lèi):l Script:腳本文件腳本文件/命令文件命令文件 l 獨(dú)立的m文件-直接輸入直接輸入文件名文件名即可運(yùn)行即可運(yùn)行l(wèi) Function:函數(shù)文件函數(shù)文件 l可調(diào)用m文件-它由它由function引導(dǎo),可供其它引導(dǎo),可供其它M文件文件調(diào)用,通常帶輸入?yún)?shù)和輸出參數(shù)調(diào)用,通常帶輸入?yún)?shù)和輸出參數(shù)Matlab 編程編程表表3-13-1
2、腳本文件與函數(shù)文件的區(qū)別腳本文件與函數(shù)文件的區(qū)別腳本文件函數(shù)文件輸入、輸出沒(méi)有輸入?yún)?shù),不返回輸出參數(shù)可以帶輸入?yún)?shù)也可返回輸出參數(shù)變量操作只操作基本工作空間變量(全局變量)可操作基本工作空間變量(全局變量需用global指定)和局部變量調(diào)用方式直接運(yùn)行必須以函數(shù)調(diào)用方式l 第一行為第一行為引導(dǎo)行引導(dǎo)行,表示該,表示該 M文件是函數(shù)文件文件是函數(shù)文件l 函數(shù)名的命名規(guī)則與變量名相同函數(shù)名的命名規(guī)則與變量名相同 ( 必須以字母開(kāi)頭必須以字母開(kāi)頭 )l 當(dāng)當(dāng)輸出形參輸出形參多于一個(gè)時(shí),用多于一個(gè)時(shí),用方括號(hào)方括號(hào)括起來(lái)括起來(lái)l 以以百分號(hào)百分號(hào)開(kāi)始的語(yǔ)句為開(kāi)始的語(yǔ)句為注釋語(yǔ)句注釋語(yǔ)句函數(shù)文件函數(shù)文
3、件q 函數(shù)文件由函數(shù)文件由 function 語(yǔ)句引導(dǎo)語(yǔ)句引導(dǎo)l 函數(shù)函數(shù)文件名必須與函數(shù)名一致文件名必須與函數(shù)名一致l 函數(shù)必須是一個(gè)函數(shù)必須是一個(gè)單獨(dú)的單獨(dú)的 M文件文件function 輸出形參列表輸出形參列表=函數(shù)名函數(shù)名(輸入形參列表輸入形參列表)% 注釋說(shuō)明部分:注釋說(shuō)明部分:%可以被可以被help命令顯示命令顯示程序語(yǔ)句段程序語(yǔ)句段 % 函數(shù)體部分函數(shù)體部分l 函數(shù)文件函數(shù)文件(ftoc.m):5(32)9cf例:例:將華氏溫度轉(zhuǎn)化為攝氏溫度:將華氏溫度轉(zhuǎn)化為攝氏溫度:編程示例編程示例clear; f=input(Please input f:);c=5*(f-32)/9;fpr
4、intf(c = %gn,c);l 腳本文件腳本文件 (ftoc.m):function c = ftoc(f)% 將華氏溫度將華氏溫度f(wàn)轉(zhuǎn)化為攝氏溫度轉(zhuǎn)化為攝氏溫度cc=5*(f-32)/9;fprintf(c = %gn,c);函數(shù)文件舉例函數(shù)文件舉例function s,l = mycircle(r)% 函數(shù)功能:求半徑為函數(shù)功能:求半徑為r的圓的面積和周長(zhǎng)的圓的面積和周長(zhǎng)% 輸入?yún)?shù)輸入?yún)?shù):圓的半徑圓的半徑r% 輸出參數(shù):圓的面積輸出參數(shù):圓的面積s和周長(zhǎng)和周長(zhǎng)ls = pi*r2; l = 2*pi*r;例:例:編寫(xiě)函數(shù)文件求半徑為編寫(xiě)函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)的圓的面積和
5、周長(zhǎng) 函數(shù)定義好了以后,就可以像系統(tǒng)函數(shù)一樣,隨意調(diào)用。試一試:函數(shù)定義好了以后,就可以像系統(tǒng)函數(shù)一樣,隨意調(diào)用。試一試: a=mycircle(10) a b=mycircle(5) y=f2cf(0);函數(shù)文件舉例函數(shù)文件舉例function y = func(x)% 函數(shù)功能:求分段函數(shù)函數(shù)功能:求分段函數(shù)if abs(x)2 error(輸入?yún)?shù)太多。);end;if nargin=1 s=b;end;t=0:0.01:2*pi;plot(r*cos(t),r*sin(t),s); axis equal;sa=pi*r2;參數(shù)的可調(diào)性舉例參數(shù)的可調(diào)性舉例r 重要重要系統(tǒng)變量系統(tǒng)變量 n
6、argout : 存儲(chǔ)調(diào)用函數(shù)時(shí)存儲(chǔ)調(diào)用函數(shù)時(shí)輸出實(shí)參的個(gè)數(shù)輸出實(shí)參的個(gè)數(shù)。r 例:例:nargout 的使用:的使用:% nargoutEx.mfunction p,q=nargoutEx(a,b)if (nargout=1) p = a + b;elseif (nargout=2) p = a + b; q = a - b;end若調(diào)用格式如下,運(yùn)行結(jié)果分別是什么?若調(diào)用格式如下,運(yùn)行結(jié)果分別是什么? x=nargoutEx(4,5) a,b= nargoutEx(4,5) nargoutEx(1,2,3)1,1!(1)!,1nnnnn % 函數(shù)文件函數(shù)文件 myfactor.mfunct
7、ion y=myfactor(n)if (n=1) y=1;else y=n*myfactor(n-1);end例:例:利用函數(shù)的遞歸調(diào)用計(jì)算利用函數(shù)的遞歸調(diào)用計(jì)算 n!遞歸函數(shù)舉例遞歸函數(shù)舉例% main.m%clear;s = 0;n = 10;for i = 1 : n s = s + myfactor(i);endfprintf( s=%g n,s)例:例:計(jì)算計(jì)算 1! + 2! + + 10!遞歸函數(shù)舉例遞歸函數(shù)舉例q 函數(shù)文件中的變量都是函數(shù)文件中的變量都是局部局部的,即一個(gè)函數(shù)文件中定義的,即一個(gè)函數(shù)文件中定義的變量不能被另一個(gè)函數(shù)文件或其它的變量不能被另一個(gè)函數(shù)文件或其它 M
8、 文件使用文件使用q當(dāng)函數(shù)調(diào)用完畢后,該函數(shù)文件中定義的所有局部變量當(dāng)函數(shù)調(diào)用完畢后,該函數(shù)文件中定義的所有局部變量都將被釋放,即都將被釋放,即全部被清除全部被清除q 函數(shù)通過(guò)函數(shù)通過(guò)輸入和輸出參數(shù)輸入和輸出參數(shù)與其它與其它 M 文件進(jìn)行數(shù)據(jù)傳遞文件進(jìn)行數(shù)據(jù)傳遞q 如果在若干個(gè)如果在若干個(gè) M文件中,文件中,都把某個(gè)變量定義為全局變都把某個(gè)變量定義為全局變量量,則這些函數(shù)將公共使用這一變量,則這些函數(shù)將公共使用這一變量。所有函數(shù)都可以對(duì)所有函數(shù)都可以對(duì)它進(jìn)行存取和修改操作它進(jìn)行存取和修改操作q 定義全局變量是定義全局變量是 M文件間傳遞信息的一種手段文件間傳遞信息的一種手段全局變量全局變量(G
9、lobal)與局部變量與局部變量(Local)l 變量名列表中的各個(gè)變量變量名列表中的各個(gè)變量用空格隔開(kāi)用空格隔開(kāi),不能用逗號(hào)!,不能用逗號(hào)!l 在使用全局變量的所有在使用全局變量的所有M文件中,都要對(duì)其所使用的全文件中,都要對(duì)其所使用的全局變量進(jìn)行定義,局變量進(jìn)行定義,即,在即,在M文件中只有特殊定義的,才是文件中只有特殊定義的,才是全局變量,其他都是局部的。全局變量,其他都是局部的。全局變量給函數(shù)間的數(shù)據(jù)傳遞帶來(lái)了方便,但卻破壞了全局變量給函數(shù)間的數(shù)據(jù)傳遞帶來(lái)了方便,但卻破壞了函數(shù)對(duì)變量的封裝,降低了程序的可讀性,因而函數(shù)對(duì)變量的封裝,降低了程序的可讀性,因而在結(jié)構(gòu)在結(jié)構(gòu)化程序設(shè)計(jì)中,全局
10、變量是不受歡迎的化程序設(shè)計(jì)中,全局變量是不受歡迎的。特別是當(dāng)程序。特別是當(dāng)程序較大,子程序較多時(shí),全局變量將個(gè)程序調(diào)試和維護(hù)帶較大,子程序較多時(shí),全局變量將個(gè)程序調(diào)試和維護(hù)帶來(lái)不便,故不提倡使用全局變量。來(lái)不便,故不提倡使用全局變量。global 變量名列表變量名列表全局變量的定義全局變量的定義程序示例程序示例% globalmain.mclear; global a ba=1; b=3;y=mysquaresum(a,b);fprintf( a=%g, b=%g n,a,b);z=myproduct(a,b);fprintf( a=%g, b=%gn,a,b);% mysquaresum.m
11、function square_sum=mysquaresum(x,y)square_sum=x2 + y2; a=x+y;% myproduct.mfunction product=myproduct(x,y)global aproduct=x*y; a=x+y;子函數(shù)子函數(shù)l 一個(gè)函數(shù)文件中可以含有一個(gè)或多個(gè)函數(shù),一個(gè)函數(shù)文件中可以含有一個(gè)或多個(gè)函數(shù), 其中第一個(gè)稱(chēng)為主函數(shù),其它函數(shù)稱(chēng)為子函數(shù)其中第一個(gè)稱(chēng)為主函數(shù),其它函數(shù)稱(chēng)為子函數(shù)l 子函數(shù)也由子函數(shù)也由 function 語(yǔ)句引導(dǎo)語(yǔ)句引導(dǎo)l 除了用除了用 global 定義的全局變量外,定義的全局變量外,所有函數(shù)中的變量都所有函數(shù)中的變
12、量都是局部變量是局部變量,函數(shù)之間通過(guò)輸入、輸出參數(shù)進(jìn)行數(shù)據(jù)傳遞,函數(shù)之間通過(guò)輸入、輸出參數(shù)進(jìn)行數(shù)據(jù)傳遞調(diào)用一個(gè)函數(shù)時(shí),調(diào)用一個(gè)函數(shù)時(shí),Matlab 會(huì)首先檢查該函數(shù)是否為一個(gè)子會(huì)首先檢查該函數(shù)是否為一個(gè)子函數(shù)函數(shù)l 主函數(shù)必須位于最前面,子函數(shù)出現(xiàn)的次序任意主函數(shù)必須位于最前面,子函數(shù)出現(xiàn)的次序任意l 子函數(shù)只能被主函數(shù)和位于同一個(gè)函數(shù)文件中的其它子子函數(shù)只能被主函數(shù)和位于同一個(gè)函數(shù)文件中的其它子函數(shù)調(diào)用函數(shù)調(diào)用子函數(shù)舉例子函數(shù)舉例% subfun.mfunction avg, med = subfun(x) % 主函數(shù)主函數(shù) n = length(x);avg = mean(x, n);m
13、ed = median(x, n);function a = mean(x, n) % 子函數(shù),計(jì)算平均值子函數(shù),計(jì)算平均值a = sum(x)/n;function m = median(x, n) % 子函數(shù),計(jì)算中值子函數(shù),計(jì)算中值x = sort(x);if rem(n, 2) = 1 m = x(n+1)/2);else m = (x(n/2)+x(n/2+1)/2;endq M M文件函數(shù)文件函數(shù)(M file function)(M file function)q 內(nèi)聯(lián)內(nèi)聯(lián)函數(shù)函數(shù)(Inline Function)(Inline Function)q 匿名函數(shù)匿名函數(shù)(Anony
14、mous Function)(Anonymous Function)自定義函數(shù)的三個(gè)自定義函數(shù)的三個(gè)途徑:途徑: q M M文件函數(shù)文件函數(shù):函數(shù)文件形式建立的自定義函數(shù)也稱(chēng)為函數(shù)文件形式建立的自定義函數(shù)也稱(chēng)為q 定義的一般格式:定義的一般格式: function 輸出形參列表輸出形參列表=函數(shù)名函數(shù)名(輸入形參列表輸入形參列表) % 注釋說(shuō)明部分注釋說(shuō)明部分(可選可選) 函數(shù)體語(yǔ)句函數(shù)體語(yǔ)句(必須必須)q 例:做如下函數(shù)文件:例:做如下函數(shù)文件:myfunc.mmyfunc.mfunction y=function y=myfunc(xmyfunc(x) ) y=x.2; y=x.2; my
15、func(2) myfunc(2)% %計(jì)算在計(jì)算在x=2x=2處的函數(shù)值處的函數(shù)值 ezplot(myfuncezplot(myfunc); ); % % 作作函數(shù)函數(shù)圖像圖像 fplot(myfunc,-5,5,r);fplot(myfunc,-5,5,r); % % 注意到:上邊兩個(gè)命令中的文件名仍需加單引號(hào)注意到:上邊兩個(gè)命令中的文件名仍需加單引號(hào)M M文件函數(shù)文件函數(shù)(M file function)(M file function)q inlineinline函數(shù)也稱(chēng)為內(nèi)聯(lián)函數(shù)、內(nèi)嵌函數(shù)、在線(xiàn)函數(shù)函數(shù)也稱(chēng)為內(nèi)聯(lián)函數(shù)、內(nèi)嵌函數(shù)、在線(xiàn)函數(shù)q 一般格式:一般格式: 函數(shù)名函數(shù)名=inli
16、ne(=inline(函數(shù)表達(dá)式函數(shù)表達(dá)式 , , 變量變量1 1 , , 變量變量2 2 ,.,.) )q 例:例: f=inline(x.2,x);f=inline(x.2,x);% %定義了函數(shù)定義了函數(shù)f(xf(x)=x2)=x2 f(2)f(2)% %計(jì)算在計(jì)算在x=2x=2處的函數(shù)值處的函數(shù)值 ezplot(fezplot(f); ); % % 作作函數(shù)函數(shù)圖像圖像 fplot(f,0,5,r);fplot(f,0,5,r); % % 注意到:當(dāng)注意到:當(dāng)f f是函數(shù)時(shí),上邊兩個(gè)命令中的是函數(shù)時(shí),上邊兩個(gè)命令中的f f不再加單引號(hào)。不再加單引號(hào)。內(nèi)聯(lián)內(nèi)聯(lián)函數(shù)函數(shù)(Inline Fu
17、nction)q 定義的函數(shù)稱(chēng)為定義的函數(shù)稱(chēng)為匿名函數(shù)匿名函數(shù)、臨時(shí)函數(shù)。、臨時(shí)函數(shù)。 是函數(shù)指針是函數(shù)指針 ,也,也稱(chēng)為函數(shù)句柄。效率優(yōu)于稱(chēng)為函數(shù)句柄。效率優(yōu)于inlineinline函數(shù),函數(shù),7.07.0版本后建議用匿名版本后建議用匿名函數(shù)取代函數(shù)取代inlineinline函數(shù)。函數(shù)。q 一般格式:一般格式:函數(shù)句柄函數(shù)句柄=(=(輸入輸入變量變量) ) 函數(shù)表達(dá)式函數(shù)表達(dá)式q 例:例: f=(x)xf=(x)x. .22% %定義了函數(shù)定義了函數(shù)f(xf(x)=x2)=x2 f(2)f(2)% %計(jì)算在計(jì)算在x=2x=2處的函數(shù)值處的函數(shù)值 ezplot(fezplot(f); );
18、 % % 作作函數(shù)函數(shù)圖像圖像 fplot(f,0,5,r);fplot(f,0,5,r); % % 注意到:當(dāng)注意到:當(dāng)f f是函數(shù)時(shí),上邊兩個(gè)命令中的是函數(shù)時(shí),上邊兩個(gè)命令中的f f不再加單引號(hào)。不再加單引號(hào)。匿名函數(shù)匿名函數(shù)(Anonymous Function)(Anonymous Function)本章內(nèi)容小結(jié)本章內(nèi)容小結(jié)函數(shù)文件的一般格式:函數(shù)文件的一般格式:function 輸出形參列表輸出形參列表=函數(shù)名函數(shù)名(輸入形參列表輸入形參列表)% 注釋說(shuō)明部分注釋說(shuō)明部分(可選可選)函數(shù)體語(yǔ)句函數(shù)體語(yǔ)句(必須必須)內(nèi)聯(lián)函數(shù)的一般格式:內(nèi)聯(lián)函數(shù)的一般格式:函數(shù)名函數(shù)名=inline(函數(shù)表達(dá)式函數(shù)表達(dá)式,變量變量1,變量變量2,.)匿名函數(shù)匿名函數(shù)的一般格式:的一般格式:函數(shù)句柄函數(shù)句柄=(=(輸入輸入變量變量) ) 函數(shù)表達(dá)式函數(shù)表達(dá)式系統(tǒng)變量系統(tǒng)變量 narginnargin存儲(chǔ)調(diào)用函數(shù)時(shí)存儲(chǔ)調(diào)用函數(shù)時(shí)輸入實(shí)參的個(gè)數(shù)輸入實(shí)參的個(gè)數(shù)。系統(tǒng)變量系統(tǒng)變量 nargoutnargout存儲(chǔ)調(diào)用函數(shù)時(shí)存儲(chǔ)調(diào)用函數(shù)時(shí)輸出實(shí)參的個(gè)數(shù)輸出實(shí)參的個(gè)數(shù)。全局變量定義格式:全局變量定義格式: global 變量名列表變量名列表上機(jī)作業(yè)上機(jī)作業(yè)q 編寫(xiě)一個(gè)使用循環(huán)計(jì)算編寫(xiě)一個(gè)使用循環(huán)計(jì)算 n! 的函數(shù)。的函數(shù)。 (fa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東建筑大學(xué)《歌曲分析與寫(xiě)作(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省南通市如東縣、徐州市豐縣2025屆招生全國(guó)統(tǒng)一考試·英語(yǔ)試題含解析
- 武平縣2025年四年級(jí)數(shù)學(xué)第二學(xué)期期末聯(lián)考試題含解析
- 江西應(yīng)用工程職業(yè)學(xué)院《矩陣論3》2023-2024學(xué)年第二學(xué)期期末試卷
- 湛江市大成中學(xué)高二上學(xué)期第二次月考物理試題
- 2025年度長(zhǎng)期借款合同示范文本
- 2025公路運(yùn)輸合同范本
- 2025電子產(chǎn)品銷(xiāo)售勞動(dòng)合同范本
- 2025實(shí)驗(yàn)室建設(shè)項(xiàng)目合同書(shū)
- 2025年朋友咨詢(xún)關(guān)于勞動(dòng)合同的問(wèn)題求解答
- 微觀(guān)經(jīng)濟(jì)學(xué)(山東大學(xué))知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋山東大學(xué)
- 2024屆九省聯(lián)考英語(yǔ)試題(含答案解析、MP3及錄音稿)
- 2024年司法考試刑法真題及答案
- 2023“原理”練習(xí)題題庫(kù)
- 《工程倫理》練習(xí)題集
- 2024年高考真題-政治(江蘇卷) 含答案
- 文勘土方施工方案
- 港航實(shí)務(wù) 皮丹丹 教材精講班課件 52-第2章-2.5.3-鋪面面層施工-2.5.4-鋪面連接施工-2.5.5-堆場(chǎng)構(gòu)筑物施工
- 危險(xiǎn)品倉(cāng)儲(chǔ)危險(xiǎn)品貯運(yùn)車(chē)輛考核試卷
- 酒店工作安全培訓(xùn)(共60張課件)
- 中國(guó)超級(jí)計(jì)算行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)及發(fā)展趨向研判報(bào)告
評(píng)論
0/150
提交評(píng)論