版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、四、M文件和流程控制M文件和流程控制MATLAB控制流函數(shù)n循環(huán)控制語(yǔ)句n條件控制語(yǔ)句if,switchntrycatchend結(jié)構(gòu)n其它流程控制指令M文件和流程控制(續(xù))M腳本文件和函數(shù)文件nM腳本文件和函數(shù)文件的比較n局部變量和全局變量nM文件的一般結(jié)構(gòu)M文件和流程控制(續(xù))變量的檢測(cè)傳遞和限權(quán)使用函數(shù)n輸入輸出變臉檢測(cè)函數(shù)n子函數(shù)和私用函數(shù)串演算函數(shù)函數(shù)句柄調(diào)試和剖析4.1 MATLAB4.1 MATLAB控制流函數(shù)控制流函數(shù)4.1.1 4.1.1 循環(huán)控制語(yǔ)句循環(huán)控制語(yǔ)句forfor for x=array for x=array 循環(huán)體循環(huán)體end end 循環(huán)體被循環(huán)執(zhí)行,執(zhí)行的次
2、數(shù)就是arrayarray的列數(shù),arrayarray可以是向量也可以是矩陣,循環(huán)變量x x依次取arrayarray的各列,每取一次循環(huán)體執(zhí)行一次。 4.1 MATLAB4.1 MATLAB控制流函數(shù)(續(xù))控制流函數(shù)(續(xù))4.1.1 4.1.1 循環(huán)控制語(yǔ)句循環(huán)控制語(yǔ)句whilewhile while while 表達(dá)式表達(dá)式 循環(huán)體循環(huán)體end end 只要表達(dá)式為邏輯真,就執(zhí)行循環(huán)體;一旦表達(dá)式為假,就結(jié)束循環(huán)。表達(dá)式可以是向量也可以是矩陣,如果表達(dá)式為矩陣則當(dāng)所有的元素都為真才執(zhí)行循環(huán)體,如果表達(dá)式為nannan,MATLAB認(rèn)為是假,不執(zhí)行循環(huán)體。 例4.1 循環(huán)控制語(yǔ)句%a中每一個(gè)
3、數(shù)字等于所在行列數(shù)之和for i = 1:10 for j = 1:10 a(i,j) = i+j; endenda演示例4.1 循環(huán)控制語(yǔ)句(續(xù))注意:注意: end必須和必須和for, while成對(duì)出現(xiàn)成對(duì)出現(xiàn),不可,不可省略。特別是出現(xiàn)循環(huán)嵌套時(shí),一定要注省略。特別是出現(xiàn)循環(huán)嵌套時(shí),一定要注意意for/while和和end的配對(duì)問(wèn)題。的配對(duì)問(wèn)題。4.1.2 條件控制語(yǔ)句條件控制語(yǔ)句if,switch1. if 條件式條件式1 語(yǔ)句段語(yǔ)句段1 elseif 條件式條件式2語(yǔ)句段語(yǔ)句段2. else 語(yǔ)句段語(yǔ)句段n+1 end 當(dāng)有多個(gè)條件時(shí),條件式1為假再判斷elseifelseif的條
4、件式2,如果所有的條件式都不滿足,則執(zhí)行elseelse的語(yǔ)句段n+1,當(dāng)條件式為真則執(zhí)行相應(yīng)的語(yǔ)句段; Ifelseend結(jié)構(gòu)也可以是沒(méi)有elseif和else的簡(jiǎn)單結(jié)構(gòu)。 舉例:條件控制語(yǔ)句if舉例cost=10;number=12;if number8 sums=number*0.95*cost;end,sums演示4.1.2 條件控制語(yǔ)句條件控制語(yǔ)句if,switch2. switch 開關(guān)表達(dá)式開關(guān)表達(dá)式case 表達(dá)式表達(dá)式1 語(yǔ)句段語(yǔ)句段1 case表達(dá)式表達(dá)式2 語(yǔ)句段語(yǔ)句段2. otherwise 語(yǔ)句段語(yǔ)句段n end (1) 將開關(guān)表達(dá)式依次與case后面的表達(dá)式進(jìn)行比較
5、,如果表達(dá)式1不滿足,則與下一個(gè)表達(dá)式2比較,如果都不滿足則執(zhí)行otherwise后面的語(yǔ)句段n;一旦開關(guān)表達(dá)式與某個(gè)表達(dá)式相等,則執(zhí)行其后面的語(yǔ)句段。 (2) 開關(guān)表達(dá)式只能是標(biāo)量或字符串。 (3) case后面的表達(dá)式可以是標(biāo)量、字符串或元胞數(shù)組,如果是元胞數(shù)組則將開關(guān)表達(dá)式與元胞數(shù)組的所有元素進(jìn)行比較,只要某個(gè)元素與開關(guān)表達(dá)式相等,就執(zhí)行其后的語(yǔ)句段。 舉例:例4.2 條件控制語(yǔ)句用于學(xué)生的成績(jī)管理%exm04_02.mclear;%劃分區(qū)域:滿分(100),優(yōu)秀(90-99),良好%(80-89),及格(60-79),不及格(60)for i = 1:10 ai = 89+i; bi
6、= 79+i;演示例4.2 條件控制語(yǔ)句用于學(xué)生的成績(jī)管理小結(jié):1)case后面的表達(dá)式可以是元胞數(shù)組,只要開關(guān)表達(dá)式的值與元胞數(shù)組中任一個(gè)元素值相等,就執(zhí)行其后的語(yǔ)句段。 2)switch指令判斷開關(guān)表達(dá)式的值符合哪一個(gè)case,并執(zhí)行相應(yīng)的語(yǔ)句段,執(zhí)行完畢,自動(dòng)跳出switch結(jié)構(gòu),不需要break指令。4.1.3 try. catch. end結(jié)構(gòu)結(jié)構(gòu)try 語(yǔ)句段語(yǔ)句段1catch 語(yǔ)句段語(yǔ)句段2end 首先試探性地執(zhí)行語(yǔ)句段1,如果在此段語(yǔ)句執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保留的lasterrlasterr變量,并放棄這段語(yǔ)句,轉(zhuǎn)而執(zhí)行語(yǔ)句段2中的語(yǔ)句,當(dāng)執(zhí)行語(yǔ)句段2又出現(xiàn)錯(cuò)誤,
7、則終止該結(jié)構(gòu)。舉例:trycatchend結(jié)構(gòu)進(jìn)行矩陣相乘運(yùn)算n=4;a=magic(n); %生成4階魔方矩陣am=3; b=eye(3); %生成3階單位矩陣b演示4.1.3 try. catch. end結(jié)構(gòu)結(jié)構(gòu)小結(jié):試探出矩陣的大小不匹配時(shí),矩陣無(wú)法相乘,則再執(zhí)行case后面的語(yǔ)句段,將a的子矩陣取出與b矩陣相乘。可以通過(guò)這種結(jié)構(gòu)靈活的實(shí)現(xiàn)矩陣的乘法運(yùn)算。4.1.4 4.1.4 其他流程控制指令其他流程控制指令 1. break1. break指令指令 breakbreak指令可以使包含breakbreak的最內(nèi)層的forfor或whilewhile語(yǔ)句強(qiáng)制終止,立即跳出該結(jié)構(gòu),執(zhí)行e
8、ndend后面的命令,breakbreak命令一般和IfIf結(jié)構(gòu)結(jié)合使用。2. continue2. continue指令指令 continuecontinue指令用于結(jié)束本次forfor或whilewhile循環(huán),只結(jié)束本次循環(huán)而繼續(xù)進(jìn)行下次循環(huán)。4.1.4 4.1.4 其他流程控制指令其他流程控制指令( (續(xù)續(xù)) ) 3. pause3. pause指令指令 pausepause指令用來(lái)使程序運(yùn)行暫停,等待用戶按任意鍵繼續(xù) 。 pause(n)pause(n)指令用于使程序暫停n秒后再繼續(xù)執(zhí)行。 4. keyboard4. keyboard指令指令 keyboardkeyboard指令將“
9、控制權(quán)”交給鍵盤,等待鍵盤命令,僅當(dāng)用戶輸入returnreturn指令后,“控制權(quán)”才交回程序。4.1.4 4.1.4 其他流程控制指令其他流程控制指令( (續(xù)續(xù)) ) 5. input5. input指令指令 inputinput指令用來(lái)提示用戶應(yīng)該從鍵盤輸入數(shù)值、字符串和表達(dá)式,并接受該輸入。 a=input(a=input(input a number:input a number:) ) %輸入數(shù)值給a b=input(input a number:,s)b=input(input a number:,s) % %輸入字符串給b 6. return6. return指令指令 retu
10、rn指令是終止當(dāng)前命令的執(zhí)行,并且立即返回到上一級(jí)調(diào)用函數(shù)或等待鍵盤輸入命令,可以用來(lái)提前結(jié)束程序的運(yùn)行。 4.1.4 4.1.4 其他流程控制指令其他流程控制指令( (續(xù)續(xù)) ) error/lasterr 顯示出錯(cuò)信息/顯示最新出錯(cuò)原因,終止程序運(yùn)行 warning/lastwarn 顯示警告/顯示MATLAB自動(dòng)給出的最新警告,程序繼續(xù)運(yùn)行%exmR=input(What is your name:,s) % %以字符串形式賦給以字符串形式賦給R RS=input(How old are you?) % %鍵入數(shù)值鍵入數(shù)值pause(3) % %暫停暫停3 3秒秒pause % %等待用
11、戶按任意鍵等待用戶按任意鍵error(You cant join the army) % %顯示出錯(cuò)信息顯示出錯(cuò)信息errordlg,warndlg % %給出出錯(cuò)、警告對(duì)話框給出出錯(cuò)、警告對(duì)話框4.2 M4.2 M腳本文件和函數(shù)文件腳本文件和函數(shù)文件 M文件由兩種形式:M腳本文件和M函數(shù)文件,可在MATLAB的M文件編輯/調(diào)試器中進(jìn)行編寫和調(diào)試運(yùn)行。4.2 M4.2 M腳本文件和函數(shù)文件(續(xù))腳本文件和函數(shù)文件(續(xù))創(chuàng)建創(chuàng)建M M文件文件的方法:n 在指令窗運(yùn)行指令editedit即可打開M文件編輯/調(diào)試器;n 單擊工具條上的 圖標(biāo)也可打開M文件編輯/調(diào)試器;n 選擇菜單菜單“FileFil
12、e”“NewNew”“M-M-filefile”,可打開空白的M文件編輯器 。 4.2 M4.2 M腳本文件和函數(shù)文件(續(xù))腳本文件和函數(shù)文件(續(xù))打開已有打開已有M M文件文件的方法:n在指令窗運(yùn)行指令edit filenameedit filename ;n單擊工具條上的 圖標(biāo);n選擇菜單菜單“FileFile”“OpenOpen”“M-M-filefile”;n直接在資源瀏覽器中雙擊文件。 4.2.1 M4.2.1 M腳本文件和函數(shù)文件的比較腳本文件和函數(shù)文件的比較1.1.腳本文件的特點(diǎn)腳本文件的特點(diǎn)(1) 腳本文件中的命令格式和前后位置,與在命令窗口中輸入的沒(méi)有任何區(qū)別。(2) MAT
13、LAB在運(yùn)行腳本文件時(shí),只是簡(jiǎn)單地按順序從文件中讀取一條條命令,送到MATLAB命令窗口中去執(zhí)行。(3) 與在命令窗口中直接運(yùn)行命令一樣,腳本文件運(yùn)行產(chǎn)生的變量都是駐留在MATLAB的工作空間(workspace)(workspace)中,可以很方便地查看變量,除非用clearclear命令清除;腳本文件的命令也可以訪問(wèn)工作空間的所有數(shù)據(jù),因此要注意避免變量的覆蓋而造成程序出錯(cuò)。4.2.1 M4.2.1 M腳本文件和函數(shù)文件的比較腳本文件和函數(shù)文件的比較2. 2. 函數(shù)文件的特點(diǎn)函數(shù)文件的特點(diǎn)(1) 第一行總是以“functionfunction”引導(dǎo)的函數(shù)聲明行; 函數(shù)聲明行的格式:函數(shù)聲明
14、行的格式: function function 輸出變量列表輸出變量列表 = = 函數(shù)名函數(shù)名( (輸入變量列表輸入變量列表) ) (2) 函數(shù)文件在運(yùn)行過(guò)程中產(chǎn)生的變量都存放在函數(shù)本身的工作空間;(3) 當(dāng)文件執(zhí)行完最后一條命令或遇到“return”命令時(shí),就結(jié)束函數(shù)文件的運(yùn)行,同時(shí)函數(shù)工作空間的變量就被清除;(4) 函數(shù)的工作空間隨具體的M函數(shù)文件調(diào)用而產(chǎn)生,隨調(diào)用結(jié)束而刪除,是獨(dú)立的、臨時(shí)的,在MATLAB運(yùn)行過(guò)程中可以產(chǎn)生任意多個(gè)臨時(shí)的函數(shù)空間。 4.2.1 M4.2.1 M腳本文件和函數(shù)文件的比較腳本文件和函數(shù)文件的比較M M腳本文件腳本文件%exm04_Mfile.mx= -5if
15、 x0 f= -1;elseif x=0 f=0;else f=1;end M函數(shù)文件函數(shù)文件%exm04_funfile.mfunction m=SIGN(y)if yexm04_Mfileexm04_Mfilef =f = -1 -1指令窗運(yùn)行指令窗運(yùn)行 x=-5; x=-5;f=exm04_funfilef=exm04_funfile(x)(x)f =f = -1 -14.2.1 M4.2.1 M腳本文件和函數(shù)文件的比較腳本文件和函數(shù)文件的比較注意:M腳本文件一般用作主程序,由命令行組成。M函數(shù)文件需注意幾點(diǎn):1)必須以關(guān)鍵字“functionfunction”開頭;2)第一行必須是函數(shù)
16、聲明行;3)函數(shù)名盡量與文件名一致,如果不一致,調(diào)用該函數(shù)時(shí)應(yīng)使用文件名。4.2.2 4.2.2 局部變量和全局變量局部變量和全局變量n 局部變量(Local Variables)是在函數(shù)體內(nèi)部使用的變量,其影響范圍只能在本函數(shù)內(nèi),只在函數(shù)執(zhí)行期間存在 ;n全局變量(Global Variables)是可以在不同的函數(shù)工作空間和MATALB工作空間中共享使用的變量。4.2.2 4.2.2 局部變量和全局變量(續(xù))局部變量和全局變量(續(xù))n 當(dāng)使用globalglobal指令指定全局變量時(shí),必須對(duì)每個(gè)共享該變量的函數(shù)和基本工作空間進(jìn)行專門的globalglobal定義。如果某個(gè)函數(shù)使全局變量的內(nèi)
17、容發(fā)生改變,其它函數(shù)空間及基本工作空間的同名變量也隨之改變,除非所有和全局變量有關(guān)的工作空間都被刪除,否則全局變量始終存在。n全局變量必須在該變量被使用前聲明為全局變量,建議放在首行聲明。4.2.2 4.2.2 局部變量和全局變量(續(xù))局部變量和全局變量(續(xù))n M腳本文件中的變量是全局變量,運(yùn)行完畢后變量仍保存在工作空間,可以進(jìn)行訪問(wèn);n M函數(shù)內(nèi)部定義的變量是局部變量,只能在函數(shù)內(nèi)部訪問(wèn);n 可以將函數(shù)內(nèi)的變量聲明為全局變量,利用“globalglobal”指令,為了與其它變量進(jìn)行區(qū)分,通常用大寫字母表示全局變量。4.2.2 4.2.2 局部變量和全局變量(續(xù))局部變量和全局變量(續(xù))例如
18、對(duì)例如對(duì)exm04_funfile.m 進(jìn)行如下修改:進(jìn)行如下修改:%exm04_funfile.m %exm04 funfile2.mfunction m=SIGN(y) function m=SIGN if y0 global m= -1; if Y global Y;Y=-5; f=exm04_funfile2f = -1 可見利用全局變量可以實(shí)現(xiàn)函數(shù)間參數(shù)的傳遞,但是破壞函數(shù)的封裝性,因此不提倡使用全局變量。 4.2.3 M4.2.3 M文件的一般結(jié)構(gòu)文件的一般結(jié)構(gòu)1 1)函數(shù)聲明行函數(shù)聲明行:以關(guān)鍵字“functionfunction”開頭,包括函數(shù)名以及輸入輸出宗量列表。2 2)H
19、1H1行行( (用用% %開頭的第一注釋行開頭的第一注釋行) ):包括大寫函數(shù)名,對(duì)函數(shù)功能的簡(jiǎn)要描述,主要用 于關(guān)鍵詞查詢和helphelp在線幫助。3 3)在線幫助文本在線幫助文本( (用用% %開頭開頭) ):包括對(duì)函數(shù)輸入輸出宗量的解釋、函數(shù)調(diào)用格式等。執(zhí)行指令help funnamehelp funname將顯示第一注釋行和在線幫助文本的內(nèi)容。4 4)編寫和修改記錄編寫和修改記錄( (用用% %開頭開頭) ):與注釋行間用“空行”分隔,標(biāo)志該文件的作者、日期、版本等信息。5 5)函數(shù)體函數(shù)體 :與前面的注釋行以“空行”分隔,由完成函數(shù)功能的命令行組成。函數(shù)體中可以加入以“”開頭的注釋
20、語(yǔ)句。4.2.3 M4.2.3 M文件的一般結(jié)構(gòu)(續(xù))文件的一般結(jié)構(gòu)(續(xù)) M函數(shù)文件的必要組成部分是“函數(shù)聲明行函數(shù)聲明行”和“函數(shù)體函數(shù)體”,其他僅為增加可讀性和方便使用而設(shè)。function y=Ex0502(zeta) 函數(shù)聲明行函數(shù)聲明行% EX0502 Step response of quadratic system. 第一注釋行第一注釋行% 二階系統(tǒng)時(shí)域響應(yīng)曲線二階系統(tǒng)時(shí)域響應(yīng)曲線% zeta 阻尼系數(shù)阻尼系數(shù) 幫助文本幫助文本% y 時(shí)域響應(yīng)時(shí)域響應(yīng)% copyright 2003-08-01 編寫記錄編寫記錄 函數(shù)主體x=0:0.1:20;y=1-1/sqrt(1-zeta
21、2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta)plot(x,y) 注意:腳本文件沒(méi)有函數(shù)聲明行4.3 4.3 變量的檢測(cè)傳遞和限權(quán)使用函數(shù)變量的檢測(cè)傳遞和限權(quán)使用函數(shù)4.3.1 4.3.1 輸入輸出變量檢測(cè)函數(shù)輸入輸出變量檢測(cè)函數(shù)nargin nargin 在函數(shù)體內(nèi)獲取實(shí)際輸入變量的個(gè)數(shù)nargout nargout 在函數(shù)體內(nèi)獲取實(shí)際輸出變量的個(gè)數(shù)nargin(nargin(funfun) ) 在函數(shù)體外獲取funfun指定函數(shù)的輸入?yún)?shù)個(gè)數(shù)nargout(nargout(funfun) ) 在函數(shù)體外獲取funfun指定函數(shù)的輸出參數(shù)個(gè)數(shù)i
22、nputname(n)inputname(n) 在函數(shù)體內(nèi)返回第n個(gè)輸入變量的實(shí)際調(diào)用變量名varargin/varargoutvarargin/varargout 可以獲得輸入/輸出變量的各元素內(nèi)容“變長(zhǎng)度“變量列表例4.3 輸入輸出宗量的使用 算例演示:例4.3 輸入輸出宗量的使用(續(xù))n函數(shù)聲明行中,“變長(zhǎng)度”輸入輸出變量必須在“普通”輸入輸出變量之后;nvararginvarargin和varargout varargout 本身是元胞數(shù)組,當(dāng)變量被依次分配給“普通”輸入輸出變量后,剩余變量被逐個(gè)分配給vararginvarargin和varargoutvarargout 的元胞;nv
23、ararginvarargin和varargoutvarargout的長(zhǎng)度取決于分配的輸入輸出變量數(shù)。4.3.2 子函數(shù)和私用函數(shù)子函數(shù)和私用函數(shù)1. 子函數(shù)子函數(shù)n在一個(gè)M函數(shù)文件中,可以包含多個(gè)函數(shù),第一個(gè)出現(xiàn)的是主函數(shù),其它則為子函數(shù)。n通過(guò)函數(shù)文件名調(diào)用函數(shù)時(shí),調(diào)用的是主函數(shù),主函數(shù)必須放在函數(shù)文件的第一部分,其函數(shù)名應(yīng)該與文件名相同,子函數(shù)的次序無(wú)任何限制;n子函數(shù)不能被其它文件的函數(shù)調(diào)用,只能被同一文件中的函數(shù)(可以是主函數(shù)或子函數(shù))調(diào)用,子函數(shù)的優(yōu)先級(jí)僅次于內(nèi)裝函數(shù);n同一文件的主函數(shù)和子函數(shù)變量的工作空間相互獨(dú)立,參數(shù)的傳遞最好通過(guò)輸入輸出變量進(jìn)行傳遞;n用helphelp和l
24、ookforlookfor命令不能提供子函數(shù)的幫助信息。 4.3.2 子函數(shù)和私用函數(shù)(續(xù))子函數(shù)和私用函數(shù)(續(xù))2. 2. 私用函數(shù)私用函數(shù)n私用函數(shù)是指存放在privateprivate子目錄中的M函數(shù)文件,具有以下性質(zhì):n在privateprivate目錄下的私用函數(shù),只能被其父目錄的M函數(shù)文件所調(diào)用,而不能被其它目錄的函數(shù)調(diào)用,對(duì)其它目錄的文件私用函數(shù)是不可見的,私用函數(shù)可以和其它目錄下的函數(shù)重名;n私用函數(shù)父目錄的M腳本文件也不可調(diào)用私用函數(shù);n在函數(shù)調(diào)用搜索時(shí),私用函數(shù)優(yōu)先于其它MATLAB路徑上的任何函數(shù)。 4.3.2 子函數(shù)和私用函數(shù)(續(xù))子函數(shù)和私用函數(shù)(續(xù))當(dāng)MATLAB執(zhí)
25、行程序的過(guò)程中遇到一個(gè)新“名字”時(shí),查找過(guò)程如下:1)是否變量名?2)是否該文件內(nèi)的子函數(shù)?3)是否私用函數(shù)?4)是否當(dāng)前目錄上的函數(shù)?5)是否MATLAB搜索路徑上的函數(shù)?6)以上都找不到則顯示出錯(cuò)信息。4.4 串演算函數(shù)串演算函數(shù)為提高計(jì)算的靈活性,MATLAB 還提供兩種演算函數(shù):串演算函數(shù)evaleval和函數(shù)句柄演算函數(shù)fevalfeval 。 串演算函數(shù)evaleval具有對(duì)字符串進(jìn)行計(jì)算的能力:y=eval(y=eval(CEMCEM) 執(zhí)行CEM指定的運(yùn)算y=eval(y=eval(CEM1CEM1, ,CEM2CEM2) 執(zhí)行CEM1代表的運(yùn)算,若失敗則執(zhí)行CEM2y1,y2
26、,y1,y2,=eval(=eval(CEMCEM) ) 調(diào)用CEM代表的函數(shù)文件,輸出計(jì)算結(jié)果例4.4 串演算函數(shù)的應(yīng)用%exm04_04.mt=0:0.01*pi:2*pi;P=1,2,4,10;figurefor n=1:4 eval(T=P(n);) 演示4.4 串演算函數(shù)(續(xù))串演算函數(shù)(續(xù))跨空間執(zhí)行串演算:evalin (workspace,expression)evalin(workspace,expression1,expression2)其中workspace指不同的工作空間,在evalin中可以是基本工作空間(basebase)和主調(diào)函數(shù)空間(callercaller)。
27、如果是函數(shù)自己的工作空間,可以采用eval命令進(jìn)行串演算。例4.5 跨空間串演算函數(shù)的應(yīng)用 算例演示:4.5. 4.5. 函數(shù)句柄函數(shù)句柄函數(shù)句柄(Function handle)是包含了函數(shù)的路徑、函數(shù)名、類型以及可能存在的重載方法。是一種新數(shù)據(jù)類型。1.函數(shù)句柄的創(chuàng)建nh_fun=fun %創(chuàng)建函數(shù)句柄nh_fun=str2func(fun) %創(chuàng)建函數(shù)句柄nh_array=str2func(fun1,fun2,) %創(chuàng)建函數(shù)句柄數(shù)組 其中fun是當(dāng)前可訪問(wèn)函數(shù)當(dāng)前可訪問(wèn)函數(shù)的函數(shù)名,h_fun是函數(shù)句柄,h_array是函數(shù)句柄數(shù)組4.5. 4.5. 函數(shù)句柄(續(xù))函數(shù)句柄(續(xù))2. 2
28、. 函數(shù)句柄基本用法函數(shù)句柄基本用法假設(shè)一個(gè)函數(shù)Funname的調(diào)用格式為:out1,out2,out1,out2,=Funname(in1,in2,=Funname(in1,in2,) )通過(guò)指令定義Funname的函數(shù)句柄:Hfun=FunnameHfun=Funname或Hfun=str2func(Hfun=str2func(FunnameFunname) )定義Hfun之后通過(guò)函數(shù)句柄調(diào)用函數(shù)的格式為out1,out2,out1,out2,=feval(Hfun,in1,in2,=feval(Hfun,in1,in2,) ) eval和feval指令都是用來(lái)執(zhí)行字符串所代表的函數(shù),優(yōu)點(diǎn)
29、在于可以在運(yùn)行中修改所執(zhí)行的指令或參數(shù),提高計(jì)算的靈活性。兩者區(qū)別在于兩者區(qū)別在于: eval所執(zhí)行的字符串應(yīng)該包括函數(shù)名、輸入?yún)?shù)。 feval的Hfun字符串僅為函數(shù)名,輸入?yún)?shù)由in1,in2,給出。例如下面的命令完成同樣的操作eval(s=sin(pi/2)s=eval(sin(pi/2)s=feval(sin,pi/2)Hsin=sin;s=feval(Hsin,pi/2)4.5. 4.5. 函數(shù)句柄(續(xù))函數(shù)句柄(續(xù))3. 使用函數(shù)句柄的優(yōu)點(diǎn)使用函數(shù)句柄的優(yōu)點(diǎn)(1) (1) 在更大范圍調(diào)用函數(shù)在更大范圍調(diào)用函數(shù) 函數(shù)句柄包含了函數(shù)文件的路徑和函數(shù)類型,即函數(shù)是否為內(nèi)部函數(shù)、M或P文件、子函數(shù)、私有函數(shù)等,因此無(wú)論函數(shù)所在的文件是否在搜索路徑上,是否是當(dāng)前路徑,是否是子函數(shù)或私有函數(shù),只要函數(shù)句柄存在,函數(shù)就能執(zhí)行。4.5. 4.5. 函數(shù)句柄(續(xù))函數(shù)句柄(續(xù))(2) (2) 提高函數(shù)調(diào)用的速度提高函數(shù)調(diào)用的速度 不使用函數(shù)句柄時(shí),對(duì)函數(shù)的每次調(diào)用都要為該函數(shù)進(jìn)行全面的路徑搜索,直接影響了速度。(3) (3) 使函數(shù)調(diào)用象使用變量一樣方便、簡(jiǎn)單。使函數(shù)調(diào)用象使用變量一樣方便、簡(jiǎn)單。(4) (4) 可迅速獲得同名重載函數(shù)的位置、類型信可迅速獲得同名重載函數(shù)的位置、類型信息。息。例
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度洗浴中心員工福利保障與激勵(lì)合同4篇
- 2024秀嶼區(qū)文印中心綜合性承包經(jīng)營(yíng)管理合同3篇
- 2024聘用駕駛員安全保障及應(yīng)急處理服務(wù)合同3篇
- 2025年度智能穿戴設(shè)備打膠密封服務(wù)合同4篇
- 2025年度智能船舶租賃合作協(xié)議模板4篇
- 2025年度玻璃纖維復(fù)合材料研發(fā)與市場(chǎng)拓展承包合同3篇
- 2024年租賃合同:設(shè)備租賃與維護(hù)條款
- 2025年度文化傳播公司員工辭退合同范本4篇
- 2025年度幼兒園食堂承包運(yùn)營(yíng)管理合同范本3篇
- 2025年度智慧城市建設(shè)戰(zhàn)略合作框架協(xié)議范本4篇
- 【人教版】九年級(jí)化學(xué)上冊(cè)期末試卷及答案【【人教版】】
- 四年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案【可打印】
- 人教版四年級(jí)數(shù)學(xué)下冊(cè)課時(shí)作業(yè)本(含答案)
- 中小學(xué)人工智能教育方案
- 高三完形填空專項(xiàng)訓(xùn)練單選(部分答案)
- 護(hù)理查房高鉀血癥
- 項(xiàng)目監(jiān)理策劃方案匯報(bào)
- 《職業(yè)培訓(xùn)師的培訓(xùn)》課件
- 建筑企業(yè)新年開工儀式方案
- 營(yíng)銷組織方案
- 初中英語(yǔ)閱讀理解專項(xiàng)練習(xí)26篇(含答案)
評(píng)論
0/150
提交評(píng)論