數(shù)學建模競賽培訓之編程-MATLAB實用教程_第1頁
數(shù)學建模競賽培訓之編程-MATLAB實用教程_第2頁
數(shù)學建模競賽培訓之編程-MATLAB實用教程_第3頁
數(shù)學建模競賽培訓之編程-MATLAB實用教程_第4頁
數(shù)學建模競賽培訓之編程-MATLAB實用教程_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1MATLAB使用教程簡介數(shù)學建模2MATLAB的發(fā)展史 MATLAB名字由MATrix和 LABoratory 兩詞的前三個字母組合而成。那是20世紀七十年代,時任美國新墨西哥大學計算機科學系主任的Cleve Moler出于減輕學生編程負擔的動機,為學生設(shè)計了一組調(diào)用LINPACK和EISPACK矩陣軟件工具包庫程序的的“通俗易用”的接口,此即用FORTRAN編寫的萌芽狀態(tài)的MATLAB。 1983年春天,Cleve Moler到Standford大學講學, MATLAB深深地吸引了工程師John Little.John Little敏銳地覺察到MATLAB在工程領(lǐng)域的廣闊前景.同年,他和C

2、leve Moler,Steve Bangert一起,用C語言開發(fā)了第二代專業(yè)版.這一代的MATLAB語言同時具備了數(shù)值計算和數(shù)據(jù)圖示化的功能 3 1997年仲春,MATLAB5.0版問世,緊接著是5.1、5.2,以及和1999年春的5.3版,2004年7.0版?,F(xiàn)今的MATLAB擁有更豐富的數(shù)據(jù)類型和結(jié)構(gòu)、更友善的面向?qū)ο?、更加快速精良的圖形可視、更廣博的數(shù)學和數(shù)據(jù)分析資源、更多的應(yīng)用開發(fā)工具。 1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市場。從這時起,MATLAB的內(nèi)核采用C語言編寫,而且除原有的數(shù)值計算能力外,

3、還新增了數(shù)據(jù)圖視功能。在歐美等高校,MATLAB已經(jīng)成為線性代數(shù),自動控制理論,數(shù)理統(tǒng)計,數(shù)字信號處理,時間序列分析,動態(tài)系統(tǒng)仿真等高級課程的基本教學工具;成為攻讀學位的大學生,碩士生,博士生必須掌握的基本技能。 4MATLAB語言的主要特點(1)具有豐富的數(shù)學功能 包括矩陣各種運算。如:正交變換、三角分解、特征值、常見的特殊矩陣等。 包括各種特殊函數(shù)。如:貝塞爾函數(shù)、勒讓德函數(shù)、伽碼函數(shù)、貝塔函數(shù)、橢圓函數(shù)等。 包括各種數(shù)學運算功能。如:數(shù)值微分、數(shù)值積分、插值、求極值、方程求根、FFT 、常微分方程的數(shù)值解等。(2)具有很好的圖視系統(tǒng) 可方便地畫出兩維和三維圖形。 圖形用戶界面GUI制作工

4、具,可以制作用戶菜單和控件。使用者可以根據(jù)自己的需求編寫出滿意的圖形界面。 高級圖形處理。如:色彩控制、句柄圖形、動畫等。5MATLAB語言的主要特點(續(xù))(3)可以直接處理聲言和圖形文件。(4)具有若干功能強大的應(yīng)用工具箱。(5)使用方便,具有很好的擴張功能。 聲言文件。如: WAV文件(例:wavread,sound等)。 圖形文件。如: bmp 、gif 、 pcx 、tif 、jpeg等文件。 如:SIMULINK、COMM、DSP、 SIGNAL等16種工具箱。(6)具有很好的幫助功能 可以M文件轉(zhuǎn)變?yōu)楠毩⒂谄脚_的EXE可執(zhí)行文件。 使用MATLAB語言編寫的程序可以直接運行,無需編

5、譯。 提供十分詳細的幫助文件(PDF 、HTML 、demo文件)。 聯(lián)機查詢指令:help指令(例:help elfun,help exp,help simulink),lookfor關(guān)鍵詞(例: lookfor fourier )。 MATLAB的應(yīng)用接口程序API是MATLAB提供的十分重要的組件 ,由 一系列接口指令組成 。用戶就可在FORTRAN或C中 , 把MATLAB當作計算引擎使用 。 6MATLAB簡介1 MATLAB的計算功能(1) MATLAB的數(shù)據(jù)類型 現(xiàn)有四種基本數(shù)據(jù)類型:雙精度數(shù)組、字符串數(shù)組、元胞數(shù)組、構(gòu)架數(shù)組。 元胞數(shù)組(Cell Array)如同銀行里的保險箱

6、庫一樣。 該數(shù)組的基本組分是元胞(Cell),以下標來區(qū)分。 元胞可以存放任何類型、任何大小的數(shù)組。 構(gòu)架數(shù)組(Structure Array)也能存放各類數(shù)據(jù)。 該數(shù)組的基本組分是構(gòu)架( Structure ),以下標來區(qū)分。 構(gòu)架必須在劃分“域”后才能使用。 數(shù)據(jù)不能存放于構(gòu)架,只能存放在域中。 構(gòu)架的域可以存放任何類型、任何大小的數(shù)組。 不同構(gòu)架的同名域中存放的內(nèi)容可不同。 同一個元胞數(shù)組中各元胞的內(nèi)容可以不同。7(1)向量的創(chuàng)建 在matlab的命令窗口鍵入以下字符 a = 1 2 3 4 5 6 9 8 7 a = 1 2 3 4 5 6 9 8 7 希望得到元素從0到20,步距為2

7、的一個向量,只需鍵入以下命令即可 t = 0:2:20 t = 2 4 6 8 10 12 14 16 18 20 一. 矩陣:8 (2)向量的加減運算 設(shè)a,b為同維向量,則c=a+b 或c=a-b得到兩個向量相加減的結(jié)果。 向量與常數(shù)的相加減為每個元素加減這個常數(shù)。例如: b = a + 2 得到 b = 3 4 5 6 7 8 11 10 9 c = a + b c = 4 6 8 10 12 14 20 18 169 (3)向量的乘除運算 a. 向量的乘法運算 點積運算的運算符為 .*, 其意義為兩個向量的對應(yīng)元素進行乘法運算,例如 a=1 2, b=3 4 則c=a.*b=3 8 為

8、向量的乘方運算,例如 c=a.2=1 4 b. 向量的除法運算10 (3)向量的乘除運算 a. 向量的乘法運算 點積運算的運算符為 .*, 其意義為兩個向量的對應(yīng)元素進行乘法運算,例如 a=1 2, b=3 4 則c=a.*b=3 8 為向量的乘方運算,例如 c=a.2=1 4 b. 向量的除法運算11 2矩陣 輸入矩陣時每一行元素有分號或者回車鍵分隔。例如: B = 1 2 3 4;5 6 7 8;9 10 11 12 B = 1 2 3 4 5 6 7 8 9 10 11 1212Matlab中矩陣的多種運算(2)矩陣乘法: (1)矩陣轉(zhuǎn)置運算: C = B C = 1 5 9 2 6 1

9、0 3 7 11 4 8 12 D = B * C D = 30 70 110 70 174 278 110 278 44613(3)矩陣點乘 當兩矩陣維數(shù)相同時,運算符.*的結(jié)果是兩矩陣的對應(yīng)元素相乘。 E = 1 2;3 4; F = 2 3;4 5; G = E .* F G = 2 6 12 20 14(4)矩陣的乘方 矩陣為方陣時,可以進行矩陣的乘方運算,運算符為 E3 ans = 37 54 81 118 若僅是元素進行乘方運算,可用運算符. E.3 ans = 1 8 27 6415 ( 5)矩陣的逆 矩陣逆利用函數(shù)inv計算,此時,要求矩陣 方陣且可逆。 X = inv(E)

10、X = -2.0000 1.0000 1.5000 -0.5000(6)矩陣元素的賦值與運算 Matlab允許用戶對矩陣的單個元素進行賦值和操作,Matlab此時命令方式為 X(i,j)=變量名16 (7)矩陣的特征值及特征多項式 a. 特征值 利用函數(shù)eig來計算 eig(E) ans = -0.3723 5.3723 b. 特征多項式 利用函數(shù)poly來計算特征多項式的系數(shù),此時,多項式系數(shù)以降冪形式排列。 p = poly(E) p = 1.0000 -5.0000 -2.000017其他特殊矩陣的生成方法: 1)、eye (m,n)或eye (m) 產(chǎn)生m*n 或 m*m的單位矩陣。例

11、如: eye (3,4)與eye (3)分別產(chǎn)生如下矩陣: 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 12)、zeros (m,n) 或 zeros (m) 產(chǎn)生m*n 或m*m 的零矩陣。例如: zeros (3,4) 與zeros (3) 分別產(chǎn)生如下矩陣: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0183)、ones (m,n) 或ones (m) 產(chǎn)生m*n或m*m的全部元素為1的矩 陣。例如:ones (3,4)與ones(3)分別產(chǎn)生如下矩陣: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

12、1 1 1 1 1 119 3. 多項式 (1)多項式的創(chuàng)建 例如: s4+3s3-15s2-2s+9 如果想將其輸入到matlab中,只需按下列方式輸入向量 x = 1 3 -15 -2 9 x = 1 3 -15 -2 920 (2)計算多項式的值 可利用函數(shù)“polyval”計算多項式的值。例如,多項式在s=2的值為 z = polyval(1 0 0 0 1,2) z = 17 ( 3)求多項式的根 若求以下多項式的根 s4+3s3-15s2-2s+9 roots(1 3 -15 -2 9) ans = -5.5745 2.5836 -0.7951 0.7860214)、polyder

13、 (p) 求p的微分多項式。 例如: p=1 -6 11 -6; dp=polyder(p) dp = 3 -12 1122 (5) 多項式的乘法和除法 a. 多項式的乘積 可利用它們系數(shù)的卷積得到MATALB的函數(shù)conv可以實現(xiàn)。 b. 多項式的除法 利用函數(shù)deconv可以返回兩個多項式除法的結(jié)果和余數(shù)。 (6)多項式的加法 兩個同階多項式的相加,可用z=x+y。對于一般x和y不同維數(shù)的情況,可用自定義的函數(shù)polyadd完成。 23 7)、r,p,k=residue (x,y) 求x/y的部分因式分解。若多項式x,y都沒有重根,則可把x/y的比值表示為x/y=r1/(s-p1)+r2/

14、 (s-p2)+.+rn/ (s-pn)+ks例如 用residue指令求x/(x2+3x+2)的部分因式分解: x=1 0; y=1 3 2; r,p,k=residue(x,y) r = 2 -1 p = -2 -1 k = 24當輸入三個參數(shù) r,p,k 時,該函數(shù)又會生成原來的函數(shù)。例如: x,y=residue(r,p,k) x = 1 0 y = 1 3 225三 符號變量、符號表達式、抽象函數(shù): 函數(shù)sym用于生成符號變量和符號表達式,如: x=sym(x) a=sym(alpha)分別創(chuàng)建變量x, alpha f=sym(a*x2+b*x+c)創(chuàng)建變量表達式f ,但要注意此式并

15、沒有自動創(chuàng)建變量a, b, c, x??梢杂煤瘮?shù)syms對多個變量同時定義,如 : syms a b c x 函數(shù)sym也可以用來表示確定的函數(shù),如 f=sym (f(x) 生成函數(shù)f (x) 。26四 常見符號計算:1.微分:diff是求微分最常用的函數(shù)。其輸入?yún)?shù)既可以是函數(shù)表達式,也可以是符號矩陣。Diff (f, x, n)表示對f關(guān)于x求n階導數(shù)。例如:1).下面程序段將生成表達式sin (ax), 并分別對其中的x和a求導。 syms a x f=sin(a*x); df=diff(f,x) df = cos(a*x)*a dfa=diff(f,a) dfa = cos(a*x)*

16、x272)、若輸入?yún)?shù)為矩陣,將對矩陣中的每個元素求導。 syms a x A=-sin(a*x),sin(a*x);cos(a*x),cos(a*x) A = -sin(a*x), sin(a*x) cos(a*x), cos(a*x) dy=diff(A,x) dy = -cos(a*x)*a, cos(a*x)*a -sin(a*x)*a, -sin(a*x)*a283)、可用函數(shù)jacobian來計算Jacobi矩陣。 syms r l f x=r*cos(l)*cos(f); y=r*cos(l)*sin(f); z=r*sin(l); J=jacobian(x;y;z,r l f)

17、 J = cos(l)*cos(f), -r*sin(l)*cos(f), -r*cos(l)*sin(f) cos(l)*sin(f), -r*sin(l)*sin(f), r*cos(l)*cos(f) sin(l), r*cos(l), 0 292.積分:用函數(shù)int來求符號表達式的積分。命令格式為: int (f, r, x0, x1)其中f為所要積分的表達式,r為積分變量,若為定積分,則x0,x1為積分上下限。例: sym x; sym k real f=exp(-(k*x)2) f = exp(-k2*x2) int(f,x,-inf,inf) ans = signum(k)/k*

18、pi(1/2)303.級數(shù)求和:函數(shù)用于對符號表達式求和。例: syms k; s1=symsum(1/k2,1,inf) s1 = 1/6*pi2 314.極限:用函數(shù)limit來求表達式的極限。 函數(shù)limit的常用調(diào)用格式: 數(shù)學表達式 命令格式 Limit (f ),或limit (f , x ) Limit (f , x , a) , 或 limit (f , a ) Limit (f , x , a , left) Limit (f , x , a , right)325.化簡: 1)、collect (f ) 將表達式中相同次冪的項合并,也可以再輸入一個參數(shù)指定以哪個變量的冪次合

19、并。 2)、expand ( f ) 將表達式展開。 3)、horner ( f ) 將表達式轉(zhuǎn)換為嵌套格式。 4)、factor ( f ) 將表達式分解因式,并且分解后的多項式的所有系數(shù)都為有理數(shù)。 5)、simplify ( f ) 利用函數(shù)規(guī)則對表達式進行化簡。33MATLAB的程序設(shè)計 341 腳本文件和函數(shù)文件11 M腳本文件 對于一些比較簡單的問題 ,在指令窗中直接輸入指令計算 。 對于復雜計算,采用腳本文件(Script file)最為合適 。 MATLAB只是按文件所寫的指令執(zhí)行 。 M腳本文件的特點是: 腳本文件的構(gòu)成比較簡單,只是一串按用戶意圖排列而成的(包括控制流向指令

20、在內(nèi)的)MATLAB指令集合。 腳本文件運行后 ,所產(chǎn)生的所有變量都駐留在 MATLAB基本工作空間(Base workspace)中。只要用戶不使用清除指令(clear), MATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中。M文件有兩種形式 :腳本文件(Script File)和函數(shù)文件(Function File )。這兩種文件的擴展名,均為“ . m” 。351 腳本文件和函數(shù)文件(續(xù)1)12 M函數(shù)文件 與腳本文件不同 ,函數(shù)文件猶如一個“黑箱”,把一些數(shù)據(jù)送進并經(jīng)加工處理,再把結(jié)果送出來。 MATLAB提供的函數(shù)指令大部分都是由函數(shù)文件定義的。 M函數(shù)文件的特點是: 從形

21、式上看 ,與腳本文件不同 ,函數(shù)文件的笫一行總是以 “function”引導的“函數(shù)申明行”。從運行上看 ,與腳本文件運行不同 ,每當函數(shù)文件運行, MATLAB就會專門為它開辟一個臨時工作空間,稱為函數(shù)工作空間( Function workspace) 。當執(zhí)行文件最后一條指令時 ,就結(jié)束該函數(shù)文件的運行,同時該臨時函數(shù)空間及其所有的中間變量就立即被清除。 MATLAB允許使用比 “標稱數(shù)目 ”較少的輸入輸出宗量,實現(xiàn)對函數(shù)的調(diào)用 。361 腳本文件和函數(shù)文件(續(xù)2)13 M文件的一般結(jié)構(gòu) 由于從結(jié)構(gòu)上看 ,腳本文件只是比函數(shù)文件少一個“函數(shù)申明行”,所以只須描述清楚函數(shù)文件的結(jié)構(gòu) 。 典型

22、 M函數(shù)文件的結(jié)構(gòu)如下 : 函數(shù)申明行:位于函數(shù)文件的首行,以關(guān)鍵字 functio 開頭,函數(shù)名以及函數(shù)的輸入輸出宗量都在這一行被定義。 笫一注釋行:緊隨函數(shù)申明行之后以%開頭笫一注釋行。該行供lookfor關(guān)鍵詞查詢和 help在線幫助使用 。 在線幫助文本區(qū) :笫一注釋行及其之后的連續(xù)以%開頭的所有注釋行構(gòu)成整個在線幫助文本。 編寫和修改記錄:與在線幫助文本區(qū)相隔一個“空”行,也以%開頭,標志編寫及修改該M文件的作者和日期等 。 函數(shù)體:為清晰起見,它與前面的注釋以“空”行相隔。372 函數(shù)調(diào)用和參數(shù)傳遞21 局部變量和全局變量 局部(Local)變量:它存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)

23、生于該函數(shù)的運行過程中,其影響范圍也僅限于該函數(shù)本身 。 全局(Global)變量:通過 global 指令,MATLAB也允許幾個不同的函數(shù)空間以及基本工作空間共享同一個變量,這種被共享的變量稱為全局變量。22 函數(shù)調(diào)用 在MATLAB中,調(diào)用函數(shù)的常用形式是:輸出參數(shù)1,輸出參數(shù)2, = 函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2, ) 函數(shù)調(diào)用可以嵌套,一個函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自己 (遞歸調(diào)用)。382 函數(shù)調(diào)用和參數(shù)傳遞(續(xù))23 參數(shù)傳遞 MATLAB在函數(shù)調(diào)用上有一個與眾不同之處 :函數(shù)所傳遞的參數(shù)具有可調(diào)性 。 傳遞參數(shù)數(shù)目的可調(diào)性來源于如下兩個MATLAB永久變量: 函數(shù)體內(nèi)的

24、 nargin 給出調(diào)用該函數(shù)時的輸入?yún)?shù)數(shù)目。 函數(shù)體內(nèi)的 nargout 給出調(diào)用該函數(shù)時的輸出參數(shù)數(shù)目。 只要在函數(shù)文件中包括這兩個變量,就可以知道該函數(shù)文件調(diào)用時的輸入?yún)?shù)和輸出參數(shù)數(shù)目。 值得注意:nargin、 nargout 本身都是函數(shù),不是變量,所以用戶不能賦值,也不能顯示。 “變長度”輸入輸出宗量:varargin 、 varrgout。具有接受 “任意多輸入” 、返回“任意多輸出”的能力 。 跨空間變量傳遞:evalin。(參考 : circle .m,am1.m)3923 MATLAB的程序結(jié)構(gòu)和控制流231 程序結(jié)構(gòu) 循環(huán)結(jié)構(gòu): MATLAB提供兩種循環(huán)方式。 順序結(jié)構(gòu) 分支結(jié)構(gòu): ifelseend 。forend 循環(huán)和while-end循環(huán)。232 程序流控制 常用指令:return,echo,input,pause,keyboard,break。 switch-case 結(jié)構(gòu)。 try-catch 結(jié)構(gòu)。 警示指令:error, warning 。4023 MATLAB的程序結(jié)構(gòu)和控制流(續(xù))233 圖形用戶界面(GUI)編程 現(xiàn)代的主流應(yīng)用程序已經(jīng)從命令行的交互方式轉(zhuǎn)變?yōu)橐詧D形界面為主的交互方式,這主要是由于它給用戶帶來了操作和控制的方便與靈活性。(面向?qū)ο缶幊蹋?MATLAB能夠以比較簡單的方式實現(xiàn)一系列的圖形界面功能。通過對控件、菜單屬性

溫馨提示

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

評論

0/150

提交評論