官术网_书友最值得收藏!

1.2 拓展知識

1.2.1 MATLAB語言簡介

MATLAB已經成為國際上流行的控制系統計算機輔助設計軟件,可以進行高級數學分析與運算,用作動態系統的建模與仿真。MATLAB是以復數矩陣作為基本編程單元的一種程序設計語言,它提供了各種矩陣運算與操作,并具有強大的繪圖功能,如控制系統、信號處理、最優控制、強健性控制及模糊控制工具箱等。

本節主要介紹MATLAB常用的命令、控制系統工具箱及SIMULINK仿真工具軟件。在控制科學的發展進程中,控制系統的計算機輔助設計對于控制理論的研究和應用一直起著很重要的作用。

1.2.2 MATLAB的數值運算基礎

1.常量

MATLAB中使用的常量有實數常量與復數常量兩類。在MATLAB中,虛數單位j或i=sqrt(-1),在工作空間顯示為

復數常量的生成可以利用如下語句:

Z=a+bj  或  z=r*exp(θ*j)

式中:r是復數的模,θ是復數幅角的弧度數。

2.變量

MATLAB里的變量無須事先定義。一個程序中的變量,以其名稱在語句命令中第一次合法出現定義。請注意MATLAB變量名稱的命名不是任意的,其命名規則如下:

①變量名可以由英語字母、數字和下畫線組成。

②變量名應以英文開頭。

③組成變量名的字符長度不大于31個。

④MATLAB區分英文字母大小寫。

MATLAB的部分特殊變量與常量:

ans  默認變量名以應答最近一次操作運算結果

i,j  虛數單位,定義為

pi  圓周率

eps  浮點數的相對誤差

realmax  最大的正實數

realmin  最小的正實數

MATLAB中還可以設置全局變量。只要在該變量前添加MATLAB的關鍵字“global”就可以將該變量設定為全局變量了。全局變量必須在使用前聲明,即這個聲明必須放在主程序的首行;而且作為一個慣用的規則,在MATLAB程序中盡量用大寫英語字母書寫全局變量。

3.運算符

MATLAB可完成基本代數運算操作+、-、*、\、/、^(平方)、標準三角函數、雙曲線函數、超越函數(log為自然對數,log10為以10為底的對數)及開平方等。MAT-LAB可進行多種矩陣運算。

矩陣的加、減、乘、除和乘方運算:

在矩陣A、B滿足維數條件時,可直接用下列指令進行:

矩陣加、減運算

C=A+B  C=A-B

矩陣乘、除運算

C=A*B  C=A/B

矩陣乘方

B=A^2  C=A^(-1)  D=A^(0.5)

MATLAB還可以完成其他的矩陣函數運算,例如求行列式(det)、矩陣求反(inv)、求矩陣特征值(eig)、求秩(rank)、求跡(trace)和模方(norm)等。強大的矩陣運算函數是MATLAB運算功能的核心。其他運算功能還有,求一個數的實部(real),求一個數的虛部(imag),求一個數的絕對值(abs)(復數的絕對值或幅值)和求共軛運算(conj)。如矩陣求反

1.2.3 矩陣及矩陣函數

MATLAB的基本元素是雙精度的復數矩陣。這不僅是它的一般表達方法,而且也包含了實數、復數與常數。它也間接地包含了多項式與傳遞函數。在MATLAB環境下,輸入一行矢量很簡單,只需要使用方括號,并且每個元素之間用空格或用逗號隔開即可。矩陣元素定位地址方式為

A(m,n)

其中,m為行號,n為列號。例如,A(3,4)表示第三行第四列元素;A(:,2)表示所有的第二列元素;A(1:2,1:3)表示從第一行到第二行和第一列到第三列的所有元素。

如果在原矩陣中一個不存在的地址位置設定一個數,則該矩陣自動擴展行列數,并在該位置上添加這個數,而在其他沒有指定的位置補0。

1.一維數組

用戶可以在MATLAB工作環境中鍵入命令,也可以由它定義的語言編寫一個或多個應用程序,MATLAB基本的賦值語句結構為

輸出結果:

2.多維數組

在MATLAB中輸入數組需要遵循以下基本規則:

①把數組元素列入括號[]中。

②每行內的元素間用逗號或空格分開。

③行與行之間用分號或回車隔開。

例如:輸入矩陣

矩陣的轉制用A'表示,例如:

ans是英文單詞answer的縮寫。在MATLAB中,冒號“:”是很有用的命令符。例如:

>>t=[0:0.1:10]

它將產生一個從0到10的行矢量,而且元素之間間隔為0.1。如果增量為負值,可以得到一個遞減的順序矢量。

矩陣的輸入需要逐行輸入,每個行矢量之間要用分號隔開或者回車。例如:

每個數據之間的空格數可以任意設定。

3.矩陣函數

多項式表示以降階排列含有多項式系數的矢量。利用求根(root)命令,可以求得多項式的根。例如,求2s3+3s2+4s+5=0的根可用下列命令:

求多項式(poly)命令的功能是由多項式的根求得一多項式。其結果是由多項式系數組成的行矢量。其命令如下:

如果poly的命令輸入參數為矩陣,則可得到那個矩陣的特征多項式(行矢量)特征多項式是A=det(λI-A)。

1.2.4 MATLAB的繪圖功能

MATLAB具有較強的繪圖功能,只需鍵入簡單的命令,就可繪制出用戶所需要的圖形。下面介紹幾種常用的繪圖命令。

1.plot命令

plot(x,y)命令是繪制y對應x的軌跡的命令。y與x均為矢量,且具有相同的元素數量。如果其中有一個參數為矩陣,則另一個矢量參數分別對應該矩陣的行或者列的元素可繪制出一簇曲線(究竟是對應行還是列繪制函數曲線,取決于哪個參數排在前面)。如果兩個參數都是矩陣,則x的列對應y的列繪制出一簇曲線。

如果y是復數矢量,那么plot(y)將繪制該參數虛部與實部對應的曲線。該命令的這個特點在繪制奈魁斯特圖時是很有用的。

在MATLAB中通過函數Polyval(p,v)可以求得多項式在給定點的值,該函數的調用格式為

Polyval(p,v)

例1-1 畫出在t=0:0.1:10范圍內的正弦曲線。

應用如下命令:

>>t=0:0.1:10;

>>y=sin(t);

>>plot(t,y)

運行結果如圖1-10所示。

圖1-10 例1-1的圖

如果在同一坐標內繪制多條曲線(對應某一坐標軸,具有相同的取值點),可以由數據組成一個矩陣來同時繪制多條曲線。如下例共有三套數據,要求在同一坐標軸內同時繪制三條曲線。其命令格式如下:

plot(t,[x1 x2 x3])

如果多重曲線對應不同的矢量繪制,可使用如下命令格式:

plot(t1,x1,t2,x2,t3,x3)

式中表示x1對應t1,x2對應t2,等等。在這種情況下,t1、t2和t3可以具有不同的元素數量,但要求x1、x2和x3必須分別與t1、t2和t3具有相同的元素數量。

2.semilogx和semilogy命令

命令semilogx繪制半對數坐標圖形,x軸取以10為底的對數,y軸為線性坐標。

命令semilogy繪制半對數坐標圖形,y軸取以10為底的對數,x軸為線性坐標。

例1-2 如圖1-11所示,代碼如下:

>>w=logspace(-1,3,100);

>>y=log10(x);

>>semilogx(x,y)

運行結果如圖1-11所示。

圖1-11 例1-2的圖

3.其他常用命令

subplot命令使得在一個屏幕上可以分開顯示n個不同坐標,且可分別在每一個坐標中繪制曲線。其命令格式如下:

subplot(r,c,p)

該命令將屏幕分成r×c個窗口,而p表示在第幾個窗口。例如:subplot(2,1,2),將屏幕分成兩個窗口。subplot(2,1,1)與subplot(2,1,2)命令常用于控制系統伯德圖(Bode)的繪制。窗口的排號是從左到右,自上而下。

執行如下命令可以在圖中加入題目、標號、說明和分格線等。這些命令有title、xlabel、ylabel、gtext和text等。其命令格式如下:

title'(MyTitle'),xlabel('My X-axis Label')

ylabel('My X-axis Label')

gtext('Text for annotation')

text(x,y,'Text for annotation').grid

gtext命令是使用鼠標定位的文字注釋命令。當你輸入命令后,可以在屏幕上得到一個光標,然后使用鼠標控制它的位置。單擊即可確定文字設定的位置。該命令使用起來非常方便。

shg和clg是顯示與清除顯示屏圖形的命令。hold是圖形保持命令,可以把當前圖形保持在屏幕上不變,同時在這個坐標內繪制另外一個圖形。hold命令是一個交替轉換命令,即執行一次,轉變一個狀態(相當于ho ldon、hold off)。

MATLAB可以自動選擇坐標軸的定標尺度,也可以使用axis命令定義坐標軸的特殊定標尺度。其命令格式如下:

axis([x-min,x-max,y-min,y-max])

可設置坐標軸為特殊刻度。設置坐標軸以后,plot命令必須重新執行才能有效。axis命令的另一個作用是控制縱橫尺度的比例。例如,輸入axis('square')后,可得到一個顯示方框。此時再在該框內繪制一個圓形時(如plot(sin(x),cos(x)),在屏幕上可以看到一個標準的圓(一般情況下,由于屏幕的不規則原因,只能看到一個橢圓)。再次輸入axis('normal')命令,屏幕返回到一般狀態。

主站蜘蛛池模板: 唐海县| 泰顺县| 冀州市| 朝阳区| 霞浦县| 尼木县| 垦利县| 积石山| 荥阳市| 英超| 武平县| 府谷县| 黔西县| 济阳县| 武冈市| 女性| 徐汇区| 永靖县| 通州区| 中阳县| 齐齐哈尔市| 松潘县| 洪雅县| 扎囊县| 阆中市| 汝州市| 即墨市| 历史| 陇南市| 大新县| 鱼台县| 庐江县| 雅江县| 古田县| 绥滨县| 札达县| 永靖县| 枞阳县| 昆明市| 奉化市| 罗城|