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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

關于文件和函數句柄第一頁,共三十二頁,編輯于2023年,星期一6.1 Matlab控制流for循環(huán)while循環(huán)if-else-end結構switch-case結構第二頁,共三十二頁,編輯于2023年,星期一6.1.1 For循環(huán)結構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第三頁,共三十二頁,編輯于2023年,星期一for循環(huán)不能用for循環(huán)內重新賦值循環(huán)變量n來終止;在for循環(huán)內接受任何有效的MATLAB數組;for循環(huán)可按需要嵌套;當有一個等效的數組方法來解給定的問題時,應避免用for循環(huán);為了得到最大的速度,在for循環(huán)被執(zhí)行之前,應預先分配數組

.for循環(huán)的重要說明第四頁,共三十二頁,編輯于2023年,星期一>>forn=1:10 x(n)=sin(n*pi/10); n=10;end>>xx=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第五頁,共三十二頁,編輯于2023年,星期一>>forn=1:5 form=5:-1:1 A(n,m)=n^2+m^2; end disp(n)end12345>>AA=2510162658132029101318253416202532412629344150第六頁,共三十二頁,編輯于2023年,星期一>>n=1:10;>>x=sin(n.*pi/10)x=Columns1through60.30900.58680.80900.95111.00000.95110.8090Columns8through100.58680.30900.0000第七頁,共三十二頁,編輯于2023年,星期一>>x=zeros(1,10);%preallocatedmemoryforx>>forn=1:10 x(n)=sin(n*pi/10);end;第八頁,共三十二頁,編輯于2023年,星期一6.1.2 while循環(huán)結構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第九頁,共三十二頁,編輯于2023年,星期一6.1.3 if-else-end分支結構ifexpression{commands}endifexpressioncommandsevaluatedifTrueelsecommandsevaluatedifFalseendifexpression1commandsevaluatedifexpression1isTrueelseifexpression2commandsevaluatedifexpression2isTrueelseif…….elsecommandsevaluatedifnootherexpressionisTrueend第十頁,共三十二頁,編輯于2023年,星期一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第十一頁,共三十二頁,編輯于2023年,星期一6.1.4 switch-case結構switchex ex為一標量或字符串

casetest1 (commands1)

casetest2 (commands2)

…… casetestk (commandsk)

otherwise

(commands)第十二頁,共三十二頁,編輯于2023年,星期一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第十三頁,共三十二頁,編輯于2023年,星期一disp(['學生姓名','得分','等級']);disp('')fori=1:5;disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);end;學生姓名得分等級

Jack62及格Marry83良好Peter56不及格Rose94優(yōu)秀Tom100滿分第十四頁,共三十二頁,編輯于2023年,星期一6.2 腳本文件和函數文件6.2.1 M腳本文件的特點腳本文件運行后,所產生的所有變量都駐留在Matlab基本工作空間中。一串按用戶意圖排列而成的(包括控制流向指令在內的)Matlab指令集合;第十五頁,共三十二頁,編輯于2023年,星期一6.2.2 M函數文件及其特點1.函數文件的第一行總是以“function”引導的“函數申明行”(functiondeclarationline)。4.在函數文件中調用某腳本文件,那該腳本文件運行產生的所有變量都存放于該函數空間之中。3.函數工作空間。2.輸入參量包含傳遞這個函數的數據,輸出變量包含從這個函數輸出的變量。第十六頁,共三十二頁,編輯于2023年,星期一6.2.3 函數文件一般結構1.函數申明行:以關鍵字function開頭,定義函數名以及函數的輸入輸出參量。函數名和文件名必須相同。5.函數體:Matlab指令,接收輸入參量,進行程序流控制,得到輸出參量。4.編寫和修改記錄:以%開頭。標志編寫及修改該文件的作者、日期和版本記錄,用于軟件檔案管理。3.在線幫助文件文本:以%開頭。通常包括:函數輸入輸出參量的含義,調用格式說明。2.H1行:以%開頭,包括大寫體的函數文件名;運用關鍵詞要描述的函數功能。第十七頁,共三十二頁,編輯于2023年,星期一[circle.m]functionsa=circle(r,s)%CIRCLE 繪制一個半徑為r,顏色為s的圓周線或圓周面% r 指定半徑的數值% 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日。第十八頁,共三十二頁,編輯于2023年,星期一ifnargin>2error('輸入參量太多。');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第十九頁,共三十二頁,編輯于2023年,星期一第二十頁,共三十二頁,編輯于2023年,星期一6.2.4 局部變量和全局變量局部變量

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

一個matlab的M文件可以包含多個函數,第一個函數為主函數,其它則為子函數。保存時文件名與主函數名相同。外部程序只能對主函數進行調用。第二十四頁,共三十二頁,編輯于2023年,星期一子函數的特點:

1.子函數的結構與M函數文件基本相同。

2.在M文件內,主函數位置為首位不可改變,子函數位置次序可隨意。

3.子函數只能被同一文件中的主函數或其它子函數調用。

4.通過文件名調用時,子函數的優(yōu)先級低于內裝函數。

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論