文件和函數(shù)句柄_第1頁
文件和函數(shù)句柄_第2頁
文件和函數(shù)句柄_第3頁
文件和函數(shù)句柄_第4頁
文件和函數(shù)句柄_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

關(guān)于文件和函數(shù)句柄6.1 Matlab控制流for循環(huán)while循環(huán)if-else-end結(jié)構(gòu)switch-case結(jié)構(gòu)第2頁,共32頁,2024年2月25日,星期天6.1.1 For循環(huán)結(jié)構(gòu)forn=array {commands}end>>forn=1:10 x(n)=sin(n*pi/10);end>>xx=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第3頁,共32頁,2024年2月25日,星期天for循環(huán)不能用for循環(huán)內(nèi)重新賦值循環(huán)變量n來終止;在for循環(huán)內(nèi)接受任何有效的MATLAB數(shù)組;for循環(huán)可按需要嵌套;當(dāng)有一個等效的數(shù)組方法來解給定的問題時,應(yīng)避免用for循環(huán);為了得到最大的速度,在for循環(huán)被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組

.for循環(huán)的重要說明第4頁,共32頁,2024年2月25日,星期天>>forn=1:10 x(n)=sin(n*pi/10); n=10;end>>xx=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第5頁,共32頁,2024年2月25日,星期天>>forn=1:5 form=5:-1:1 A(n,m)=n^2+m^2; end disp(n)end12345>>AA=2510162658132029101318253416202532412629344150第6頁,共32頁,2024年2月25日,星期天>>n=1:10;>>x=sin(n.*pi/10)x=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第7頁,共32頁,2024年2月25日,星期天>>x=zeros(1,10);%preallocatedmemoryforx>>forn=1:10 x(n)=sin(n*pi/10);end;第8頁,共32頁,2024年2月25日,星期天6.1.2 while循環(huán)結(jié)構(gòu)whileexpression {commands}end>>num=0;EPS=1;>>while(1+EPS)>1 EPS=EPS/2; num=num+1;end>>numnum= 53>>EPS=EPS^2EPS= 2.2204e-016第9頁,共32頁,2024年2月25日,星期天6.1.3 if-else-end分支結(jié)構(gòu)ifexpression{commands}endifexpressioncommandsevaluatedifTrueelsecommandsevaluatedifFalseendifexpression1commandsevaluatedifexpression1isTrueelseifexpression2commandsevaluatedifexpression2isTrueelseif…….elsecommandsevaluatedifnootherexpressionisTrueend第10頁,共32頁,2024年2月25日,星期天break和continue的用法>>EPS=1;>>fornum=1:1000EPS=EPS/2;if(1+EPS)<=1 EPS=EPS*2 breakendendEPS=2.2204e-016>>numnum=53>>EPS=1;>>fornum=1:1000EPS=EPS/2;if(1+EPS)>1 continueendEPS=EPS*2breakendEPS=2.2204e-016>>numnum=53第11頁,共32頁,2024年2月25日,星期天6.1.4 switch-case結(jié)構(gòu)switchex ex為一標(biāo)量或字符串

casetest1 (commands1)

casetest2 (commands2)

…… casetestk (commandsk)

otherwise

(commands)第12頁,共32頁,2024年2月25日,星期天fori=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;c=[d,c];Name={'Jack','Marry','Peter','Rose','Tom'};Mark={62,83,56,94,100};Rank=cell(1,5);S=struct('Name',Name,'Marks',Mark,'Rank',Rank);fori=1:5switchS(i).Markscase100 S(i).Rank='滿分'; casea S(i).Rank='優(yōu)秀';caseb S(i).Rank='良好';casec S(i).Rank='及格';otherwise S(i).Rank='不及格';endend第13頁,共32頁,2024年2月25日,星期天disp(['學(xué)生姓名','得分','等級']);disp('')fori=1:5;disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);end;學(xué)生姓名得分等級

Jack62及格Marry83良好Peter56不及格Rose94優(yōu)秀Tom100滿分第14頁,共32頁,2024年2月25日,星期天6.2 腳本文件和函數(shù)文件6.2.1 M腳本文件的特點腳本文件運行后,所產(chǎn)生的所有變量都駐留在Matlab基本工作空間中。一串按用戶意圖排列而成的(包括控制流向指令在內(nèi)的)Matlab指令集合;第15頁,共32頁,2024年2月25日,星期天6.2.2 M函數(shù)文件及其特點1.函數(shù)文件的第一行總是以“function”引導(dǎo)的“函數(shù)申明行”(functiondeclarationline)。4.在函數(shù)文件中調(diào)用某腳本文件,那該腳本文件運行產(chǎn)生的所有變量都存放于該函數(shù)空間之中。3.函數(shù)工作空間。2.輸入?yún)⒘堪瑐鬟f這個函數(shù)的數(shù)據(jù),輸出變量包含從這個函數(shù)輸出的變量。第16頁,共32頁,2024年2月25日,星期天6.2.3 函數(shù)文件一般結(jié)構(gòu)1.函數(shù)申明行:以關(guān)鍵字function開頭,定義函數(shù)名以及函數(shù)的輸入輸出參量。函數(shù)名和文件名必須相同。5.函數(shù)體:Matlab指令,接收輸入?yún)⒘浚M行程序流控制,得到輸出參量。4.編寫和修改記錄:以%開頭。標(biāo)志編寫及修改該文件的作者、日期和版本記錄,用于軟件檔案管理。3.在線幫助文件文本:以%開頭。通常包括:函數(shù)輸入輸出參量的含義,調(diào)用格式說明。2.H1行:以%開頭,包括大寫體的函數(shù)文件名;運用關(guān)鍵詞要描述的函數(shù)功能。第17頁,共32頁,2024年2月25日,星期天[circle.m]functionsa=circle(r,s)%CIRCLE 繪制一個半徑為r,顏色為s的圓周線或圓周面% r 指定半徑的數(shù)值% s 指定線色的字符串% sa 圓面積%%circle(r) 利用藍實線畫半徑為r的圓周線.%circle(r,s) 利用串s指定的線色畫半徑為r的圓周線.%sa=circle(r) 計算圓面積,并畫半徑為r的藍色圓面.%sa=circle(r,s) 計算圓面積,并畫半徑為r的s色圓面.%編寫于1999年4月6日,修改于1999年8月26日。第18頁,共32頁,2024年2月25日,星期天ifnargin>2error('輸入?yún)⒘刻唷?);end;ifnargin==1s='b';end;t=0:pi/100:2*pi;x=r*exp(i*t);ifnargout==0plot(x,s);elsesa=pi*r*r;fill(real(x),imag(x),s)end第19頁,共32頁,2024年2月25日,星期天第20頁,共32頁,2024年2月25日,星期天6.2.4 局部變量和全局變量局部變量

存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運行過程中,其影響范圍也僅限于該函數(shù)本身。全局變量通過global指令定義變量,沒有采用global定義的函數(shù)或基本工作空間,將無權(quán)享用全局變量。第21頁,共32頁,2024年2月25日,星期天關(guān)于全局變量的說明1.如果全局變量的內(nèi)容發(fā)生了變化,那么其他函數(shù)空間以及基本工作空間中的同名變量也就隨之變化。5.全局變量損害函數(shù)的封裝性,不提倡使用全局變量。4.建議選用大寫字符命名全局變量。3.對全局變量的定義必須在變量被使用之前進行。建議把全局變量的定義放在函數(shù)體的首行位置。2.除非與全局變量聯(lián)系的所有工作空間都被刪除,否則全局變量依然存在。。第22頁,共32頁,2024年2月25日,星期天6.3Matlab的函數(shù)類別Matlab的M文件分為M腳本文件和M函數(shù)文件。函數(shù)Function又被分為主函數(shù)、子函數(shù)、嵌套函數(shù)、私用函數(shù)、匿名函數(shù)等。第23頁,共32頁,2024年2月25日,星期天主函數(shù)和子函數(shù)

一個matlab的M文件可以包含多個函數(shù),第一個函數(shù)為主函數(shù),其它則為子函數(shù)。保存時文件名與主函數(shù)名相同。外部程序只能對主函數(shù)進行調(diào)用。第24頁,共32頁,2024年2月25日,星期天子函數(shù)的特點:

1.子函數(shù)的結(jié)構(gòu)與M函數(shù)文件基本相同。

2.在M文件內(nèi),主函數(shù)位置為首位不可改變,子函數(shù)位置次序可隨意。

3.子函數(shù)只能被同一文件中的主函數(shù)或其它子函數(shù)調(diào)用。

4.通過文件名調(diào)用時,子函數(shù)的優(yōu)先級低于內(nèi)裝函數(shù)。

5.主、子函數(shù)的工作空間互相獨立,變量傳遞利用啞實結(jié)合。第25頁,共32頁,2024年2月25日,星期天匿名函數(shù)參見課本P251第26頁,共32頁,2024年2月25日,星期天6.4 函數(shù)句柄函數(shù)句柄(Functionhandle)是Matlab6啟用的新數(shù)據(jù)類型。它保存著“為該函數(shù)創(chuàng)建句柄時的路徑、函數(shù)名以及可能存在的重載方法”。第27頁,共32頁,2024年2月25日,星期天6.4.1 函數(shù)句柄的創(chuàng)建和觀察>>hsin=@sin;>>class(hsin)ans=function_handle>>size(hsin)ans=11>>CC=functions(hsin)CC=function:'sin'type:'simple'file:'MATLABbuilt-infunction'第28頁,共32頁,2024年2月25日,星期天6.4.2 函數(shù)句柄的基本用法不管名為FunName的函數(shù)文件是否在當(dāng)前搜索路徑上,不管它是否是子函數(shù)或私用函數(shù),只要句柄hfun存在,那么它代表的函數(shù)總能被正確地執(zhí)行。在不使用函數(shù)句柄的情況下,對FunName進行多次調(diào)用時,每次都要為該函數(shù)進行全面的路徑搜索,這直接影響計算速度。借助hfun可完全克服這種無謂的時間消耗。1.[argout1,argout2,…,argoutn]=FunName(argin1,argin2,…,arginn)2.hfun=

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論