版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
MATLAB是什么?用于科學(xué)工程計算的高效率高級語言語言開發(fā)系統(tǒng)適合多學(xué)科、多種工作平臺的功能強大的大型軟件1MATLAB是什么?1MATLAB的主要構(gòu)成編程語言:以矩陣和數(shù)組為基本數(shù)據(jù)單位的編程語言;工作環(huán)境:一系列應(yīng)用工具提供編寫、調(diào)試程序的環(huán)境;圖形處理:包括繪制圖形和創(chuàng)建GUI等。數(shù)學(xué)庫函數(shù):包含豐富的數(shù)學(xué)函數(shù)和其他復(fù)雜功能函數(shù);API:為MATLAB與其它語言編寫的程序進行交互提供接口。MATLAB的主要構(gòu)成編程語言:以矩陣和數(shù)組為基本數(shù)據(jù)單位的MATLAB語言特點(一):采用統(tǒng)一的數(shù)據(jù)和變量對象——矩陣,即數(shù)據(jù)是矩陣元素的數(shù)據(jù),變量是矩陣變量;在生成矩陣對象時,不要求做明確的維數(shù)說明,有豐富的矩陣處理功能;功能強、易學(xué)易用,還可根據(jù)實際需要擴充功能;一條語句或一個函數(shù)相當于C語言中的一個子程序或一個處理功能;MATLAB還擁有各種實用的軟件,提供了許多通信系統(tǒng)模型,能對系統(tǒng)直接進行仿真;MATLAB語言特點(一):采用統(tǒng)一的數(shù)據(jù)和變量對象——矩陣MATLAB語言特點(二):用戶可以自己編寫函數(shù),繪制系統(tǒng)響應(yīng)曲線;MATLAB還具有符號運算功能,直接用符號算式進行演算;MATLAB提供了SIMULINK軟件包,該軟件包提供了通信和控制系統(tǒng)方塊圖的圖形編程形式,這樣利用通信系統(tǒng)方塊圖的圖形對系統(tǒng)直接進行仿真,使得一個很復(fù)雜的系統(tǒng)仿真變得相當容易。MATLAB語言特點(二):用戶可以自己編寫函數(shù),繪制系統(tǒng)響MATLAB采用了面向?qū)ο蟮募夹g(shù),以矩陣作為基本數(shù)據(jù)結(jié)構(gòu)和以矩陣運算為基礎(chǔ),集科學(xué)計算和圖形可視化為一體。MATLAB是高層次的矩陣/數(shù)組語言,具有條件控制、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)、輸入輸出、面向?qū)ο蟮瘸绦蛘Z言特性。MATLAB還帶有許多針對不同應(yīng)用所開發(fā)的工具箱(Toolboxs)。5MATLAB語言特點(三):MATLAB采用了面向?qū)ο蟮募夹g(shù),以矩陣作為基本數(shù)據(jù)結(jié)構(gòu)和以MATLAB的其他主要特色:面向?qū)ο筇匦裕瑘D形、窗口等都是對象,可以通過屬性改變它們;矩陣自動動態(tài)伸縮,矩陣的階數(shù)幾乎可以任意大(只與虛擬內(nèi)存有關(guān));功能強大的圖形處理與數(shù)字計算功能;系統(tǒng)擴充方便,可以隨時向系統(tǒng)增加函數(shù);可以自己設(shè)計自己需要的工具箱。6MATLAB的其他主要特色:面向?qū)ο筇匦?,圖形、窗口等都是對MATLAB語言重要性MATLAB已成為各種系統(tǒng)仿真、數(shù)字信號處理、科學(xué)可視化的標準語言。MATLAB已確認為必須掌握的計算工具,是從理論通向?qū)嶋H的橋梁,是最可信賴的科技資源之一。7MATLAB語言重要性MATLAB已成為各種系統(tǒng)仿真、數(shù)字信MATLAB軟件特點可歸納如下:簡單易學(xué);代碼短小高效;計算功能非常強大;強大的圖形表達功能;可擴展性能8MATLAB軟件特點可歸納如下:簡單易學(xué);8MATLAB產(chǎn)品族可以用來進行如下工作:*數(shù)值分析;*數(shù)值和符號計算;*工程與科學(xué)繪圖;*控制系統(tǒng)的設(shè)計與仿真;*數(shù)字圖像處理;*數(shù)字信號處理;*通訊系統(tǒng)設(shè)計與仿真;*財務(wù)與金融工程。9MATLAB產(chǎn)品族可以用來進行如下工作:*數(shù)值分析;9操作桌面的缺省外貌10命令窗口(指令窗)工作空間窗口(瀏覽器)當前路徑(當前目錄)窗口命令歷史窗口(歷史指令窗)操作桌面的缺省外貌10命令窗口(指令窗)通用操作界面命令窗口(指令窗)(CommandWindow)工作空間窗口(瀏覽器)(WorkspaceBrowser)命令歷史窗口(歷史指令窗)(CommandHistory)當前路徑(當前目錄)窗口(CurrentDirectoryBrowser)內(nèi)存數(shù)組編輯器(ArrayEditor)M文件編輯/調(diào)試器(Editor/Debugger)幫助導(dǎo)航/瀏覽器(HelpNavigator/Browser)圖形窗口(Figure)11通用操作界面命令窗口(指令窗)(CommandWindow數(shù)值、變量和表達式(一)數(shù)值的記述(二)變量命名規(guī)則(三)MATLAB默認的預(yù)定義變量(四)運算符和表達式(五)復(fù)數(shù)和復(fù)數(shù)矩陣12數(shù)值、變量和表達式(一)數(shù)值的記述12(一
)數(shù)值的記述采用習(xí)慣的十進制表示,可帶小數(shù)點或負號。以下記述都合法。3-990.0019.4561.3e-34.5e3313(一
)數(shù)值的記述采用習(xí)慣的十進制表示,可帶小數(shù)點或負號。以(二
)變量命名規(guī)則變量名、函數(shù)名是對字母大小寫敏感的。Myvar
myvar
MyVar
MyVarSin
SIN
sin變量名的第一個字符必須是英文字母,最多可包含31個字符(英文、數(shù)字和下連符)。myvar201變量名中不得包含空格、標點,但可包含下連符。my_var_201(對)my,var201(錯)14(二
)變量命名規(guī)則變量名、函數(shù)名是對字母大小寫敏感的。14(三)MATLAB默認的預(yù)定義變量每當MATLAB啟動時,預(yù)定義變量(Predefinedvariable)就被產(chǎn)生。15建議:不要對預(yù)定義變量名重新賦值,以免產(chǎn)生混淆。(三)MATLAB默認的預(yù)定義變量每當MATLAB啟動時,預(yù)(四
)運算符和表達式經(jīng)典教科書上的算術(shù)運算符在MATLAB中的表達方式。16(四
)運算符和表達式經(jīng)典教科書上的算術(shù)運算符在MATLABMATLAB書寫表達式的規(guī)則:表達式由變量名、運算符和函數(shù)名組成。表達式將按與常規(guī)相同的優(yōu)先級自左至右執(zhí)行運算。優(yōu)先級的規(guī)定是:指數(shù)運算級別最高,乘除運算次之,加減運算級別最低。括號可以改變運算的次序。書寫表達式時,賦值符“=”和運算符兩側(cè)允許有空格,以增加可讀性。17MATLAB書寫表達式的規(guī)則:表達式由變量名、運算符和函數(shù)名(五)復(fù)數(shù)和復(fù)數(shù)矩陣MATLAB把復(fù)數(shù)作為一個整體處理,虛數(shù)單位用自定義變量i或j表示。復(fù)數(shù)z=a+bi=reiθ直角坐標表示和極坐標表示之間轉(zhuǎn)換的MATLAB指令如下:real(z)z的實部a=rcosθimag(z)z的虛部b=rsinθabs(z)z的模r=√(a2+b2)angle(z)z的相角θ=arctg(b/a)MATLAB的矩陣元素允許是復(fù)數(shù)、復(fù)變量和由它們組成的表達式。18(五)復(fù)數(shù)和復(fù)數(shù)矩陣MATLAB把復(fù)數(shù)作為一個整體處理,虛數(shù)經(jīng)典教科書的直角坐標表示法z1=3+4i采用運算符構(gòu)成的直角坐標表示法和極坐標表示法z2=1+2*iz3=2*exp(i*pi/6)z=z1*z2/z319經(jīng)典教科書的直角坐標表示法19指令行中的標點符號20指令行中的標點符號20例:a=10*2;b=a+5,c=a*b;d=c+a,A=[123;456;789]B=[1,234,5,6789]C=[1;2;3]21例:a=10*2;b=a+5,c=a*b;d=c+a,21命令窗口的常用控制指令22命令窗口的常用控制指令22命令窗口中指令行的編輯為方便操作,MATLAB不但允許用戶在指令窗中對輸入指令進行各種編輯和運行,而且允許用戶對已經(jīng)輸入的指令進行回調(diào)、編輯和重運行。23命令窗口中指令行的編輯為方便操作,MATLAB不但允許用戶在WorkspaceBrowser和ArrayEditor一、WorkspaceBrowser工作空間窗口簡介列出數(shù)據(jù)的變量信息,包括變量名、變量數(shù)組大?。ǔ叽纾?、變量字節(jié)大小和變量類型?;竟ぷ骺臻g或簡稱為工作空間(Workspace)
MATLAB在進行運算時,將變量存儲在內(nèi)存中,這些存儲變量的內(nèi)存空間稱為基本工作空間,簡稱工作空間。暫時(臨時)工作空間:每當MATLAB在調(diào)用執(zhí)行某一函數(shù)時,即進入該函數(shù)的暫時工作空間(可視為基本工作空間的下層空間),函數(shù)在此空間進行運算,而不影響到基本空間內(nèi)的變量,當函數(shù)執(zhí)行結(jié)束后,MATLAB會同時刪除函數(shù)的暫時工作空間,并回到基本空間。24WorkspaceBrowser和ArrayEditor二、內(nèi)存變量查閱、刪除的指令操作法在指令窗中運用who,whos查閱MATLAB內(nèi)存變量。who命令:查看現(xiàn)存于基本空間的變量whos命令:詳細查看現(xiàn)存于基本空間的變量在指令窗中運用clear指令可以刪除內(nèi)存(工作空間內(nèi))的某一或所有變量如:clearA,clearall25二、內(nèi)存變量查閱、刪除的指令操作法在指令窗中運用who,wCommandHistory命令歷史窗口歷史指令窗記錄著用戶在MATLAB指令窗中所輸入過的所有指令。歷史記錄包括:每次開啟MATLAB的時間,每次開啟MATLAB后在指令窗中運行過的所有指令。歷史指令窗具有多種應(yīng)用功能:單行或多行指令的復(fù)制和運行、生成M文件等。26CommandHistory命令歷史窗口歷史指令窗記錄著用CurrentDirectory、路徑設(shè)置器CurrentDirectory當前路徑窗口簡介一用戶目錄和當前目錄設(shè)置二借助當前路徑窗口獲取M和MAT文件信息
MATLAB的搜索路徑和路徑設(shè)置器搜索路徑27CurrentDirectory、路徑設(shè)置器Current在matlab提示符下輸入x,matlab解釋器將按照以下步驟處理:1檢查x是否為一個變量。2檢查x是否為一個內(nèi)部函數(shù)。3檢查當前文件夾下是否存在x.dll,x.mex,x.m依次執(zhí)行。4檢查matlab搜索目錄下是否存在x.dll,x.mex,x.m,依次執(zhí)行path(‘c:\hello’,path);28在matlab提示符下輸入x,matlab解釋器將按照以下步Editor/DebuggerM文件編輯器簡介M文件編輯器不僅可以編輯M文件,而且可以對M文件進行交互式調(diào)試;不僅可處理帶.m擴展名的文件,而且可閱讀和編輯其他ASCII碼文件。M編輯器的啟動方法29Editor/DebuggerM文件編輯器簡介M文件編輯器M腳本文件編寫初步所謂M腳本文件是指:該文件中的指令形式和前后位置,與解決同一個問題時在命令窗中輸入的那組指令沒有任何區(qū)別。MATLAB在運行這個腳本時,只是簡單地從文件中讀取一條條指令,送到MATLAB中去執(zhí)行。與在指令窗中直接運行命令一樣,腳本文件運行產(chǎn)生的變量都駐留在MATLAB基本工作空間中。文件擴展名是“.m”。30M腳本文件編寫初步所謂M腳本文件是指:30M腳本文件編寫初步所謂M腳本文件是指:該文件中的指令形式和前后位置,與解決同一個問題時在命令窗中輸入的那組指令沒有任何區(qū)別。MATLAB在運行這個腳本時,只是簡單地從文件中讀取一條條指令,送到MATLAB中去執(zhí)行。與在指令窗中直接運行命令一樣,腳本文件運行產(chǎn)生的變量都駐留在MATLAB基本工作空間中。文件擴展名是“.m”。31M腳本文件編寫初步所謂M腳本文件是指:31幫助系統(tǒng)幫助方式概述一“純文本”幫助二
“導(dǎo)航/瀏覽器交互界面”幫助三
PDF幫助四
其他幫助HelpNavigator/Browser幫助導(dǎo)航/瀏覽器簡介一Contents幫助文件目錄窗二
Index幫助索引窗三
Search搜索窗四
Favorites書簽窗32幫助系統(tǒng)幫助方式概述32思考:一、指令clear,clf,clc各有什么用處?二、在MATLAB指令表達式中,標點符號“空格”和“逗號”各有什么作用?在哪些情況下,兩者的作用相同?在哪些情況下,兩者的作用不同?舉例說明。33思考:一、指令clear,clf,clc各有什么用處?33MATLAB編程基礎(chǔ)數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和函數(shù)數(shù)值、比較和邏輯計算符號計算M文件——腳本和函數(shù)MATLAB繪圖34MATLAB編程基礎(chǔ)數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和函數(shù)34MATLAB編程基礎(chǔ)——數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和函數(shù)35MATLAB定義了數(shù)值、字符、邏輯、符號和函數(shù)指針等多種數(shù)據(jù)類型MATLAB定義了矩陣、數(shù)組、單元數(shù)組和結(jié)構(gòu)等多種數(shù)據(jù)結(jié)構(gòu)函數(shù)是MATLAB的基本功能單元,調(diào)用方式為
函數(shù)名(參數(shù)1,參數(shù)2,…)MATLAB編程基礎(chǔ)——數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和函數(shù)35MATMATLAB編程基礎(chǔ)——數(shù)值、比較和邏輯計算36MATLAB的數(shù)值運算MATLAB編程基礎(chǔ)——數(shù)值、比較和邏輯計算36MATLABMATLAB編程基礎(chǔ)——數(shù)值、比較和邏輯計算37MATLAB中的關(guān)系運算符MATLAB編程基礎(chǔ)——數(shù)值、比較和邏輯計算37MATLABMATLAB編程基礎(chǔ)——數(shù)值、比較和邏輯計算38MATLAB的邏輯運算MATLAB編程基礎(chǔ)——數(shù)值、比較和邏輯計算38MATLABMATLAB編程基礎(chǔ)——符號計算數(shù)值法描述信號是工程專業(yè)的基礎(chǔ),符號方法描述信號的優(yōu)點:理論性強,簡單直觀符號變量的定義:
var=sym(str)或symsvar1var2…符號表達式到數(shù)值變量的轉(zhuǎn)換:
subs(f,x,y) %用y替換掉表達式f中x39MATLAB編程基礎(chǔ)——符號計算數(shù)值法描述信號是工程專業(yè)的基MATLAB編程基礎(chǔ)——M文件(腳本和函數(shù))MATLAB使用M語言進行編程(解釋性語言)M語言文件其文件的擴展名為.m(腳本和函數(shù))函數(shù)主要有兩類,a內(nèi)建(Build-in)函數(shù),各類工具箱。b自己開發(fā)的函數(shù)(文件名為*.m或*.mex)運行meditor的方法:>>edit或“File”菜單中“New”子菜單40MATLAB編程基礎(chǔ)——M文件(腳本和函數(shù))MATLAB腳本文件腳本文件是指:該文件中的指令形式和前后位置,與解決同一個問題時在命令窗中輸入的那組指令沒有任何區(qū)別。MATLAB在運行這個腳本時,只是簡單地從文件中讀取一條條指令,送到MATLAB中去執(zhí)行。與在指令窗中直接運行命令一樣,腳本文件運行產(chǎn)生的變量都駐留在MATLAB基本工作空間中。文件擴展名是“.m”。41腳本文件腳本文件是指:4142meditor的運行界面
42meditor的運行界面流程控制選擇結(jié)構(gòu)當人們判斷某一條件是否滿足,根據(jù)判斷的結(jié)果來選擇不同的解決問題的方法時,就需要使用選擇結(jié)構(gòu)。和C語言類似,MATLAB的條件判斷可以使用if語句或者switch語句。循環(huán)結(jié)構(gòu)在解決很多問題的時候需要使用循環(huán)結(jié)構(gòu),例如求解數(shù)列的和或者進行某種迭代法求解數(shù)值方程時,都需要循環(huán)結(jié)構(gòu)配合完成計算。在MATLAB中包含兩種循環(huán)結(jié)構(gòu),一種是循環(huán)次數(shù)不確定的while循環(huán),而另一種是循環(huán)次數(shù)確定的for循環(huán)。43流程控制選擇結(jié)構(gòu)43提高運算性能M語言和其他的高級語言不同,由于采用了解釋型語言,所以M語言的執(zhí)行效率肯定低于編譯型語言(例如C語言)。然而,隨著MATLAB版本的不斷升級,再加之合理利用MATLAB向量運算等特點可以較大幅度地提高M語言代碼的執(zhí)行效率。在本小節(jié)結(jié)合一些具體的例子來講述M語言編程以及MATLAB軟件本身在提高程序執(zhí)行效率方面的一些特性。44提高運算性能M語言和其他的高級語言不同,由于采用了解釋型語言45
1.向量化運算首先,希望牢記這樣一點,MATLAB最初的目的是提供便利的矩陣數(shù)據(jù)操作能力。所以在大多數(shù)的應(yīng)用程序中,不要使用循環(huán)結(jié)構(gòu)操作矩陣的元素,應(yīng)直接使用矩陣元素的索引或者矩陣運算的函數(shù),這樣做不僅能夠提高代碼的執(zhí)行效率,而且還能夠提高程序的可讀性,這就是所謂的向量化的運算,也就是說,盡量將使用while循環(huán)或者for循環(huán)的語句結(jié)構(gòu)轉(zhuǎn)換成等價的向量或者矩陣運算,以提高程序的運算速度。451.向量化運算46例子向量化運算——array_vs_loops.m。001 Mass=rand(5,10000);002 Length=rand(5,10000);003 Width=rand(5,10000);004 Height=rand(5,10000);005 006 [rows,cols]=size(Mass);007 008 disp([char(10),‘使用數(shù)組運算:’])%char(10)回車009 tic%t1=cputime010 Density=Mass./(Length.*Width.*Height);011 toc%t2=cputime012013 disp([char(10),'使用循環(huán)結(jié)構(gòu):'])%sprintf('%s\n','使用嗎','sd')014 tic;015 forI=1:rows016 forJ=1:cols017 Density(I)=Mass(I,J)/(Length(I,J)*Width(I,J)*Height(I,J));018 end019 end020 toc
例子比較了循環(huán)結(jié)構(gòu)和數(shù)組運算的執(zhí)行效率,程序中分別在010行使用數(shù)組運算和在015~019行使用循環(huán)結(jié)構(gòu)完成了同樣的工作。程序的運行結(jié)果如下:>>array_vs_loops使用數(shù)組運算:elapsed_time= 0使用循環(huán)結(jié)構(gòu):elapsed_time= 0.010046例子向量化運算——array_vs_loops.m47
2.預(yù)分配存儲空間另外一種能夠提高運算效率的方法就是進行內(nèi)存變量存儲空間的預(yù)分配,首先察看例子。
例子內(nèi)存預(yù)分配的例子——pre_allocate.m。001 disp([char(10),'使用內(nèi)存預(yù)分配:'])002 pre_allo=zeros(10000,1);003 tic;004 forI=1:10000005 pre_allo(I)=rand(1);006 end007 toc008 009 disp([char(10),'不使用內(nèi)存預(yù)分配:'])010 tic;011 forJ=1:10000012 not_pre_allo(J)=rand(1);013 end014 toc例子的執(zhí)行結(jié)果如下:>>pre_allocate使用內(nèi)存預(yù)分配:elapsed_time= 0.0900不使用內(nèi)存預(yù)分配:elapsed_time= 0.3410472.預(yù)分配存儲空間例子內(nèi)存預(yù)分48
上面兩種不同的運算惟一的區(qū)別就是程序002行,執(zhí)行這行語句之后,MATLAB自動分配了10000個連續(xù)的內(nèi)存空間用于存儲數(shù)據(jù),MATLAB將一次創(chuàng)建足夠的存儲空間,然后依次賦值。而后者not_pre_alloc變量沒有進行相應(yīng)的操作,所以帶來了兩次運算結(jié)果的不同。在不使用內(nèi)存預(yù)分配的運算中,MATLAB是如何進行操作的呢?當I=1時,MATLAB將使用一小塊長度為一個單元大小的內(nèi)存保存一位隨機數(shù)。當I=2時,MATLAB尋找一塊兩單元大小的內(nèi)存區(qū),一個單元放第一個隨機數(shù),第二個放另外一個隨機數(shù)。當I=10000時,MATLAB尋找一塊容納10000單元的內(nèi)存區(qū)存放以前的9999個隨機數(shù),同時把最新的一個隨機數(shù)加入進去。代碼運行的結(jié)果造成了存儲空間的浪費,降低了程序的執(zhí)行速度。所以,在編寫M語言程序的時候需要盡量使用內(nèi)存的預(yù)分配,而少使用或者不使用數(shù)組內(nèi)存空間的自動擴充方式。
…48上面兩種不同的運算惟一的區(qū)別就是程序00M文件調(diào)試M語言文件的編輯器——meditor不僅僅是一個文件編輯器,同時還是一個可視化的調(diào)試開發(fā)環(huán)境。在M文件編輯器中可以對M腳本文件、函數(shù)文件進行調(diào)試,以排查程序的錯誤。M文件的調(diào)試不僅可以在文件編輯器中進行,而且還可以在命令行中結(jié)合具體的命令進行,但是過程相對麻煩一些,所以重點講述在M文件編輯器中進行可視化調(diào)試的過程。一般地來說,應(yīng)用程序的錯誤有兩類,一類是語法錯誤,另外一類是運行時的錯誤。其中,語法錯誤包括了詞法或者文法的錯誤,例如函數(shù)名稱的拼寫錯誤等。而運行時的錯誤是指那些程序運行過程中得到的結(jié)果不是用戶需要的情況。但是,由于M文件是一種解釋型語言,語法錯誤和運行時的錯誤都只有在運行過程中才能發(fā)現(xiàn),所以程序的調(diào)試往往是在程序無法得到正確結(jié)果時進行程序修正的惟一手段。49
M文件調(diào)試M語言文件的編輯器——meditor不僅M語言的斷點(Breakpoints)為了能夠有效地處理各種情況,M語言的斷點類型除了類似C語言的用戶定義的斷點外,還有幾種自動斷點,分別為*StopifError。*StopifWarning。*StopifNaNorInf。*StopifAllErrors。這些自動斷點可以在程序中設(shè)置,當程序運行過程中發(fā)生了錯誤或者警告,則程序運行中斷,進入調(diào)試狀態(tài)50M語言的斷點(Breakpoints)M文件編輯器的Breakpoints菜單51M文件編輯器的Breakpoints菜單51調(diào)試程序的按鈕52調(diào)試程序的按鈕52函數(shù)文件M函數(shù)文件和腳本文件不同,函數(shù)文件不僅有自己特殊的文件格式,不同的函數(shù)還分別具有自己的工作空間。同其他高級語言類似,M函數(shù)文件也有局部變量和全局變量。53函數(shù)文件M函數(shù)文件和腳本文件不同,函數(shù)文件不僅有自己54例子函數(shù)文件示例——average.m。001 functiony=average(x)002 %AVERAGE求向量元素的均值003 %語法:004 %Y=average(X)005 %其中,X是向量,Y為計算得到向量元素的均值006 %若輸入?yún)?shù)為非向量則出錯007 008 009 [m,n]=size(x);010 %判斷輸入?yún)?shù)是否為向量011 if(~((m==1)|(n==1))|(m==1&n==1))012 %若輸入?yún)?shù)不是向量,則出錯013 error('Inputmustbeavector')014 end015 %計算向量元素的均值016 y=sum(x)/length(x);在MATLAB命令行中,鍵入下面的指令運行例子的代碼:>>z=1:99;>>y=average(z)y=5054例子函數(shù)文件示例——average.m。在MATLAB函數(shù)文件基本結(jié)構(gòu)*函數(shù)定義行*在線幫助*注釋行*M語言代碼55例子函數(shù)文件示例——average.m。001 functiony=average(x)002 %AVERAGE求向量元素的均值003 %語法:004 %Y=average(X)005 %其中,X是向量,Y為計算得到向量元素的均值006 %若輸入?yún)?shù)為非向量則出錯007 008 009 [m,n]=size(x);010 %判斷輸入?yún)?shù)是否為向量011 if(~((m==1)|(n==1))|(m==1&n==1))012 %若輸入?yún)?shù)不是向量,則出錯013 error('Inputmustbeavector')014 end015 %計算向量元素的均值016 y=sum(x)/length(x);函數(shù)文件基本結(jié)構(gòu)*函數(shù)定義行55例子函數(shù)文件示例——av函數(shù)定義行這一行代碼中包括關(guān)鍵字function、函數(shù)輸出參數(shù)y、函數(shù)的名稱average和函數(shù)的輸入?yún)?shù)x。需要注意的是函數(shù)的名稱,函數(shù)的名稱定義要求必須以字符開頭,后面可以用字符、數(shù)字和下劃線的組合構(gòu)成函數(shù)名稱。MATLAB對函數(shù)名稱的長度有限定,讀者可以在自己的MATLAB中,通過執(zhí)行namelengthmax函數(shù)獲取相應(yīng)的數(shù)值。假設(shè)該函數(shù)返回的數(shù)值為N,若函數(shù)的名稱長度超過了N,則MATLAB使用函數(shù)名稱的前N個字符作為函數(shù)名稱。一般推薦將函數(shù)名稱用小寫的英文字符表示,同時函數(shù)的M文件名稱最好和函數(shù)名稱保持一致,若文件名稱和函數(shù)名稱不一致,則調(diào)用函數(shù)的時候需要使用文件名稱而非函數(shù)名稱。
56函數(shù)定義行這一行代碼中包括關(guān)鍵字function、函數(shù)輸出函數(shù)注釋行M函數(shù)文件的在線幫助為緊隨在函數(shù)定義行的注釋行。在例子中,average函數(shù)的在線幫助為002~006行的注釋行。若在MATLAB命令行中鍵入下面的指令:
>>helpaverage(average是文件名)在MATLAB的命令窗口中就會出現(xiàn):57AVERAGE求向量元素的均值語法:
Y=average(X)
其中,X是向量,Y為計算得到向量元素的均值 若輸入?yún)?shù)為非向量則出錯函數(shù)注釋行M函數(shù)文件的在線幫助為緊隨在函數(shù)定義行的注釋行。58
其中,在線幫助中比較重要而且特殊的是在線幫助的第一行,在MATLAB中將這行注釋稱為H1幫助行,它是在線幫助的第一行,若使用lookfor函數(shù)查詢函數(shù)時,僅查詢并顯示函數(shù)的H1幫助行,例如,在MATLAB命令行中鍵入下面的指令:
>>lookforaverage在MATLAB的命令窗口中就會出現(xiàn):AVERAGE求向量元素的均值MEANAverageormeanvalue.
由于H1幫助行的特殊作用,所以在用戶自己定義M函數(shù)文件時,一定要編寫相應(yīng)的H1幫助行,對函數(shù)進行簡明、扼要的說明或者解釋。例子的010、012、015行代碼分別是程序具體的注釋行,這些注釋行不會顯示在在線幫助中,主要原因就是這些注釋行沒有緊隨在H1幫助行的后面,從010行開始一直到文件的結(jié)尾都是M函數(shù)文件的代碼行,這些代碼行需要完成具體的算法,實現(xiàn)用戶的具體功能。代碼行就是用戶開發(fā)的算法M語言的實現(xiàn)。58其中,在線幫助中比較重要而且特殊的是在線幫助的第子函數(shù)和私有函數(shù)同一個M函數(shù)文件中可以包含多個函數(shù)。如果在同一個M函數(shù)文件中包含了多個函數(shù),那么將出現(xiàn)在文件中的第一個M函數(shù)稱為主函數(shù)(primaryfunction),其余的函數(shù)稱為子函數(shù)(subfunction)。M函數(shù)文件的名稱一般與主函數(shù)的名稱保持一致,其他函數(shù)都必須按照函數(shù)的基本結(jié)構(gòu)來書寫,每一個函數(shù)的開始都是函數(shù)定義行,函數(shù)的結(jié)尾是另一個函數(shù)的定義行的開始或者整個M文件的結(jié)尾(最后一個子函數(shù)的結(jié)尾就是文件結(jié)束符)。不過,子函數(shù)不像主函數(shù),一般子函數(shù)沒有在線幫助,子函數(shù)的作用范圍有限,它只能被那些在定義子函數(shù)的M文件中定義的函數(shù)(包括主函數(shù)和其他子函數(shù))調(diào)用,不能被其他M文件定義的函數(shù)調(diào)用。59子函數(shù)和私有函數(shù)同一個M函數(shù)文件中可以包含多個函數(shù)。如果在同私有函數(shù)在MATLAB中有一類函數(shù)被稱為私有函數(shù),這類函數(shù)被放置在名稱為private的子目錄中。每一個函數(shù)文件都是標準的M語言函數(shù)文件,沒有特殊的關(guān)鍵字。但是,這些函數(shù)僅能被那些位于private子目錄的上一層目錄中的函數(shù)調(diào)用。例如,假設(shè)在MATLAB的搜索路徑中包含路徑\ProjectA,那么所有位于\ProjectA\private路徑下的函數(shù),只能在其上一層路徑\Projec
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度安置房施工質(zhì)量保修服務(wù)合同3篇
- 小學(xué)教師如何應(yīng)對課堂突發(fā)事件
- 小學(xué)語文教學(xué)與情感教育的融合策略
- 家用燃氣設(shè)備使用安全知識講座
- 2025年醫(yī)德醫(yī)風(fēng)課件設(shè)計理念探討
- 二零二五年度廣告發(fā)布與合作合同具體條款2篇
- 2024手房包銷及市場拓展與客戶渠道建設(shè)合同3篇
- 二零二五年度比亞迪汽車購車贈送4S店VIP服務(wù)合同3篇
- 2025年度監(jiān)理工程合同知識產(chǎn)權(quán)保護合同3篇
- 實難操作下針對環(huán)境污染突發(fā)的危機應(yīng)對與管理技術(shù)交流
- 影視作品價值評估-洞察分析
- 環(huán)境因素控制措施
- 2024年下學(xué)期學(xué)校德育工作總結(jié)
- 《電化學(xué)儲能系統(tǒng)艙大件運輸特殊要求》
- 2025年采購部工作計劃
- 《防范于心反詐于行》中小學(xué)防范電信網(wǎng)絡(luò)詐騙知識宣傳課件
- 江蘇某小區(qū)園林施工組織設(shè)計方案
- 勘察工作質(zhì)量及保證措施
- 墊江縣中醫(yī)院2018年11月份臨床技能中心教學(xué)設(shè)備招標項目招標文件
- 排放源統(tǒng)計(環(huán)統(tǒng))年報填報指南
- 反射療法師理論考試復(fù)習(xí)題及答案
評論
0/150
提交評論