第5章MATLAB科學計算ppt課件_第1頁
第5章MATLAB科學計算ppt課件_第2頁
第5章MATLAB科學計算ppt課件_第3頁
第5章MATLAB科學計算ppt課件_第4頁
第5章MATLAB科學計算ppt課件_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_第五章第五章 MATLAB科學計算科學計算5.1 符號對象和符號表達式符號對象和符號表達式5.2 微積分運算微積分運算5.3 線性代數(shù)運算線性代數(shù)運算5.4 數(shù)據(jù)分析數(shù)據(jù)分析5.55.6 可視化數(shù)學分析可視化數(shù)學分析Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.1 符號對象的生成和使用符號對象的生成和使用指令格式:指

2、令格式:f=sym(arg):把表達式:把表達式arg轉換為符號對象轉換為符號對象f=sym(argn,flagn):把表達式:把表達式arg轉換為轉換為flagn格式的格式的符號對象符號對象argv=sym(argv,flgv):按:按flagv指定的要求把表達式指定的要求把表達式argv定義為符號對象定義為符號對象argvsyms(argv1,argv2,argvk):把字符:把字符arg1,arg2,argk定義為基本符號對象定義為基本符號對象arg是數(shù)值及其表達式時,是數(shù)值及其表達式時,flag可取選項:可取選項:d:最接近的十進制浮點精確表示:最接近的十進制浮點精確表示e:帶估計誤差

3、的有理表示:帶估計誤差的有理表示f:十六進制浮點表示:十六進制浮點表示r:最接近有理表示,缺省設置:最接近有理表示,缺省設置arg是字符時,是字符時,flag可取選項:可取選項:positive:限定:限定argv為正實數(shù)符號變量為正實數(shù)符號變量real:限定:限定argv為實數(shù)符號變量為實數(shù)符號變量unreal:argv為非實數(shù)符號變量為非實數(shù)符號變量Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.2 符號計算中的運算符和基本函數(shù)符號計算中的運算符和

4、基本函數(shù)運算符:運算符:矩陣運算符:矩陣運算符:+、-、*、/、數(shù)組運算符:數(shù)組運算符:.*、./、.、.、.關系運算符:只要關系運算符:只要=、=函數(shù)運算:函數(shù)運算:三角函數(shù)、雙曲函數(shù)及其反函數(shù)三角函數(shù)、雙曲函數(shù)及其反函數(shù)指數(shù)函數(shù)、對數(shù)函數(shù):只有指數(shù)函數(shù)、對數(shù)函數(shù):只有l(wèi)og,沒有,沒有l(wèi)og2、log10復數(shù)函數(shù):復數(shù)函數(shù):conj、real、imag、abs,沒有求相,沒有求相角的指令角的指令矩陣代數(shù)指令:矩陣代數(shù)指令:diag、triu、tril、inv、det、rank、rref、null、colspace、poly、expm、eig、svd特例:特例:U,S,V=svd(A)如果如

5、果A矩陣含有非常數(shù)的自由變量,只能使用矩陣含有非常數(shù)的自由變量,只能使用S=svd(A)如果如果A不含有自由變量,不含有自由變量,U,S,V=svd(A)將可以將可以給出給出32位精度的數(shù)值形式的符號解位精度的數(shù)值形式的符號解Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.3 識別符號對象類別與自由變量確定識別符號對象類別與自由變量確定識別符號對象類別:識別符號對象類別:符號對象類別識別:符號對象類別識別:class(sym)符號對象大小判別:符號對象

6、大小判別:size(sym)符號大小屬性獲?。悍柎笮傩垣@?。簑hos sym自由變量確定自由變量確定findsym(expr):確認表達式:確認表達式expr中所有中所有自由符號變量自由符號變量findsym(expr,n):從表達式:從表達式expr中確認中確認出靠出靠x最近的最近的N個獨立自由變量個獨立自由變量Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.4 符號表達式與符號函數(shù)的操作符號表達式與符號函數(shù)的操作符號表達式的操作:符號表達式的操

7、作:collect(expr,v):對:對expr表達式中指定的符號對象表達式中指定的符號對象v的同的同冪項系數(shù)進行合并冪項系數(shù)進行合并expand(expr):對:對expr表達式進行展開表達式進行展開factor(expr):對:對expr表達式進行因式分解表達式進行因式分解horner(expr):把多項式:把多項式expr分解為嵌套形式分解為嵌套形式n,d=numden(expr):提取表達式:提取表達式expr的分母與分子的分母與分子simplify(expr):對表達式:對表達式expr進行化簡進行化簡simple(expr):把:把expr轉換為最簡形式轉換為最簡形式pretty

8、(expr):以習慣的書寫方式顯示:以習慣的書寫方式顯示expr表達式表達式符號函數(shù)的操作:符號函數(shù)的操作:g=finverse(f,v):對函數(shù):對函數(shù)f(v)求反函數(shù)求反函數(shù)g(v)g=finverse(f):對缺省自變量求反函數(shù):對缺省自變量求反函數(shù)gfg=compose(f,g,v,w,t):對:對f(v)和和v=g(w)求復合函數(shù)求復合函數(shù)fg=f(g(w)fg=compose(f,g):依缺省自變量對:依缺省自變量對f和和g求復合函數(shù)求復合函數(shù)fg=f(g()缺省自變量由缺省自變量由findsym自動確定自動確定Tel:63292873QQ:641296082Email:zuo_T

9、el:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.5 置換及其應用置換及其應用自動執(zhí)行的子表達式置換自動執(zhí)行的子表達式置換RS,ssub=subexpr(S,ssub)運用符號變量運用符號變量ssub置換子表達式,重寫置換子表達式,重寫S為為RS被置換的子表達式是機器自動尋找的被置換的子表達式是機器自動尋找的置換原則與置換原則與pretty指令相同指令相同通用置換指令:通用置換指令:RES=subs(ES,old,new):用:用new置換置換ES中的中的old后產(chǎn)生后產(chǎn)生RESRES=subs(ES,new):用:用ne

10、w置換置換ES中的自由中的自由變量后產(chǎn)生變量后產(chǎn)生RESRES=subs(ES):用當前內(nèi)存中已知值置換:用當前內(nèi)存中已知值置換ES中中所有可能的同名變量后產(chǎn)生所有可能的同名變量后產(chǎn)生RESold可取串表達式、符號變量、元胞數(shù)組、數(shù)值可取串表達式、符號變量、元胞數(shù)組、數(shù)值變量變量subs指令可以嵌套指令可以嵌套Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.6 符號數(shù)值精度控制與計算符號數(shù)值精度控制與計算向雙精度數(shù)值轉換的向雙精度數(shù)值轉換的double

11、指令指令對符號運算結果采用對符號運算結果采用double指令時所產(chǎn)生指令時所產(chǎn)生的誤差是準確的符號結果轉換為數(shù)值時的誤差是準確的符號結果轉換為數(shù)值時產(chǎn)生的,而不是整個運算過程中積累而產(chǎn)生的,而不是整個運算過程中積累而成成完全由數(shù)值計算所得結果精度較差完全由數(shù)值計算所得結果精度較差任意精度的符號數(shù)值任意精度的符號數(shù)值digits:顯示當前采用的數(shù)值計算的誤差:顯示當前采用的數(shù)值計算的誤差digits(n):設置今后數(shù)值計算以:設置今后數(shù)值計算以n位相對位相對精度進行精度進行xs=vpa(x):在:在digits指定精度下給出指定精度下給出x的的數(shù)值型符號結果數(shù)值型符號結果xsxsvpa(x,n)

12、:在:在n位相對精度下給出位相對精度下給出x的的數(shù)值型符號結果數(shù)值型符號結果xsTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.7 符號對象與其他數(shù)據(jù)對象間的轉換符號對象與其他數(shù)據(jù)對象間的轉換符號、數(shù)值、字符串間的轉換符號、數(shù)值、字符串間的轉換數(shù)值型符號結果符號常數(shù)符號表達式數(shù)值字符串表達式ASCII碼str2num str2double sscanfint2str num2str mat2str sprintfdoublevpavpacharsymc

13、hardoublesymdoubleTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.1 符號對象和符號表達式符號對象和符號表達式5.1.7 符號對象與其他數(shù)據(jù)對象間的轉換符號對象與其他數(shù)據(jù)對象間的轉換符號多項式、系數(shù)向量、字符串多項式轉符號多項式、系數(shù)向量、字符串多項式轉換換符號多項式數(shù)值系數(shù)向量字符串多項式易讀型表達式poly2strcharsymprettypoly2symsym2polyTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:6412960

14、82Email:zuo_5.2 微積分運算微積分運算5.2.1 極限問題的求解極限問題的求解一元函數(shù)的極限一元函數(shù)的極限L=limit(fun,x,x0):求:求xx0時函數(shù)時函數(shù)fun的極限的極限L=limit(fun,x,x0,left或或right):求:求xx0時時函數(shù)函數(shù)fun的單側極限的單側極限L=limit(fun):默認:默認x0時求函數(shù)時求函數(shù)fun的極限的極限若若x0為為,則可以用,則可以用inf直接表示直接表示多元函數(shù)的極限:多元函數(shù)的極限:L=limit(limit(f,x,x0),y,y0):求函數(shù):求函數(shù)xx0,yy0時函數(shù)時函數(shù)f的極限的極限L=limit(lim

15、it(f, y,y0), x,x0):求函數(shù):求函數(shù)yy0 ,xx0時函數(shù)時函數(shù)f的極限的極限如果如果x0或或y0不是確定的值,而是另一個變量的不是確定的值,而是另一個變量的函數(shù),則求極限的次序不可交換函數(shù),則求極限的次序不可交換數(shù)值解法:數(shù)值解法:要求函數(shù)要求函數(shù)f(x)的極限,可以將自變量的極限,可以將自變量x用用x+eps代代入入f(x)直接計算直接計算如果如果x為為,則同樣可以用,則同樣可以用inf作為作為x的值直接計算的值直接計算Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.2 微積分運算微

16、積分運算5.2.2 函數(shù)的導數(shù)函數(shù)的導數(shù)一元函數(shù)的導數(shù):一元函數(shù)的導數(shù):y=diff(fun,x):求函數(shù):求函數(shù)fun關于關于x的一階導的一階導數(shù)數(shù)y=diff(fun,x,n):求函數(shù):求函數(shù)fun關于關于x的的n階階導數(shù)導數(shù)多元函數(shù)的偏導數(shù):多元函數(shù)的偏導數(shù):fp=diff(diff(f,x,m),y,n):求函數(shù):求函數(shù)f的的m+n階混合偏導數(shù)階混合偏導數(shù)fp=diff(diff(f,y,n),x,m):求函數(shù):求函數(shù)f的的m+n階混合偏導數(shù)階混合偏導數(shù)J=jacobian(y,x):求向量函數(shù):求向量函數(shù)y對對x的偏的偏導數(shù)組成的導數(shù)組成的Jacobi矩陣矩陣Tel:63292873

17、QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.2 微積分運算微積分運算5.2.3 函數(shù)的積分函數(shù)的積分積分的解析解:積分的解析解:Intf=int(f,v):求:求f對指定變量對指定變量v的不定積分的不定積分Intf=int(f,v,a,b):求:求f對變量對變量v的定積分的定積分a、b分別是定積分的上下限,可以是任何合法表達式分別是定積分的上下限,可以是任何合法表達式多重積分:多重積分:int(int(f(x,y),y,a,b),x,c,d)交互式近似積分:交互式近似積分:aint=rsums(fx)fx必須是以必須是以x

18、為自變量的一元函數(shù)為自變量的一元函數(shù)積分在積分在0,1區(qū)間上進行區(qū)間上進行數(shù)值積分:數(shù)值積分:矩形法、梯形法、矩形法、梯形法、Simpson法、法、Romberg法法數(shù)值積分指令:數(shù)值積分指令:q=quadl(fun,a,b,tol,trace,p1,p2,)fun可以是字符串、內(nèi)聯(lián)函數(shù)、函數(shù)句柄可以是字符串、內(nèi)聯(lián)函數(shù)、函數(shù)句柄A、b是積分的下限和上限,都是確定的數(shù)值是積分的下限和上限,都是確定的數(shù)值前三個參數(shù)是必須的,后面的參數(shù)可以缺省前三個參數(shù)是必須的,后面的參數(shù)可以缺省tol是控制絕對誤差的標量,缺省為是控制絕對誤差的標量,缺省為10-6p1,p2等是向被積函數(shù)傳遞的參數(shù)等是向被積函數(shù)傳

19、遞的參數(shù)S=dblquad(fun,a,b,c,d,tol,method):計算二重積分:計算二重積分S=triplequad(fun,a,b,c,d,e,f,tol,method):計算三重:計算三重積分積分Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_5.2 微積分運算微積分運算5.2.4 數(shù)值導數(shù)數(shù)值導數(shù)Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件類型與運行機制文件類型與運行機制3.2.5 P碼

20、文件碼文件語法分析過程和偽代碼語法分析過程和偽代碼一個一個M文件首次被調(diào)用時,文件首次被調(diào)用時,MATLAB首先對該首先對該M文件進行語法分析,并把生成的相應內(nèi)部偽文件進行語法分析,并把生成的相應內(nèi)部偽代碼文件存放在內(nèi)存中代碼文件存放在內(nèi)存中再次調(diào)用該再次調(diào)用該M文件時,將直接調(diào)用該文件在內(nèi)存文件時,將直接調(diào)用該文件在內(nèi)存中的中的P碼文件,而不會對原碼文件重復進行語碼文件,而不會對原碼文件重復進行語法分析法分析P碼文件與原碼文件有相同的文件名,但擴展名碼文件與原碼文件有相同的文件名,但擴展名是是.pP碼文件運行速度高于原碼文件碼文件運行速度高于原碼文件如果存在同名的如果存在同名的P碼和原碼文件

21、,那么當該文件碼和原碼文件,那么當該文件名被調(diào)用時,被執(zhí)行的肯定是名被調(diào)用時,被執(zhí)行的肯定是P碼文件碼文件P碼文件的預生成碼文件的預生成pcode FunName:在當前目錄上生成:在當前目錄上生成FunName.ppcode FunName inplace:在:在FunName.m所在目錄上生成所在目錄上生成FunName.pTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.2 M文件類型與運行機制文件類型與運行機制3.2.6 MATLAB的搜索過程的搜索過程如果如果MATLAB在一個文件中遇到指令在一

22、個文件中遇到指令cow其搜索過程如下:其搜索過程如下:檢查檢查cow是否為一個變量名;如果不是,執(zhí)行下是否為一個變量名;如果不是,執(zhí)行下一步一步檢查檢查cow是否內(nèi)建函數(shù);假如不是,執(zhí)行下一步是否內(nèi)建函數(shù);假如不是,執(zhí)行下一步檢查檢查cow是不是是不是cow所在的所在的M文件中的一個子函文件中的一個子函數(shù);如果不是,再往下執(zhí)行數(shù);如果不是,再往下執(zhí)行檢查檢查cow是不是是不是cow所在的所在的M文件中的一個私有文件中的一個私有函數(shù);假如不是,再往下執(zhí)行函數(shù);假如不是,再往下執(zhí)行檢查檢查cow是不是當前目錄上的文件;假如不是,是不是當前目錄上的文件;假如不是,再往下執(zhí)行再往下執(zhí)行檢查搜索路徑上是

23、否有檢查搜索路徑上是否有cow存在存在MATLAB將使用最先找到的那個將使用最先找到的那個cow如果一直找不到如果一直找不到cow,MATLAB就給出錯誤信就給出錯誤信息息Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.1 for循環(huán)控制結構循環(huán)控制結構格式:格式:說明:說明:x:循環(huán)變量,依次?。貉h(huán)變量,依次取array各列各列commands:循環(huán)體:循環(huán)體重復執(zhí)行次數(shù)由重復執(zhí)行次數(shù)由array的列數(shù)決定的列數(shù)決定for循環(huán)結構可以嵌套循環(huán)結構可以嵌套a

24、rray可以是任何合法的可以是任何合法的MATLAB數(shù)組數(shù)組循環(huán)不會因為在循環(huán)體內(nèi)對循環(huán)變量重新設置新循環(huán)不會因為在循環(huán)體內(nèi)對循環(huán)變量重新設置新值而中斷值而中斷為了得到高效代碼,應盡量提高代碼的向量化程為了得到高效代碼,應盡量提高代碼的向量化程度,而避免使用循環(huán)結構度,而避免使用循環(huán)結構為了得到高效代碼,在循環(huán)指令之前應盡量對數(shù)為了得到高效代碼,在循環(huán)指令之前應盡量對數(shù)組進行預定義組進行預定義for xarray (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB

25、程序控制流程序控制流3.3.2 while循環(huán)結構循環(huán)結構格式:格式:說明:說明:commands:循環(huán)體:循環(huán)體首先檢測首先檢測expression的值,如其為邏輯真的值,如其為邏輯真,則執(zhí)行循環(huán)體內(nèi)的命令,直到,則執(zhí)行循環(huán)體內(nèi)的命令,直到expression的值為邏輯假時退出循環(huán)的值為邏輯假時退出循環(huán)如果如果expression的值是數(shù)組,則只有在數(shù)的值是數(shù)組,則只有在數(shù)組中所有元素均為真時才執(zhí)行循環(huán)體組中所有元素均為真時才執(zhí)行循環(huán)體while循環(huán)與循環(huán)與for循環(huán)的區(qū)別是執(zhí)行循環(huán)體循環(huán)的區(qū)別是執(zhí)行循環(huán)體的次數(shù)能否預先確定的次數(shù)能否預先確定如果如果expression的值為空數(shù)組,則的值為

26、空數(shù)組,則MATLAB認為表達式值為假,而不執(zhí)行認為表達式值為假,而不執(zhí)行循環(huán)體循環(huán)體while expression (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.3 ifelseend分支結構分支結構格式:格式:一種選擇一種選擇兩種選擇兩種選擇多種選擇多種選擇說明說明表達式有時由多個邏輯子表達式組成,表達式有時由多個邏輯子表達式組成,MATLAB將盡可能少地檢測這些子表達將盡可能少地檢測這些子表達式的值式的值if指令判決和指令判

27、決和break指令的配合使用,可以指令的配合使用,可以強制終止強制終止for循環(huán)和循環(huán)和while循環(huán)循環(huán)if expression (commands)endif expression (commands)else (commands)endif expression1 (commands)elseif expression2 (commands)else (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.4 switch-case結

28、構格式:說明:ex應為標量或字符串檢測值testk類型可以是標量或字符串,也可以是元胞數(shù)組與C語言不同,在執(zhí)行完每個case塊后,MATLAB會自動跳出switch結構,無需使用break指令switch ex case test1 (commands) case test2 case testk (commands) otherwise (commands)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.5 try-catch結構格式說明:只有當執(zhí)行命

29、令組1出現(xiàn)錯誤后,命令組2才會被執(zhí)行可調(diào)用lasterr函數(shù)查詢出錯原因如果lasterr的運行結果是一個空串,則表明命令組1被成功執(zhí)行當執(zhí)行命令組2時又出錯,MATLAB將終止該結構try (commands1)catch (commands2)endTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.3 MATLAB程序控制流程序控制流3.3.6 其它常用指令其它常用指令1.return:強制結束執(zhí)行函數(shù)并把控制轉出:強制結束執(zhí)行函數(shù)并把控制轉出2.input:將控制權:將控制權“暫時交給用戶暫時交給用

30、戶v=input(message):將用戶鍵入內(nèi)容賦給:將用戶鍵入內(nèi)容賦給vv=input(message,s):將用戶鍵入內(nèi)容作為字符串賦:將用戶鍵入內(nèi)容作為字符串賦給給v3.keyboard:將控制權交給鍵盤:將控制權交給鍵盤用戶可以輸入各種合法指令用戶可以輸入各種合法指令用戶輸入用戶輸入return指令后控制權交還給程序指令后控制權交還給程序4.v=yesinput(Prompt,Default,Possib)5.pause:暫停執(zhí)行文件,等待用戶按任意鍵繼續(xù):暫停執(zhí)行文件,等待用戶按任意鍵繼續(xù)6.break:使包含該指令的:使包含該指令的while、for循環(huán)終止循環(huán)終止7.conti

31、nue:結束當前循環(huán),開始下一次循環(huán):結束當前循環(huán),開始下一次循環(huán)8.error和和warning指令:指令:error(message):顯示出錯信息,終止程序:顯示出錯信息,終止程序warning(message):顯示警告信息,程序繼續(xù)運行:顯示警告信息,程序繼續(xù)運行errortrap:錯誤發(fā)生后,程序繼續(xù)執(zhí)行與否的雙位開關:錯誤發(fā)生后,程序繼續(xù)執(zhí)行與否的雙位開關Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.1 輸入輸出參數(shù)檢測輸入輸出參數(shù)檢測檢測

32、指令:檢測指令:nargin:在函數(shù)體內(nèi),用于獲取實際輸入?yún)?shù):在函數(shù)體內(nèi),用于獲取實際輸入?yún)?shù)數(shù)目數(shù)目nargout:在函數(shù)體內(nèi),用于獲取實際輸出參數(shù):在函數(shù)體內(nèi),用于獲取實際輸出參數(shù)數(shù)目數(shù)目nargin(fun):獲?。韩@取fun指定函數(shù)的標稱輸入?yún)⒅付ê瘮?shù)的標稱輸入?yún)?shù)數(shù)目數(shù)數(shù)目nargin(fun):獲?。韩@取fun指定函數(shù)的標稱輸出參指定函數(shù)的標稱輸出參數(shù)數(shù)目數(shù)數(shù)目inputname(n):在函數(shù)體內(nèi)使用,給出第:在函數(shù)體內(nèi)使用,給出第n個個輸入?yún)?shù)的實際調(diào)用變量名輸入?yún)?shù)的實際調(diào)用變量名說明:說明:在函數(shù)體內(nèi)使用在函數(shù)體內(nèi)使用nargin、nargout的目的是與程的目的是與程序流

33、控制指令配合,對于不同數(shù)目的輸入輸出序流控制指令配合,對于不同數(shù)目的輸入輸出參數(shù),函數(shù)可以完成不同的任務參數(shù),函數(shù)可以完成不同的任務nargin、nargout、inputname本身都是函數(shù)本身都是函數(shù),而不是變量,因此用戶不能使用賦值指令對,而不是變量,因此用戶不能使用賦值指令對它們進行處理它們進行處理Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.2 變長度輸入輸出參數(shù)變長度輸入輸出參數(shù)格式格式varargin:變長度輸入?yún)?shù)列表:變長度輸入?yún)?shù)列表

34、varargout:變長度輸出參數(shù)列表:變長度輸出參數(shù)列表變長度參數(shù)必須放在普通參數(shù)之后變長度參數(shù)必須放在普通參數(shù)之后varargin、varargout本身都是元胞數(shù)組,編寫本身都是元胞數(shù)組,編寫M函數(shù)文件時,它們每個元胞應當作一個普通函數(shù)文件時,它們每個元胞應當作一個普通輸入?yún)?shù)處理輸入?yún)?shù)處理M函數(shù)文件被調(diào)用時,函數(shù)輸入變量首先依先后函數(shù)文件被調(diào)用時,函數(shù)輸入變量首先依先后次序逐個對應分配給輸入?yún)?shù)列表中那些被明次序逐個對應分配給輸入?yún)?shù)列表中那些被明確定義的普通輸入?yún)?shù),然后把剩余的輸入變確定義的普通輸入?yún)?shù),然后把剩余的輸入變量依次逐個分配到量依次逐個分配到varargin元胞數(shù)組的

35、元胞中元胞數(shù)組的元胞中,因此,因此varargin元胞數(shù)組的長度取決于分配到元胞數(shù)組的長度取決于分配到的輸入變量數(shù)的輸入變量數(shù)varargout的工作機理、規(guī)則與的工作機理、規(guī)則與varargin相同相同function outputs,varargout=funname(inputs,varargin)Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.3 跨空間變量傳遞跨空間變量傳遞跨空間計算串表達式的值跨空間計算串表達式的值evalin(ws,ex):跨

36、空間計算串表達式值:跨空間計算串表達式值ws可取兩個值:可取兩個值:base和和caller當當ws取取base時,從基本工作空間獲得變量值時,從基本工作空間獲得變量值當當ws取取caller時,從主調(diào)函數(shù)工作空間獲得變時,從主調(diào)函數(shù)工作空間獲得變量值量值evalin(ws,ex1,ex2):跨空間計算替代串表:跨空間計算替代串表達式值達式值先從所在函數(shù)空間獲取變量值,用先從所在函數(shù)空間獲取變量值,用eval(exp1)計算原串表達式;若該計算失敗,再從計算原串表達式;若該計算失敗,再從ws指指定的工作空間獲取變量值,再通過定的工作空間獲取變量值,再通過eval(ex2)計算替代串表達式計算替

37、代串表達式跨空間賦值跨空間賦值assign(ws,VN,x):跨空間向變量:跨空間向變量VN賦值賦值Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.4 主函數(shù)和子函數(shù)主函數(shù)和子函數(shù)主函數(shù)和子函數(shù)的定義:主函數(shù)和子函數(shù)的定義:MATLAB允許一個允許一個M函數(shù)文件包含多個函數(shù)代函數(shù)文件包含多個函數(shù)代碼,其中第一個出現(xiàn)的函數(shù)稱為主函數(shù),該文碼,其中第一個出現(xiàn)的函數(shù)稱為主函數(shù),該文件中的其他函數(shù)稱為子函數(shù)。件中的其他函數(shù)稱為子函數(shù)。保存時所用函數(shù)文件名與主函數(shù)文

38、件名相同。保存時所用函數(shù)文件名與主函數(shù)文件名相同。外部程序只能對主函數(shù)進行調(diào)用外部程序只能對主函數(shù)進行調(diào)用子函數(shù)的性質(zhì)子函數(shù)的性質(zhì)在在M函數(shù)文件中,主函數(shù)的位置不可改變,但子函數(shù)文件中,主函數(shù)的位置不可改變,但子函數(shù)的排列次序可以任意改變函數(shù)的排列次序可以任意改變子函數(shù)只能被處于同一文件的主函數(shù)或其他子函子函數(shù)只能被處于同一文件的主函數(shù)或其他子函數(shù)調(diào)用數(shù)調(diào)用在在M函數(shù)文件中,子函數(shù)的優(yōu)先級僅次于內(nèi)建函函數(shù)文件中,子函數(shù)的優(yōu)先級僅次于內(nèi)建函數(shù)數(shù)同一文件的主函數(shù)、子函數(shù)的工作空間彼此獨立同一文件的主函數(shù)、子函數(shù)的工作空間彼此獨立help、lookfor等指令都不能直接提供關于子函等指令都不能直接提

39、供關于子函數(shù)的任何幫助信息數(shù)的任何幫助信息子函數(shù)的幫助操作:子函數(shù)的幫助操作:help primefun/subfunTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.5 私有函數(shù)與重載函數(shù)私有函數(shù)與重載函數(shù)Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.6 串演算函數(shù)串演算函數(shù)Tel:63292873QQ:641296

40、082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.7 函數(shù)句柄函數(shù)句柄函數(shù)句柄的創(chuàng)建和觀察函數(shù)句柄的創(chuàng)建和觀察函數(shù)句柄創(chuàng)建:函數(shù)句柄創(chuàng)建:利用符號,或利用轉換函數(shù)利用符號,或利用轉換函數(shù)str2func被創(chuàng)建句柄的函數(shù)文件必須在當前視野范被創(chuàng)建句柄的函數(shù)文件必須在當前視野范圍內(nèi)圍內(nèi)如果函數(shù)不在當前視野內(nèi),所創(chuàng)建的函數(shù)如果函數(shù)不在當前視野內(nèi),所創(chuàng)建的函數(shù)句柄無效句柄無效此時此時MATLAB既不會發(fā)布既不會發(fā)布“出錯信息,出錯信息,也不會警告也不會警告定義函數(shù)句柄時,所指定的函數(shù)名不應包定義函數(shù)句柄時,

41、所指定的函數(shù)名不應包括路徑信息,也不應該包括擴展名括路徑信息,也不應該包括擴展名函數(shù)句柄內(nèi)涵觀察:函數(shù)句柄內(nèi)涵觀察:functionsfunctions函數(shù)只能接受函數(shù)只能接受11函數(shù)句函數(shù)句柄數(shù)組,并返回一個單構架,包含若干柄數(shù)組,并返回一個單構架,包含若干個域,以記錄函數(shù)的各種信息個域,以記錄函數(shù)的各種信息Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法F函數(shù)句柄的用法函數(shù)句柄的用法F通過函數(shù)句柄執(zhí)行相應函數(shù)的計算通過函數(shù)句柄執(zhí)行相應函數(shù)的計算F無效函數(shù)句柄無

42、效函數(shù)句柄Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.8 嵌套函數(shù)嵌套函數(shù)在函數(shù)體內(nèi)部定義的函數(shù),包含在函數(shù)體內(nèi)部定義的函數(shù),包含M文件的基本元素,以文件的基本元素,以end表示結束表示結束可以在一個函數(shù)內(nèi)部定義多個嵌套函數(shù),也可以使用多重可以在一個函數(shù)內(nèi)部定義多個嵌套函數(shù),也可以使用多重嵌套嵌套函數(shù)可以調(diào)用自己函數(shù)體中的嵌套函數(shù),但不能調(diào)用嵌套函數(shù)可以調(diào)用自己函數(shù)體中的嵌套函數(shù),但不能調(diào)用嵌套函數(shù)內(nèi)部更深層次的嵌套函數(shù)函數(shù)內(nèi)部更深層次的嵌套函數(shù)同級函

43、數(shù)可以相互調(diào)用,也可以調(diào)用比自己低一級的嵌套同級函數(shù)可以相互調(diào)用,也可以調(diào)用比自己低一級的嵌套函數(shù)函數(shù)嵌套函數(shù)擁有自己的工作空間,但是它有權限訪問其所嵌嵌套函數(shù)擁有自己的工作空間,但是它有權限訪問其所嵌套地方的所有函數(shù)的工作空間套地方的所有函數(shù)的工作空間被主函數(shù)賦值的變量可以被主函數(shù)中任意一個嵌套函數(shù)訪被主函數(shù)賦值的變量可以被主函數(shù)中任意一個嵌套函數(shù)訪問,嵌套函數(shù)的變量值也可以被任何包含它的函數(shù)訪問問,嵌套函數(shù)的變量值也可以被任何包含它的函數(shù)訪問由嵌套函數(shù)返回的變量不包含在外部函數(shù)中由嵌套函數(shù)返回的變量不包含在外部函數(shù)中使用函數(shù)句柄可以使得在函數(shù)的作用域之外也可以訪問這使用函數(shù)句柄可以使得在函

44、數(shù)的作用域之外也可以訪問這個函數(shù),但是函數(shù)的句柄必須在函數(shù)作用域內(nèi)被創(chuàng)建個函數(shù),但是函數(shù)的句柄必須在函數(shù)作用域內(nèi)被創(chuàng)建嵌套函數(shù)在同一個嵌套函數(shù)在同一個M文件中與其他函數(shù)共享非全局變量文件中與其他函數(shù)共享非全局變量Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方法函數(shù)類型與使用方法3.4.9 內(nèi)聯(lián)函數(shù)與匿名函數(shù)內(nèi)聯(lián)函數(shù)與匿名函數(shù)Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.4 函數(shù)類型與使用方

45、法函數(shù)類型與使用方法3.4.10 函數(shù)使用方法函數(shù)使用方法Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_3.5 數(shù)據(jù)數(shù)據(jù)I/O與文件操作與文件操作2.3.3 元胞數(shù)組內(nèi)容的調(diào)取元胞數(shù)組內(nèi)容的調(diào)取調(diào)取一個元胞:使用圓括號,得到元調(diào)取一個元胞:使用圓括號,得到元胞胞調(diào)取一個元胞的內(nèi)容:使用大括號調(diào)取一個元胞的內(nèi)容:使用大括號調(diào)取元胞內(nèi)的子數(shù)組調(diào)取元胞內(nèi)的子數(shù)組同時調(diào)取多個元胞內(nèi)容:同時調(diào)取多個元胞內(nèi)容:dealTel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:6

46、41296082Email:zuo_2.3 元胞數(shù)組及其運算元胞數(shù)組及其運算2.3.4 元胞數(shù)組與其它類型的轉換元胞數(shù)組與其它類型的轉換把數(shù)值數(shù)組轉換為元胞數(shù)組把數(shù)值數(shù)組轉換為元胞數(shù)組C=num2cell(A,dimN)把把dimN指定指定“維號方向的數(shù)組元素存為維號方向的數(shù)組元素存為C的一的一個元胞個元胞dimN缺省時,默認數(shù)組每個元素各存為缺省時,默認數(shù)組每個元素各存為C的一的一個元胞個元胞把矩陣分解成元胞數(shù)組把矩陣分解成元胞數(shù)組C=mat2cell(B,M,N)把矩陣把矩陣B轉換為元胞數(shù)組轉換為元胞數(shù)組CM、N的元素數(shù)分別決定的元素數(shù)分別決定C的行數(shù)和列數(shù)的行數(shù)和列數(shù)M、N的元素值分別決

47、定的元素值分別決定C中相應位置元胞的行中相應位置元胞的行列大小列大小把元胞數(shù)組轉換為矩陣把元胞數(shù)組轉換為矩陣D=cell2mat(C)進行轉換時元胞中的內(nèi)容要合適進行轉換時元胞中的內(nèi)容要合適Tel:63292873QQ:641296082Email:zuo_Tel:63292873QQ:641296082Email:zuo_2.4 構架數(shù)組及其運算構架數(shù)組及其運算2.4.1 構架數(shù)組的創(chuàng)建和顯示構架數(shù)組的創(chuàng)建和顯示直接創(chuàng)建法及顯示直接創(chuàng)建法及顯示創(chuàng)建方式:構架名創(chuàng)建方式:構架名.域名域名.子域名子域名顯示方法:構架名顯示方法:構架名.域名域名.子域名子域名利用構造函數(shù)創(chuàng)建構架數(shù)組利用構造函數(shù)創(chuàng)建構架數(shù)組構造函數(shù)構造函數(shù)structstruct不能直接創(chuàng)建帶子域的構架數(shù)不能直接創(chuàng)建帶子域的構架數(shù)組組子域需要另行創(chuàng)建子域需要另行創(chuàng)建Tel:63292873QQ:

溫馨提示

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

評論

0/150

提交評論