控制系統(tǒng)CAD-基于MATLAB語言第2章-M課件_第1頁
控制系統(tǒng)CAD-基于MATLAB語言第2章-M課件_第2頁
控制系統(tǒng)CAD-基于MATLAB語言第2章-M課件_第3頁
控制系統(tǒng)CAD-基于MATLAB語言第2章-M課件_第4頁
控制系統(tǒng)CAD-基于MATLAB語言第2章-M課件_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章MATLAB與Simulink簡介第2章MATLAB與Simulink簡介2.1MATLAB的基礎(chǔ)知識2.1.1MATLAB語言系統(tǒng)1.MATLAB簡介MATLAB(MATrixLABoratory,即矩陣實驗室)是美國的CleveMoler教授利用自己研制的基于特征值計算和線性代數(shù)軟件包開發(fā)的一種高級語言。

1990年推出的MATLAB3.5i是第一個可以運行于MicrosoftWindows下的版本,它可以在兩個窗口上分別顯示命令行計算結(jié)果和圖形結(jié)果。稍后推出的SimuLAB環(huán)境首次引入基于框圖的仿真功能,該環(huán)境就是我們現(xiàn)在所知的Simulink,其模型輸入的方式使得一個復(fù)雜的控制系統(tǒng)的數(shù)字仿真問題變得十分直觀而且相當(dāng)容易。

2.1MATLAB的基礎(chǔ)知識2.1.1MATLAB語經(jīng)過多年來版本的不斷更新,新版本的MATLAB功能已經(jīng)十分強大,其應(yīng)用領(lǐng)域日益廣泛,速度更快,數(shù)值性能更好;用戶圖形界面設(shè)計更趨合理;與C語言接口及轉(zhuǎn)換的兼容性更強;新的虛擬現(xiàn)實工具箱更給仿真結(jié)果三維視景下顯示帶來了新的解決方案。經(jīng)過多年來版本的不斷更新,新版本的MATLAB功能已經(jīng)十分強MATLAB具有以下主要特點:(1)超強的數(shù)值運算功能。(2)語法限制不嚴(yán)格,程序設(shè)計自由度大。(3)程序的可移植性很好。

(4)強大的數(shù)據(jù)可視化功能。

(5)豐富的工具箱。

MATLAB具有以下主要特點:(1)超強的數(shù)值運算功能。(22.MATLAB工作環(huán)境2.MATLAB工作環(huán)境圖形窗口“Figure”

圖形窗口“Figure”M文件窗口

M文件窗口3.MATLAB的M文件所謂M文件,就是用戶把要實現(xiàn)的命令寫在一個以.m為擴展名的文件中M文件有兩種格式(統(tǒng)稱為M文件)函數(shù)式M文件程序式M文件程序式M文件用于把很多需要在命令窗口輸入的命令放在一起,就是命令的簡單疊加函數(shù)式M文件用于把重復(fù)的程序段封裝成函數(shù)供用戶調(diào)用。3.MATLAB的M文件所謂M文件,就是用戶把要實現(xiàn)的命令寫(1)程序式M文件(1)程序式M文件運行程序,得到結(jié)果:運行程序,得到結(jié)果:(2)函數(shù)式M文件函數(shù)式M文件首行總是以關(guān)鍵字“function”開頭,并在首行中列出全部輸入、輸出參數(shù)以及函數(shù)名。函數(shù)名應(yīng)置于等號右側(cè)并與對應(yīng)的M文件名相同,輸出參數(shù)緊跟在“function”之后,常用中括號括起來(若僅有一個輸出參數(shù)則無需中括號);輸入?yún)?shù)緊跟在函數(shù)名之后,常用小括號括起來。如果函數(shù)有多個輸入或輸出參數(shù),則多個參數(shù)之間用英文狀態(tài)下的逗號加以分隔。(2)函數(shù)式M文件函數(shù)式M文件首行總是以關(guān)鍵字“functic=5運行程序,得到結(jié)果:c=運行程序,4.MATLAB的幫助系統(tǒng)MATLAB具有完善的幫助系統(tǒng),幫助內(nèi)容豐富,獲取幫助的形式多樣。幫助系統(tǒng)包括:命令行幫助聯(lián)機幫助演示幫助充分利用幫助系統(tǒng),可以更快更準(zhǔn)確地掌握MATLAB的使用方法。

4.MATLAB的幫助系統(tǒng)MATLAB具有完善的幫助系統(tǒng),命令行幫助命令行幫助help工具箱或命令名

help工具箱或命令名聯(lián)機幫助聯(lián)機幫助演示幫助演示幫助2.1.2MATLAB的基本運算1.MATLAB的基本語句結(jié)構(gòu)(1)變量變量命名的規(guī)則為:1)變量的名稱必須以字母開頭,其后可以為字母、數(shù)字或者下劃線。2)變量名長度不超過63個字符,超過的部分將會被忽略。3)變量名區(qū)分字母的大小寫;2.1.2MATLAB的基本運算1.MATLAB的基本語MATLAB中還設(shè)置了如下一些特殊變量:MATLAB中還設(shè)置了如下一些特殊變量:

MATAB語言的賦值語句有兩種:

·變量名=運算表達式·[返回變量列表]=函數(shù)名(輸入變量列表)例如

>>T=0:pi/50:2*pi;>>[m,p]=bode(a,b,c,d,w)(2)賦值語句例如(2)賦值語句說明等號右邊的表達式可以由分號結(jié)束,也可以由逗號或換行號結(jié)束,但它們的含義是不同的。如果用分號結(jié)束,則左邊的變量結(jié)果將不在屏幕上顯示出來;由逗號或換行號結(jié)束,則將把左邊的返回值內(nèi)容全部顯示出來。

在調(diào)用函數(shù)時,MATLAB允許一次返回多個結(jié)果,當(dāng)函數(shù)的輸出參數(shù)不只一個時,用中括號“[]”把輸出參數(shù)括起來,參數(shù)之間用逗號分開;輸入變量用小括號“()”括起來,當(dāng)個數(shù)不只一個時,用逗號分開。

說明在調(diào)用函數(shù)時,MATLAB允許一次返回多個結(jié)果,在MATLAB中,冒號“:”是很有用的算子,經(jīng)常用它來生成向量。語句>>a=i:k:j;它生成一個從i到j(luò)步長為k的行向量a。如果增量為負(fù)值,可以得一個遞減順序的向量,增量為l時可以忽略。MATLAB用通常的十進制數(shù)表示常數(shù)、小數(shù)和負(fù)數(shù)。與通常的數(shù)學(xué)表示一樣,還可以使用以10為冪的常數(shù)以及虛數(shù),MATLAB接受各種合法的數(shù)據(jù)輸入。

(3)數(shù)據(jù)的輸入輸出格式在MATLAB中,冒號“:”是很有用的算子,經(jīng)常用它來生成向(4)常用操作命令(4)常用操作命令2.MATLAB的基本運算加(+)、減(-)、乘(*)、除(/)、冪(^)等運算操作

MATLAB還提供幾乎所有的運算函數(shù)

初等運算函數(shù)

2.MATLAB的基本運算加(+)、減(-)、乘(*)、除三角函數(shù)

三角函數(shù)數(shù)據(jù)統(tǒng)計分析函數(shù)

數(shù)據(jù)統(tǒng)計分析函數(shù)例2-1某二階欠阻尼系統(tǒng)的單位階躍響應(yīng)為試?yán)L制響應(yīng)曲線。MATLAB程序如下:t=0:0.1:15;c=1-1.15*exp(-0.5*t).*sin(0.866*t+pi/3);plot(t,c);grid;

%繪制曲線由max函數(shù)可求出響應(yīng)的最大值(峰值)

MATLAB程序如下:

mp=max(c)

運行程序,得到結(jié)果:mp=1.1623例2-1某二階欠阻尼系統(tǒng)的單位階躍響應(yīng)為試?yán)L制響應(yīng)曲線。M運行程序,得到結(jié)果:運行程序,得到結(jié)果:3.矩陣運算MATLAB中所有的計算都是以矩陣為基本單元進行的,MATLAB對矩陣的運算功能最齊全,也最強大。(1)矩陣輸入矩陣輸入時一行中各元素間用逗號“,”或空格,行間用分號“;”或直接回車,整個矩陣以括號“[”和“]”表示開始和結(jié)束。3.矩陣運算MATLAB中所有的計算都是以矩陣為基本單元進例2-2輸入以下MATLAB語句a=[123;456;789]b=[1,1+2i;2+3i,exp(-1)]

運行程序,得到結(jié)果:a=123456789b=1.00001.0000+2.0000i2.0000+3.0000i0.3679例2-2輸入以下MATLAB語句a=[123;45常用的初等矩陣

常用的初等矩陣(2)矩陣的常規(guī)運算注意矩陣的四則運算必須復(fù)合矩陣的維數(shù)要求,否則會給出矩陣維數(shù)錯誤提示。

(2)矩陣的常規(guī)運算注意矩陣的四則運算必須復(fù)合矩陣的維數(shù)要例2-3矩陣加法與乘法。輸入以下MATLAB語句a=[121;221;312];b=[331;321;143];c=a+bd=a*b運行程序,得到結(jié)果:c=452542455d=1011613147141910例2-3矩陣加法與乘法。輸入以下MATLAB語句a=[1例2-4矩陣的點運算。輸入以下MATLAB語句運行程序,得到結(jié)果:a=[121;221;312];b=[331;321;143];c=a.*bd=a.^b

c=361641346d=181841318例2-4矩陣的點運算。輸入以下MATLAB語句運行程序,得例2-5矩陣右除與左除。輸入以下MATLAB語句a=[121;221;212];b=[1;2;3];a/b

%矩陣右除運行程序,得到結(jié)果:???Errorusing==>mrdivideMatrixdimensionsmustagree.a\b

%矩陣左除重新輸入語句ans=1.0000-0.33330.6667a=[121;221;212];b=[1;2;3];a/b

%矩陣右除運行程序,得到結(jié)果:例2-5矩陣右除與左除。輸入以下MATLAB語句a=[1例2-6矩陣轉(zhuǎn)置與逆矩陣。輸入以下MATLAB語句a=[010;001;-6-11-6];az=a‘a(chǎn)i=inv(a)運行程序,得到結(jié)果:az=00-610-1101-6ai=-1.8333-1.0000-0.16671.00000001.00000例2-6矩陣轉(zhuǎn)置與逆矩陣。輸入以下MATLAB語句a=[0(3)矩陣特征值運算(3)矩陣特征值運算例2-7分別計算矩陣a的有關(guān)特征參數(shù)。輸入以下MATLAB語句a=[123;456;780][cond(a),norm(a),rank(a)]

運行程序,得到結(jié)果:ans=35.105913.20153.0000例2-7分別計算矩陣a的有關(guān)特征參數(shù)。輸入以下MATLAB4.關(guān)系運算和邏輯運算MATLAB的關(guān)系運算符

說明

a和b可以都是矩陣或數(shù)組,它們的大小完全相同。對于關(guān)系和邏輯表達式的輸出來說,1表示“真”,而0則表示“假”。關(guān)系操作是對矩陣或數(shù)組各自相對應(yīng)的元素進行比較,返回的結(jié)果與兩相比較的矩陣或數(shù)組的大小相同的0、1陣。4.關(guān)系運算和邏輯運算MATLAB的關(guān)系運算符說明a和例2-8比較矩陣的大小。輸入以下MATLAB語句a=[1612;3327];b=[234;678];c=gt(a,b)運行程序,得到結(jié)果:c=011010說明對于復(fù)數(shù)運算,“==”與“~=”運算,既比較實部,又比較虛部。而其他運算僅比較實部。關(guān)系運算同樣也可用于常量與矩陣的比較,在這種情況下,該常量與矩陣的每一個元素進行比較,其結(jié)果是一個與矩陣同維數(shù)的0、1矩陣。例2-8比較矩陣的大小。輸入以下MATLAB語句a=[1

邏輯操作符

邏輯操作符例2-9矩陣的邏輯與、或、非運算。輸入以下MATLAB語句x=[01;10];y=[00;10];x&yx|ynot(x)運行程序,得到結(jié)果:ans=0010ans=0110ans=1001例2-9矩陣的邏輯與、或、非運算。輸入以下MATLAB語句5.多項式運算5.多項式運算例2-10輸入以下MATLAB語句p=[10-2-4];%輸入多項式r=roots(p)%求多項式P(x)=-2x–4的根運行程序,得到結(jié)果:r=2.0000-1.0000+1.0000i-1.0000-1.0000i例2-10輸入以下MATLAB語句p=[10-2-4例2-11輸入以下MATLAB語句a=[1.2350.9;51.756;3901;1234];%輸入矩陣poly(a)%求矩陣a的特征多項式polyval(ans,20)%求特征多項式中未知數(shù)為20時的值

運行程序,得到結(jié)果:ans=1.0000-6.9000-77.2600-86.1300604.5500ans=7.2778e+004說明矩陣a的特征多項式為

當(dāng)x=20時,多項式的值為72778。例2-11輸入以下MATLAB語句a=[1.2350例2-12已知控制系統(tǒng)的開環(huán)傳遞函數(shù)為求系統(tǒng)的閉環(huán)特征方程并計算系統(tǒng)的閉環(huán)特征根。p0=conv([1,2],[1,3])+conv([1,0],[1,1])%求特征方程p0=266>>p1=rref(p0)%行系數(shù)化簡p1=133>>r=roots(p1)%求特征根r=-1.5000+0.8660i-1.5000-0.8660i輸入語句說明系統(tǒng)閉環(huán)特征方程特征根-1.5000+0.8660i,-1.5000-0.8660i例2-12已知控制系統(tǒng)的開環(huán)傳遞函數(shù)為求系統(tǒng)的閉環(huán)特征方程2.1.3MATLAB的繪圖強大的圖形功能是MATLAB受到人們廣泛歡迎的一個重要原因。MATLAB軟件提供了豐富的用于繪制圖形、標(biāo)注圖形以及輸出圖形的基本命令。常用的有

二維圖形三維圖形2.1.3MATLAB的繪圖強大的圖形功能是MATLAB1.二維圖形(1)曲線繪圖函數(shù)格式:plot(x)plot(x1,y1,x2,y2…)plot(x1,y1,’plotstyle’…)

1.二維圖形(1)曲線繪圖函數(shù)格式:plot(x)plot函數(shù)是MATLAB中繪制基本二維曲線圖形的函數(shù),它的基本功能是打開一個新的圖形窗口繪制曲線。

若已經(jīng)存在一個圖形窗口,則自動將該窗口的原內(nèi)容清除,然后再繪制新的圖形。

·plot(x1,y1,x2,y2…)

繪制以(x1,y1),(x2,y2)…確定的多條曲線?!lot(x1,y1,’plotstyle’…)

繪制由字符串“plotstyle”定義的顏色、線型的多條曲線。其中“plotstyle”選項的部分表示如表2-4所示。plot函數(shù)是MATLAB中繪制基本二維曲線圖形的函數(shù),它的MATLAB繪圖命令選項

MATLAB繪圖命令選項·title(‘字符串’)用于給圖形添加標(biāo)題,將字符串添加在圖形上方的中部?!label(‘字符串’)用于對圖形的x軸進行說明,將字符串添加在圖形x軸下方?!label(‘字符串’)用于對圖形的y軸進行說明,將字符串添加在圖形y軸左方。

·text(x,y,‘字符串’)用于在圖形指定位置(x,y)添加字符串對圖形進行說明?!ぃ?)繪圖輔助函數(shù)(2)繪圖輔助函數(shù)gtext(‘字符串’)與text功能類似,只是在執(zhí)行命令后會在圖形中出現(xiàn)一個十字線,可用鼠標(biāo)來指定添加字符串的位置。

·grid

用于給圖形添加?xùn)鸥?,?種格式:

>>gridon;

給圖形添加?xùn)鸥?/p>

>>gridoff;

去除柵格

>>grid;

在添加?xùn)鸥窈腿コ龞鸥駜煞N狀態(tài)中切換·axis()

用于對繪圖坐標(biāo)系進行控制和修飾。常用格式:

>>axis(‘equal’)

得到一個方正的坐標(biāo)系

>>axis(‘square’)

得到相同比例的坐標(biāo)系

>>axis([x1,x2,y1,y2])

指定x坐標(biāo)軸和y坐標(biāo)軸的范圍gtext(‘字符串’)·figure

創(chuàng)造新的圖形窗口?!old

用于進行圖形保持。想在已經(jīng)存在的圖形上添加曲線時,需用hold函數(shù)。調(diào)用格式與grid類似?!ubplot(mnp)

用于在指定位置建立坐標(biāo),可實現(xiàn)在一個圖形窗口內(nèi)繪制多個坐標(biāo)系。subplot(mnp)表示將屏幕分割成m×n個區(qū)域(m和n均小于4),p代表當(dāng)前繪圖區(qū)域的序號,序號以從左到右,從上到下的順序編號。·figure例2-13單窗口多曲線子圖繪制。輸入以下MATLAB語句MATLAB程序如下:x=pi*(0:0.05:2);y1=sin(2*x);y2=cos(2*x);y3=y1+y2;y4=y1-y2;subplot(221);plot(x,y1,'o');xlabel('(a)');grid;subplot(222);plot(x,y2,'*');xlabel('(b)');grid;subplot(223);plot(x,y3,'-.');xlabel('(c)');grid;subplot(224);plot(x,y4);xlabel('(d)');grid;例2-13單窗口多曲線子圖繪制。輸入以下MATLAB語句M運行程序,得到結(jié)果:運行程序,得到結(jié)果:除了plot函數(shù)外,MATLAB中還設(shè)置了一些其它的二維繪圖函數(shù),以繪制一些特定的圖形。(3)其它二維繪圖函數(shù)下表給出了幾個常用函數(shù)除了plot函數(shù)外,MATLAB中還設(shè)置了一些其它的二維繪圖二維繪圖函數(shù)

二維繪圖函數(shù)例2-14繪制極坐標(biāo)曲線。輸入以下MATLAB語句t=0:0.01:2*pi;r=sin(2*t).*cos(2*t);polar(t,r,'r')MATLAB程序如下:例2-14繪制極坐標(biāo)曲線。輸入以下MATLAB語句t=0:運行程序,得到結(jié)果:運行程序,得到結(jié)果:2.三維圖形MATLAB提供了各種各樣的命令用于繪制三維圖形。這里主要討論三維繪圖的基本方法和基本命令。繪制三維曲線圖的基本命令是plot3

繪制三維曲面網(wǎng)線圖的命令是mesh

曲面繪圖函數(shù)是surf

2.三維圖形繪制三維曲線圖的基本命令是plot3plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’,x3,y3,z3,‘s3’,…)用于三維多曲線繪圖,其中xn,yn,zn是向量或矩陣,sn是可選的字符串,用來指定顏色和線形。mesh(X,Y,Z)

根據(jù)矩陣X,Y和Z繪制彩色的空間三維網(wǎng)線圖。X,Y和Z中對應(yīng)的元素映射為三維空間上的點,點與點之間用線段連接。其中網(wǎng)線的顏色隨著網(wǎng)點高度的改變而改變。曲面繪圖函數(shù)surf的調(diào)用格式與mesh完全一樣plot3(x1,y1,z1,’s1’,x2,y2,z2,’例2-15作三維柱面螺旋線。輸入以下MATLAB語句t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);xlabel('sin(t)')ylabel('cos(t)')zlabel('t')gridMATLAB程序如下:例2-15作三維柱面螺旋線。輸入以下MATLAB語句t=運行程序,得到結(jié)果:運行程序,得到結(jié)果:例2-16闊邊帽三維網(wǎng)線圖。輸入以下MATLAB語句x=-8:0.5:8;y=x;[X,Y]=meshgrid(x,y);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;mesh(X,Y,Z)MATLAB程序如下:例2-16闊邊帽三維網(wǎng)線圖。輸入以下MATLAB語句x=-運行程序,得到結(jié)果:運行程序,得到結(jié)果:例2-17繪制三維陀螺椎面。輸入以下MATLAB語句t1=0:0.1:0.9;t2=1:0.1:2;r=[t1,-t2+2];[X,Y,Z]=cylinder(r,30);surf(X,Y,Z);colormap(jet)grid;MATLAB程序如下:例2-17繪制三維陀螺椎面。輸入以下MATLAB語句t1=運行程序,得到結(jié)果:運行程序,得到結(jié)果:2.1.4MATLAB循環(huán)與轉(zhuǎn)移控制大部分的求解問題都要受到一定條件的控制,和其它高級語言一樣,MATLAB也提供了一些常用的控制語句.從而使得MATLAB語言的編程顯得十分靈活。MATTAB支持的控制語句和C語言中的控制語句結(jié)構(gòu)很相似,有循環(huán)控制語句和條件轉(zhuǎn)移控制語句。2.1.4MATLAB循環(huán)與轉(zhuǎn)移控制大部分的求解問題都要1.條件控制語句(1)if語句if語句是MATLAB提供的最基本的條件轉(zhuǎn)移語句,它用于根據(jù)一定的邏輯條件執(zhí)行相應(yīng)的一組語句。

格式ifexpressionstatementsendifexpression1statements1elseifexpression2statements2elseifexpression3statements3elsestatements4end1.條件控制語句(1)if語句if語句是MATLAB提供的最例2-18根據(jù)一個整數(shù)的符號和奇偶性,分成三種情況作不同的處理。ifn<0

%如果n是負(fù)數(shù),顯示錯誤信息

disp(‘Inputmustbepositive’);

elseifrem(n,2)==0

%如果n是正偶數(shù),則除以2

A=n/2else

%如果n為正奇數(shù),則加1再除以2

A=(n+1)/2

end例2-18根據(jù)一個整數(shù)的符號和奇偶性,分成三種情況作不同switch語句是MATLAB特別讓熟悉C等高級語言的用戶方便地編寫程序而專門添加的。其調(diào)用格式為:(2)switch語句switchexpressioncasevalue1statements1casevalue2statements2 …otherwisestatementsend其中expression的值可以是標(biāo)量和字符串。switch語句是MATLAB特別讓熟悉C等高級語言的用戶方trystatement,…statement,catch,statements…statementsend(3)try和tatch語句try和catch語句為試探式語句,其調(diào)用格式為:

這種語句結(jié)構(gòu)先試探執(zhí)行try和catch之間的語句,如果在執(zhí)行的過程中遇到錯誤,則把錯誤信息賦值給lasterr變量,并放棄執(zhí)行這一段語句,轉(zhuǎn)而執(zhí)行catch和end之間的語句。try(3)try和tatch語句try和catch語句為試2.循環(huán)控制語句(1)for語句如果要反復(fù)執(zhí)行的一組語句的循環(huán)次數(shù)是已知或預(yù)定義的,就可以使用for循環(huán)語句。它的基本格式為:fori=is:id:ie;

statementsend其中:

is是循環(huán)變量的初值;

id是循環(huán)變量的增量;

ie是循環(huán)變量的終值。

2.循環(huán)控制語句(1)for語句如果要反復(fù)執(zhí)行的一組語句的循例2-19輸入以下MATLAB語句a=zeros(1,10);n=10;fori=1:na(i)=iend運行程序,得到結(jié)果:a=12345678910例2-19輸入以下MATLAB語句a=zeros(1,1for語句可以嵌套使用,例如:m=10;n=5;fori=1:mforj=1:nF(i,j)=1/(i+j-1);endendF運行程序,得到結(jié)果:F=1.00000.50000.33330.25000.20000.50000.33330.25000.20000.16670.33330.25000.20000.16670.14290.25000.20000.16670.14290.12500.20000.16670.14290.12500.11110.16670.14290.12500.11110.10000.14290.12500.11110.10000.09090.12500.11110.10000.09090.08330.11110.10000.09090.08330.07690.10000.09090.08330.07690.0714for語句可以嵌套使用,例如:m=10;n=5;運行程序,得值得注意的是:每一個for必須與end配對使用。for命令輸入后,MATLAB將繼續(xù)等待循環(huán)體的輸入,直至遇到end結(jié)束循環(huán)體時,才開始執(zhí)行for語句。值得注意的是:(2)while語句while循環(huán)控制語句的作用是在一定的邏輯條件控制下,不斷地循環(huán)執(zhí)行一條或一組語句,直到邏輯條件不再滿足時為止。它的基本格式為:

whileexpressionstatementsend(2)while語句while循環(huán)控制語句的作用是在一定例2-20找出使階乘n!小于10的100次方的最小整數(shù)nn=1whileprod(1:n)<1e100n=n+1endnMATLAB程序如下:運行程序,得到結(jié)果:n=70其中,prod(1:n)是計算向量1:n各元素之積。當(dāng)然.MATLAB提供的循環(huán)結(jié)構(gòu)for和while是允許多級嵌套的,而且它們之間也允許相互嵌套,這和C語言等高級程序設(shè)計語言是一致的。例2-20找出使階乘n!小于10的100次方的最小整數(shù)n在程序設(shè)計中,經(jīng)常會碰到提前終止循環(huán)的操作。MATLAB中終止循環(huán)的命令有continue和break,它們的功能分別是:·continue命令continue命令的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面還未執(zhí)行的語句,直接進行下一次循環(huán)?!reak命令使用break命令,可以在條件成立的情況下終止循環(huán)(從循環(huán)體跳出),接著執(zhí)行循環(huán)外面的語句。(3)循環(huán)終止語句在程序設(shè)計中,經(jīng)常會碰到提前終止循環(huán)的操作。MATLAB中終第2章MATLAB與Simulink簡介第2章MATLAB與Simulink簡介2.1MATLAB的基礎(chǔ)知識2.1.1MATLAB語言系統(tǒng)1.MATLAB簡介MATLAB(MATrixLABoratory,即矩陣實驗室)是美國的CleveMoler教授利用自己研制的基于特征值計算和線性代數(shù)軟件包開發(fā)的一種高級語言。

1990年推出的MATLAB3.5i是第一個可以運行于MicrosoftWindows下的版本,它可以在兩個窗口上分別顯示命令行計算結(jié)果和圖形結(jié)果。稍后推出的SimuLAB環(huán)境首次引入基于框圖的仿真功能,該環(huán)境就是我們現(xiàn)在所知的Simulink,其模型輸入的方式使得一個復(fù)雜的控制系統(tǒng)的數(shù)字仿真問題變得十分直觀而且相當(dāng)容易。

2.1MATLAB的基礎(chǔ)知識2.1.1MATLAB語經(jīng)過多年來版本的不斷更新,新版本的MATLAB功能已經(jīng)十分強大,其應(yīng)用領(lǐng)域日益廣泛,速度更快,數(shù)值性能更好;用戶圖形界面設(shè)計更趨合理;與C語言接口及轉(zhuǎn)換的兼容性更強;新的虛擬現(xiàn)實工具箱更給仿真結(jié)果三維視景下顯示帶來了新的解決方案。經(jīng)過多年來版本的不斷更新,新版本的MATLAB功能已經(jīng)十分強MATLAB具有以下主要特點:(1)超強的數(shù)值運算功能。(2)語法限制不嚴(yán)格,程序設(shè)計自由度大。(3)程序的可移植性很好。

(4)強大的數(shù)據(jù)可視化功能。

(5)豐富的工具箱。

MATLAB具有以下主要特點:(1)超強的數(shù)值運算功能。(22.MATLAB工作環(huán)境2.MATLAB工作環(huán)境圖形窗口“Figure”

圖形窗口“Figure”M文件窗口

M文件窗口3.MATLAB的M文件所謂M文件,就是用戶把要實現(xiàn)的命令寫在一個以.m為擴展名的文件中M文件有兩種格式(統(tǒng)稱為M文件)函數(shù)式M文件程序式M文件程序式M文件用于把很多需要在命令窗口輸入的命令放在一起,就是命令的簡單疊加函數(shù)式M文件用于把重復(fù)的程序段封裝成函數(shù)供用戶調(diào)用。3.MATLAB的M文件所謂M文件,就是用戶把要實現(xiàn)的命令寫(1)程序式M文件(1)程序式M文件運行程序,得到結(jié)果:運行程序,得到結(jié)果:(2)函數(shù)式M文件函數(shù)式M文件首行總是以關(guān)鍵字“function”開頭,并在首行中列出全部輸入、輸出參數(shù)以及函數(shù)名。函數(shù)名應(yīng)置于等號右側(cè)并與對應(yīng)的M文件名相同,輸出參數(shù)緊跟在“function”之后,常用中括號括起來(若僅有一個輸出參數(shù)則無需中括號);輸入?yún)?shù)緊跟在函數(shù)名之后,常用小括號括起來。如果函數(shù)有多個輸入或輸出參數(shù),則多個參數(shù)之間用英文狀態(tài)下的逗號加以分隔。(2)函數(shù)式M文件函數(shù)式M文件首行總是以關(guān)鍵字“functic=5運行程序,得到結(jié)果:c=運行程序,4.MATLAB的幫助系統(tǒng)MATLAB具有完善的幫助系統(tǒng),幫助內(nèi)容豐富,獲取幫助的形式多樣。幫助系統(tǒng)包括:命令行幫助聯(lián)機幫助演示幫助充分利用幫助系統(tǒng),可以更快更準(zhǔn)確地掌握MATLAB的使用方法。

4.MATLAB的幫助系統(tǒng)MATLAB具有完善的幫助系統(tǒng),命令行幫助命令行幫助help工具箱或命令名

help工具箱或命令名聯(lián)機幫助聯(lián)機幫助演示幫助演示幫助2.1.2MATLAB的基本運算1.MATLAB的基本語句結(jié)構(gòu)(1)變量變量命名的規(guī)則為:1)變量的名稱必須以字母開頭,其后可以為字母、數(shù)字或者下劃線。2)變量名長度不超過63個字符,超過的部分將會被忽略。3)變量名區(qū)分字母的大小寫;2.1.2MATLAB的基本運算1.MATLAB的基本語MATLAB中還設(shè)置了如下一些特殊變量:MATLAB中還設(shè)置了如下一些特殊變量:

MATAB語言的賦值語句有兩種:

·變量名=運算表達式·[返回變量列表]=函數(shù)名(輸入變量列表)例如

>>T=0:pi/50:2*pi;>>[m,p]=bode(a,b,c,d,w)(2)賦值語句例如(2)賦值語句說明等號右邊的表達式可以由分號結(jié)束,也可以由逗號或換行號結(jié)束,但它們的含義是不同的。如果用分號結(jié)束,則左邊的變量結(jié)果將不在屏幕上顯示出來;由逗號或換行號結(jié)束,則將把左邊的返回值內(nèi)容全部顯示出來。

在調(diào)用函數(shù)時,MATLAB允許一次返回多個結(jié)果,當(dāng)函數(shù)的輸出參數(shù)不只一個時,用中括號“[]”把輸出參數(shù)括起來,參數(shù)之間用逗號分開;輸入變量用小括號“()”括起來,當(dāng)個數(shù)不只一個時,用逗號分開。

說明在調(diào)用函數(shù)時,MATLAB允許一次返回多個結(jié)果,在MATLAB中,冒號“:”是很有用的算子,經(jīng)常用它來生成向量。語句>>a=i:k:j;它生成一個從i到j(luò)步長為k的行向量a。如果增量為負(fù)值,可以得一個遞減順序的向量,增量為l時可以忽略。MATLAB用通常的十進制數(shù)表示常數(shù)、小數(shù)和負(fù)數(shù)。與通常的數(shù)學(xué)表示一樣,還可以使用以10為冪的常數(shù)以及虛數(shù),MATLAB接受各種合法的數(shù)據(jù)輸入。

(3)數(shù)據(jù)的輸入輸出格式在MATLAB中,冒號“:”是很有用的算子,經(jīng)常用它來生成向(4)常用操作命令(4)常用操作命令2.MATLAB的基本運算加(+)、減(-)、乘(*)、除(/)、冪(^)等運算操作

MATLAB還提供幾乎所有的運算函數(shù)

初等運算函數(shù)

2.MATLAB的基本運算加(+)、減(-)、乘(*)、除三角函數(shù)

三角函數(shù)數(shù)據(jù)統(tǒng)計分析函數(shù)

數(shù)據(jù)統(tǒng)計分析函數(shù)例2-1某二階欠阻尼系統(tǒng)的單位階躍響應(yīng)為試?yán)L制響應(yīng)曲線。MATLAB程序如下:t=0:0.1:15;c=1-1.15*exp(-0.5*t).*sin(0.866*t+pi/3);plot(t,c);grid;

%繪制曲線由max函數(shù)可求出響應(yīng)的最大值(峰值)

MATLAB程序如下:

mp=max(c)

運行程序,得到結(jié)果:mp=1.1623例2-1某二階欠阻尼系統(tǒng)的單位階躍響應(yīng)為試?yán)L制響應(yīng)曲線。M運行程序,得到結(jié)果:運行程序,得到結(jié)果:3.矩陣運算MATLAB中所有的計算都是以矩陣為基本單元進行的,MATLAB對矩陣的運算功能最齊全,也最強大。(1)矩陣輸入矩陣輸入時一行中各元素間用逗號“,”或空格,行間用分號“;”或直接回車,整個矩陣以括號“[”和“]”表示開始和結(jié)束。3.矩陣運算MATLAB中所有的計算都是以矩陣為基本單元進例2-2輸入以下MATLAB語句a=[123;456;789]b=[1,1+2i;2+3i,exp(-1)]

運行程序,得到結(jié)果:a=123456789b=1.00001.0000+2.0000i2.0000+3.0000i0.3679例2-2輸入以下MATLAB語句a=[123;45常用的初等矩陣

常用的初等矩陣(2)矩陣的常規(guī)運算注意矩陣的四則運算必須復(fù)合矩陣的維數(shù)要求,否則會給出矩陣維數(shù)錯誤提示。

(2)矩陣的常規(guī)運算注意矩陣的四則運算必須復(fù)合矩陣的維數(shù)要例2-3矩陣加法與乘法。輸入以下MATLAB語句a=[121;221;312];b=[331;321;143];c=a+bd=a*b運行程序,得到結(jié)果:c=452542455d=1011613147141910例2-3矩陣加法與乘法。輸入以下MATLAB語句a=[1例2-4矩陣的點運算。輸入以下MATLAB語句運行程序,得到結(jié)果:a=[121;221;312];b=[331;321;143];c=a.*bd=a.^b

c=361641346d=181841318例2-4矩陣的點運算。輸入以下MATLAB語句運行程序,得例2-5矩陣右除與左除。輸入以下MATLAB語句a=[121;221;212];b=[1;2;3];a/b

%矩陣右除運行程序,得到結(jié)果:???Errorusing==>mrdivideMatrixdimensionsmustagree.a\b

%矩陣左除重新輸入語句ans=1.0000-0.33330.6667a=[121;221;212];b=[1;2;3];a/b

%矩陣右除運行程序,得到結(jié)果:例2-5矩陣右除與左除。輸入以下MATLAB語句a=[1例2-6矩陣轉(zhuǎn)置與逆矩陣。輸入以下MATLAB語句a=[010;001;-6-11-6];az=a‘a(chǎn)i=inv(a)運行程序,得到結(jié)果:az=00-610-1101-6ai=-1.8333-1.0000-0.16671.00000001.00000例2-6矩陣轉(zhuǎn)置與逆矩陣。輸入以下MATLAB語句a=[0(3)矩陣特征值運算(3)矩陣特征值運算例2-7分別計算矩陣a的有關(guān)特征參數(shù)。輸入以下MATLAB語句a=[123;456;780][cond(a),norm(a),rank(a)]

運行程序,得到結(jié)果:ans=35.105913.20153.0000例2-7分別計算矩陣a的有關(guān)特征參數(shù)。輸入以下MATLAB4.關(guān)系運算和邏輯運算MATLAB的關(guān)系運算符

說明

a和b可以都是矩陣或數(shù)組,它們的大小完全相同。對于關(guān)系和邏輯表達式的輸出來說,1表示“真”,而0則表示“假”。關(guān)系操作是對矩陣或數(shù)組各自相對應(yīng)的元素進行比較,返回的結(jié)果與兩相比較的矩陣或數(shù)組的大小相同的0、1陣。4.關(guān)系運算和邏輯運算MATLAB的關(guān)系運算符說明a和例2-8比較矩陣的大小。輸入以下MATLAB語句a=[1612;3327];b=[234;678];c=gt(a,b)運行程序,得到結(jié)果:c=011010說明對于復(fù)數(shù)運算,“==”與“~=”運算,既比較實部,又比較虛部。而其他運算僅比較實部。關(guān)系運算同樣也可用于常量與矩陣的比較,在這種情況下,該常量與矩陣的每一個元素進行比較,其結(jié)果是一個與矩陣同維數(shù)的0、1矩陣。例2-8比較矩陣的大小。輸入以下MATLAB語句a=[1

邏輯操作符

邏輯操作符例2-9矩陣的邏輯與、或、非運算。輸入以下MATLAB語句x=[01;10];y=[00;10];x&yx|ynot(x)運行程序,得到結(jié)果:ans=0010ans=0110ans=1001例2-9矩陣的邏輯與、或、非運算。輸入以下MATLAB語句5.多項式運算5.多項式運算例2-10輸入以下MATLAB語句p=[10-2-4];%輸入多項式r=roots(p)%求多項式P(x)=-2x–4的根運行程序,得到結(jié)果:r=2.0000-1.0000+1.0000i-1.0000-1.0000i例2-10輸入以下MATLAB語句p=[10-2-4例2-11輸入以下MATLAB語句a=[1.2350.9;51.756;3901;1234];%輸入矩陣poly(a)%求矩陣a的特征多項式polyval(ans,20)%求特征多項式中未知數(shù)為20時的值

運行程序,得到結(jié)果:ans=1.0000-6.9000-77.2600-86.1300604.5500ans=7.2778e+004說明矩陣a的特征多項式為

當(dāng)x=20時,多項式的值為72778。例2-11輸入以下MATLAB語句a=[1.2350例2-12已知控制系統(tǒng)的開環(huán)傳遞函數(shù)為求系統(tǒng)的閉環(huán)特征方程并計算系統(tǒng)的閉環(huán)特征根。p0=conv([1,2],[1,3])+conv([1,0],[1,1])%求特征方程p0=266>>p1=rref(p0)%行系數(shù)化簡p1=133>>r=roots(p1)%求特征根r=-1.5000+0.8660i-1.5000-0.8660i輸入語句說明系統(tǒng)閉環(huán)特征方程特征根-1.5000+0.8660i,-1.5000-0.8660i例2-12已知控制系統(tǒng)的開環(huán)傳遞函數(shù)為求系統(tǒng)的閉環(huán)特征方程2.1.3MATLAB的繪圖強大的圖形功能是MATLAB受到人們廣泛歡迎的一個重要原因。MATLAB軟件提供了豐富的用于繪制圖形、標(biāo)注圖形以及輸出圖形的基本命令。常用的有

二維圖形三維圖形2.1.3MATLAB的繪圖強大的圖形功能是MATLAB1.二維圖形(1)曲線繪圖函數(shù)格式:plot(x)plot(x1,y1,x2,y2…)plot(x1,y1,’plotstyle’…)

1.二維圖形(1)曲線繪圖函數(shù)格式:plot(x)plot函數(shù)是MATLAB中繪制基本二維曲線圖形的函數(shù),它的基本功能是打開一個新的圖形窗口繪制曲線。

若已經(jīng)存在一個圖形窗口,則自動將該窗口的原內(nèi)容清除,然后再繪制新的圖形。

·plot(x1,y1,x2,y2…)

繪制以(x1,y1),(x2,y2)…確定的多條曲線?!lot(x1,y1,’plotstyle’…)

繪制由字符串“plotstyle”定義的顏色、線型的多條曲線。其中“plotstyle”選項的部分表示如表2-4所示。plot函數(shù)是MATLAB中繪制基本二維曲線圖形的函數(shù),它的MATLAB繪圖命令選項

MATLAB繪圖命令選項·title(‘字符串’)用于給圖形添加標(biāo)題,將字符串添加在圖形上方的中部?!label(‘字符串’)用于對圖形的x軸進行說明,將字符串添加在圖形x軸下方?!label(‘字符串’)用于對圖形的y軸進行說明,將字符串添加在圖形y軸左方。

·text(x,y,‘字符串’)用于在圖形指定位置(x,y)添加字符串對圖形進行說明?!ぃ?)繪圖輔助函數(shù)(2)繪圖輔助函數(shù)gtext(‘字符串’)與text功能類似,只是在執(zhí)行命令后會在圖形中出現(xiàn)一個十字線,可用鼠標(biāo)來指定添加字符串的位置。

·grid

用于給圖形添加?xùn)鸥?,?種格式:

>>gridon;

給圖形添加?xùn)鸥?/p>

>>gridoff;

去除柵格

>>grid;

在添加?xùn)鸥窈腿コ龞鸥駜煞N狀態(tài)中切換·axis()

用于對繪圖坐標(biāo)系進行控制和修飾。常用格式:

>>axis(‘equal’)

得到一個方正的坐標(biāo)系

>>axis(‘square’)

得到相同比例的坐標(biāo)系

>>axis([x1,x2,y1,y2])

指定x坐標(biāo)軸和y坐標(biāo)軸的范圍gtext(‘字符串’)·figure

創(chuàng)造新的圖形窗口?!old

用于進行圖形保持。想在已經(jīng)存在的圖形上添加曲線時,需用hold函數(shù)。調(diào)用格式與grid類似?!ubplot(mnp)

用于在指定位置建立坐標(biāo),可實現(xiàn)在一個圖形窗口內(nèi)繪制多個坐標(biāo)系。subplot(mnp)表示將屏幕分割成m×n個區(qū)域(m和n均小于4),p代表當(dāng)前繪圖區(qū)域的序號,序號以從左到右,從上到下的順序編號。·figure例2-13單窗口多曲線子圖繪制。輸入以下MATLAB語句MATLAB程序如下:x=pi*(0:0.05:2);y1=sin(2*x);y2=cos(2*x);y3=y1+y2;y4=y1-y2;subplot(221);plot(x,y1,'o');xlabel('(a)');grid;subplot(222);plot(x,y2,'*');xlabel('(b)');grid;subplot(223);plot(x,y3,'-.');xlabel('(c)');grid;subplot(224);plot(x,y4);xlabel('(d)');grid;例2-13單窗口多曲線子圖繪制。輸入以下MATLAB語句M運行程序,得到結(jié)果:運行程序,得到結(jié)果:除了plot函數(shù)外,MATLAB中還設(shè)置了一些其它的二維繪圖函數(shù),以繪制一些特定的圖形。(3)其它二維繪圖函數(shù)下表給出了幾個常用函數(shù)除了plot函數(shù)外,MATLAB中還設(shè)置了一些其它的二維繪圖二維繪圖函數(shù)

二維繪圖函數(shù)例2-14繪制極坐標(biāo)曲線。輸入以下MATLAB語句t=0:0.01:2*pi;r=sin(2*t).*cos(2*t);polar(t,r,'r')MATLAB程序如下:例2-14繪制極坐標(biāo)曲線。輸入以下MATLAB語句t=0:運行程序,得到結(jié)果:運行程序,得到結(jié)果:2.三維圖形MATLAB提供了各種各樣的命令用于繪制三維圖形。這里主要討論三維繪圖的基本方法和基本命令。繪制三維曲線圖的基本命令是plot3

繪制三維曲面網(wǎng)線圖的命令是mesh

曲面繪圖函數(shù)是surf

2.三維圖形繪制三維曲線圖的基本命令是plot3plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’,x3,y3,z3,‘s3’,…)用于三維多曲線繪圖,其中xn,yn,zn是向量或矩陣,sn是可選的字符串,用來指定顏色和線形。mesh(X,Y,Z)

根據(jù)矩陣X,Y和Z繪制彩色的空間三維網(wǎng)線圖。X,Y和Z中對應(yīng)的元素映射為三維空間上的點,點與點之間用線段連接。其中網(wǎng)線的顏色隨著網(wǎng)點高度的改變而改變。曲面繪圖函數(shù)surf的調(diào)用格式與mesh完全一樣plot3(x1,y1,z1,’s1’,x2,y2,z2,’例2-15作三維柱面螺旋線。輸入以下MATLAB語句t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);xlabel('sin(t)')ylabel('cos(t)')zlabel('t')gridMATLAB程序如下:例2-15作三維柱面螺旋線。輸入以下MATLAB語句t=運行程序,得到結(jié)果:運行程序,得到結(jié)果:例2-16闊邊帽三維網(wǎng)線圖。輸入以下MATLAB語句x=-8:0.5:8;y=x;[X,Y]=meshgrid(x,y);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;mesh(X,Y,Z)MATLAB程序如下:例2-16闊邊帽三維網(wǎng)線圖。輸入以下MATLAB語句x=-運行程序,得到結(jié)果:運行程序,得到結(jié)果:例2-17繪制三維陀螺椎面。輸入以下MATLAB語句t1=0:0.1:0.9;t2=1:0.1:2;r=[t1,-t2+2];[X,Y,Z]=cylinder(r,30);surf(X,Y,Z);colormap(jet)grid;MATLAB程序如下:例2-17繪制三維陀螺椎面。輸入以下MATLAB語句t1=運行程序,得到結(jié)果:運行程序,得到結(jié)果:2.1.4MATLAB循環(huán)與轉(zhuǎn)移控制大部分的求解問題都要受到一定條件的控制,和其它高級語言一樣,MATLAB也提供了一些常用的控制語句.從而使得MATLAB語言的編程顯得十分靈活。MATTAB支持的控制語句和C語言中的控制語句結(jié)構(gòu)很相似,有循環(huán)控制語句和條件轉(zhuǎn)移控制語句。2.1.4MATLAB循環(huán)與轉(zhuǎn)移控制大部分的求解問題都要1.條件控制語句(1)if語句if語句是MATLAB提供的最基本的條件轉(zhuǎn)移語句,它用于根據(jù)一定的邏輯條件執(zhí)行相應(yīng)的一組語句。

格式ifexpressionstatementsendifexpression1statements1elseifexpression2statements2elseifexpression3statements3elsestatements4end1.條件控制語句(1)if語句if語句是MATLAB提供的最例2-18根據(jù)一個整數(shù)的符號和奇偶性,分成三種情況作不同的處理。ifn<0

%如果n是負(fù)數(shù),顯示錯誤信息

disp(‘Inputmustbe

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論