第六章M文件和函數(shù)句柄_第1頁
第六章M文件和函數(shù)句柄_第2頁
第六章M文件和函數(shù)句柄_第3頁
第六章M文件和函數(shù)句柄_第4頁
第六章M文件和函數(shù)句柄_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第六章 M文件和函數(shù)句柄 matlab語言稱為第四代語言稱為第四代編程語言,程序簡潔、可讀性編程語言,程序簡潔、可讀性很強(qiáng)而且調(diào)試十分容易。很強(qiáng)而且調(diào)試十分容易。 進(jìn)行程序設(shè)計(jì)的進(jìn)行程序設(shè)計(jì)的m文件是文件是matlab重要組成部分。重要組成部分。 介紹教材第介紹教材第6章內(nèi)容章內(nèi)容 本章內(nèi)容 1 matlab控制流 2 腳本文件和函數(shù)文件 3 函數(shù)類別 4 函數(shù)句柄1 matlabmatlab的程序結(jié)構(gòu)的程序結(jié)構(gòu)(1) 順序結(jié)構(gòu)順序結(jié)構(gòu) 依次順序執(zhí)行程序的各條語句依次順序執(zhí)行程序的各條語句(2) 分支結(jié)構(gòu)分支結(jié)構(gòu)根據(jù)一定條件來執(zhí)行各條語句。根據(jù)一定條件來執(zhí)行各條語句。 if else end條

2、件控制語句有條件控制語句有3種形式種形式 單分支單分支 、雙分支、多分支、雙分支、多分支 switch case otherwise end結(jié)構(gòu)結(jié)構(gòu) 僅執(zhí)行滿足條件的分支僅執(zhí)行滿足條件的分支 (3) 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 被重復(fù)執(zhí)行的一組語句。被重復(fù)執(zhí)行的一組語句。 循環(huán)語句主要有:循環(huán)語句主要有: for end while end分支結(jié)構(gòu)分支結(jié)構(gòu)根據(jù)一定條件來執(zhí)行的各條語句根據(jù)一定條件來執(zhí)行的各條語句 if else end語句有語句有3種形式種形式(注意注意elseif和和else if之不同之不同) 單分支單分支 if 表達(dá)式表達(dá)式 執(zhí)行語句執(zhí)行語句 end 雙分支雙分支 if 表達(dá)式表達(dá)

3、式 語句語句1 else 語句語句2 end多分支多分支 if 表達(dá)式表達(dá)式1 語句語句1 elseif 表達(dá)式表達(dá)式2 語句語句2 elseif 表達(dá)式表達(dá)式3 語句語句3 else 語句語句n end 在在條件表達(dá)式條件表達(dá)式中,通常用關(guān)系、邏輯表達(dá)式或代中,通常用關(guān)系、邏輯表達(dá)式或代數(shù)表達(dá)式數(shù)表達(dá)式 關(guān)系操作符關(guān)系操作符: , ,=, = =, = 邏輯操作符邏輯操作符: &,| , 邏輯函數(shù)邏輯函數(shù):isequal 若是相等則為真若是相等則為真 isempty 若是空矩陣則為真若是空矩陣則為真 isstr 若是字符串則為真若是字符串則為真注意:條件表達(dá)式允許數(shù)組間進(jìn)行關(guān)系、邏輯運(yùn)算注意

4、:條件表達(dá)式允許數(shù)組間進(jìn)行關(guān)系、邏輯運(yùn)算時(shí),數(shù)組元素全時(shí),數(shù)組元素全1為真,否則為假為真,否則為假functionfunction y= y=abcabc(x)(x) n=length(x); n=length(x); forfor k=1:n k=1:n ifif x(k)-1 x(k)=1 x(k)=1 y(ky(k)=x(k)2;)=x(k)2; elseelse y(k)=x(k)3; y(k)=x(k)3; endendendend% %調(diào)用:調(diào)用:abcabc(-2,-0.1,1)(-2,-0.1,1)例例6.1-1:編寫:編寫m函函數(shù),計(jì)算函數(shù)值數(shù),計(jì)算函數(shù)值321111xxyx

5、xxx switch-caseswitch-case語法結(jié)構(gòu):語法結(jié)構(gòu): switch exprswitch expr case value1 case value1 (commands 1) (commands 1) case value2 case value2 case vlauek case vlauek (commands k) (commands k) otherwise otherwise (commands) (commands) end end例例6.1-26.1-2:根據(jù)學(xué)生百分制分?jǐn)?shù)進(jìn)行等級成績劃分:根據(jù)學(xué)生百分制分?jǐn)?shù)進(jìn)行等級成績劃分for i=1:10 a(i)=89+

6、i; b(i)=79+i; c(i)=69+i; d(i)=59+i; endc=d,c;A=cell(2,5); A(1,:)=Jack,Marry,Peter,Rose,Tom;A(2,:)=72,83,56,94,100;for k=1:5 switch A2,k case 100, A3,k= 滿分; case a, A3,k= 優(yōu)秀; case b, A3,k= 良好; case c, A3,k= 及格; otherwise, A3,k= 不及格; endendAJack Marry Peter Rose Jack Marry Peter Rose Tom Tom 72 72 83

7、83 56 56 94 100 94 100 及格及格 良好良好 不及格不及格 優(yōu)秀優(yōu)秀 滿分滿分 for循環(huán)循環(huán)(定次數(shù)的循環(huán)定次數(shù)的循環(huán)),結(jié)構(gòu)語法為:結(jié)構(gòu)語法為: for i = 表達(dá)式表達(dá)式 (表達(dá)式為數(shù)組,按列循環(huán))(表達(dá)式為數(shù)組,按列循環(huán)) 可執(zhí)行語句可執(zhí)行語句 end例例6.1-3:用:用for循環(huán)生成循環(huán)生成Hilber方陣方陣( ) 循環(huán)法循環(huán)法: K=5;K=5; A=zeros(K,K) A=zeros(K,K);%;%預(yù)配置內(nèi)存空間預(yù)配置內(nèi)存空間 for m=1:Kfor m=1:K for n=1:K for n=1:K A(m,n)=1/(m+n-1); A(m,n

8、)=1/(m+n-1); end end end end format rat format rat A A) 1/(1),(jijia向量法向量法: N=5; n=repmat(1:N,N,1); m=n; format rat A3=1./(n+m-1)while end (不定次數(shù)的循環(huán)不定次數(shù)的循環(huán))循環(huán)結(jié)構(gòu)語法為:循環(huán)結(jié)構(gòu)語法為: while 表達(dá)式表達(dá)式 循環(huán)體語句循環(huán)體語句 end 表達(dá)式一般是由邏輯運(yùn)算和關(guān)系運(yùn)算以及一表達(dá)式一般是由邏輯運(yùn)算和關(guān)系運(yùn)算以及一般運(yùn)算組成的,以判斷循環(huán)的進(jìn)行和停止;只般運(yùn)算組成的,以判斷循環(huán)的進(jìn)行和停止;只要表達(dá)式的值非要表達(dá)式的值非0,繼續(xù)循環(huán);直

9、到表達(dá)式值為,繼續(xù)循環(huán);直到表達(dá)式值為0,循環(huán)停止。,循環(huán)停止。例例6.1-4:計(jì)算計(jì)算 , ,N是使是使 的最小的最小function S,N=exm060104(tao)k=0;s=0;d=inf;S=0;while dtao k=k+1; s=s+k; d=1/s; %Rn%Rn通項(xiàng)通項(xiàng) S=S+d;endN=k;調(diào)用調(diào)用:S,N=exm060104(0.00001) S = 1.9955, N = 4471NnnSR符號法驗(yàn)證結(jié)果符號法驗(yàn)證結(jié)果: :syms k n Nsyms k n NSINF=limit(symsum( SINF=limit(symsum( %無窮項(xiàng)和無窮項(xiàng)和 1

10、/symsum(k,1,n),n,1,N),N,inf)1/symsum(k,1,n),n,1,N),N,inf) SINF=2SINF=2N=447;N=447;SN=vpa(symsum(1/symsumSN=vpa(symsum(1/symsum (k,1,n),n,1,N) (k,1,n),n,1,N) %N%N項(xiàng)項(xiàng)(141(141項(xiàng)項(xiàng)) )和和 SN=1.9955SN=1.9955正整數(shù),正整數(shù),=1e-5時(shí)時(shí)求求S和和N。11nnkRknR控制流的其他常用指令見表控制流的其他常用指令見表6.1-4V1=input(message) %輸入賦給變量輸入賦給變量V1的值的值V2=inp

11、ut(message,s) %輸入賦給變量輸入賦給變量V1的字符串的字符串keyboard %控制權(quán)交給鍵盤控制權(quán)交給鍵盤return %控制權(quán)主調(diào)函數(shù)或指令窗控制權(quán)主調(diào)函數(shù)或指令窗break %中止循環(huán)或分支程序中止循環(huán)或分支程序continue %跳出本次循環(huán),進(jìn)行下一次循環(huán)跳出本次循環(huán),進(jìn)行下一次循環(huán)pause(n) %程序暫停程序暫停n秒秒2 m文件文件 m文件的語法類似于文件的語法類似于c語言,但又有其自身特語言,但又有其自身特點(diǎn)。它只是一個(gè)簡單的點(diǎn)。它只是一個(gè)簡單的ASCII碼文本文件,執(zhí)碼文本文件,執(zhí)行程序時(shí)逐行解釋運(yùn)行程序。行程序時(shí)逐行解釋運(yùn)行程序。 m文件有兩類文件有兩類獨(dú)立

12、的獨(dú)立的m文件文件 稱稱腳本文件腳本文件 可調(diào)用可調(diào)用m文件文件 稱稱函數(shù)文件函數(shù)文件(1)腳本腳本文件文件 簡單的簡單的m文件文件 腳本腳本文件實(shí)際上是一串指令的集合,與在命文件實(shí)際上是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣的。是一樣的。沒有輸入輸出參數(shù)沒有輸入輸出參數(shù)。(2) M函數(shù)文件函數(shù)文件 需要輸入變量,返回輸出變量需要輸入變量,返回輸出變量函數(shù)函數(shù)m文件的格式:文件的格式: function 返回變量返回變量=函數(shù)名(輸入變量)函數(shù)名(輸入變量) %注釋說明語句段注釋說明語句段 程序語句段程序語句段特定規(guī)則特定規(guī)則:

13、1.第一行總是以第一行總是以function引導(dǎo)函數(shù)申明行引導(dǎo)函數(shù)申明行,并說明輸入和并說明輸入和輸出量輸出量;2.允許使用比標(biāo)稱數(shù)目少的輸入允許使用比標(biāo)稱數(shù)目少的輸入/輸出量,實(shí)現(xiàn)函數(shù)調(diào)用輸出量,實(shí)現(xiàn)函數(shù)調(diào)用3.m文件的文件名文件的文件名最好最好是是 .m;4.程序中的變量均為局部變量,不保存在工作空間中。程序中的變量均為局部變量,不保存在工作空間中。 其變量只在函數(shù)運(yùn)行期間有效。其變量只在函數(shù)運(yùn)行期間有效。注意注意 : (1) 所創(chuàng)建的所創(chuàng)建的m文件必須納入文件必須納入matlab搜索路徑后,搜索路徑后,才能在才能在matlab命令窗口運(yùn)行。命令窗口運(yùn)行。 (2) 注意注意matlab 缺

14、省路徑缺省路徑 (3) 主程序主程序(命令命令m文件或腳本文件或腳本m文件文件)和函數(shù)子和函數(shù)子程序程序(函數(shù)函數(shù)m文件文件)必須在必須在同一路徑同一路徑下下 (4)產(chǎn)生句柄函數(shù)后產(chǎn)生句柄函數(shù)后可不受路徑限制可不受路徑限制,使函數(shù)正使函數(shù)正常工作常工作(1)主函數(shù)主函數(shù):由第一個(gè)由第一個(gè)function引出的函數(shù)引出的函數(shù)(2)子函數(shù)子函數(shù):由非第一個(gè)由非第一個(gè)function引出的引出的,寄生在主函數(shù)體內(nèi)寄生在主函數(shù)體內(nèi)的函數(shù)的函數(shù) 各函數(shù)間通過輸入輸出宗量或全局變量傳遞各函數(shù)間通過輸入輸出宗量或全局變量傳遞(3)匿名函數(shù)匿名函數(shù):不以文件形式駐留在文件夾中不以文件形式駐留在文件夾中 創(chuàng)建創(chuàng)

15、建:FH=(arglis)expr %arglis是輸入量列表是輸入量列表,FH是匿名函數(shù)句柄是匿名函數(shù)句柄 直接調(diào)用直接調(diào)用:FH(arglis) 間接調(diào)用間接調(diào)用:feval(FH,arglis)3 函數(shù)類別例例: :匿名函數(shù)的調(diào)用匿名函數(shù)的調(diào)用 y=(x)(x.2+x-20) feval(y,2) 或或 y(2)例例6.3-1: 編寫一個(gè)內(nèi)含子函數(shù)的函數(shù)編寫一個(gè)內(nèi)含子函數(shù)的函數(shù)M文件文件function Hr=exm060301(flag)t=(0:50)/50*2*pi;x=sin(t);y=cos(t)Hr=cirline;feval(Hr,flag,x,y,t)%-subfunct

16、ion-function cirline(wd,x,y,t)switch wd case line plot(t,x,b,t,y,r); case circle plot(x,y,-g) otherwise error(輸入宗量錯(cuò)輸入宗量錯(cuò)!)endaxis square%主調(diào)函數(shù)主調(diào)函數(shù)exm060301(line)HH=exm060301(circle) %繪圖并返回子函數(shù)句柄繪圖并返回子函數(shù)句柄t=(0:2*pi/5:2*pi);x=cos(t);y=sin(t);HH(circle,x,y,t) %通過子函數(shù)句柄直接調(diào)用子函數(shù)通過子函數(shù)句柄直接調(diào)用子函數(shù)5 函數(shù)句柄函數(shù)句柄 函數(shù)句柄是

17、函數(shù)句柄是matlab的一種數(shù)據(jù)類型,攜帶著的一種數(shù)據(jù)類型,攜帶著“相應(yīng)函數(shù)創(chuàng)建句柄時(shí)的路徑、視野、函數(shù)相應(yīng)函數(shù)創(chuàng)建句柄時(shí)的路徑、視野、函數(shù)名及重載方法名及重載方法”。 優(yōu)點(diǎn)優(yōu)點(diǎn): 使函數(shù)調(diào)用像變量一樣靈活方便使函數(shù)調(diào)用像變量一樣靈活方便 拓寬子函數(shù)包括局部函數(shù)的使用范圍拓寬子函數(shù)包括局部函數(shù)的使用范圍 提高函數(shù)調(diào)用的可靠性和軟件的重用性提高函數(shù)調(diào)用的可靠性和軟件的重用性 減少程序設(shè)計(jì)中的冗余減少程序設(shè)計(jì)中的冗余 提高重復(fù)執(zhí)行的效率提高重復(fù)執(zhí)行的效率1. 函數(shù)句柄的創(chuàng)建和顯示函數(shù)句柄的創(chuàng)建和顯示 函數(shù)句柄的定義只需在提示符函數(shù)句柄的定義只需在提示符后添加相應(yīng)函數(shù)后添加相應(yīng)函數(shù)的函數(shù)名的函數(shù)名

18、f_h=plot % %與與f_h=str2func(f_h=str2func(plotplot) )等價(jià)等價(jià)則則: f_h = : f_h = plot plot 函數(shù)句柄的內(nèi)容通過函數(shù)句柄的內(nèi)容通過functions顯示顯示 functionsfunctions(f_h)(f_h)ans = ans = function: plot type: simple file: MATLAB built-in function2.函數(shù)句柄的調(diào)用函數(shù)句柄的調(diào)用例例6.4-1 為為magic函數(shù)創(chuàng)建函數(shù)句柄函數(shù)創(chuàng)建函數(shù)句柄 hm=magic %hm=str2func(magic) hm(4) %直接調(diào)用直接調(diào)用 feval(hm,4) %間接調(diào)用間接調(diào)用 間接調(diào)用格式間接調(diào)用格式: feval(函數(shù)句柄,參數(shù)列表)函數(shù)句柄,參數(shù)列表) 例例: f_h=plot %f_h=str2func(plot) feval(f_h,0:10,0:10)例例6.2-1:根據(jù)指定不同的半徑、色彩、線型,繪出圓周:根據(jù)指定不同的半徑、色彩、線型,繪出圓周線或圓。線或圓。function S,L=exm060

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論