- 現代控制理論(第2版)
- 王宏華主編
- 3552字
- 2018-12-29 09:49:43
1.5 MATLAB在系統數學模型變換中的應用
本節主要介紹基于MATLAB的線性定常系統(LTI)建模分析的常用命令函數。
1.5.1 系統的模型
1.傳遞函數模型
設單輸入單輸出(SISO)連續系統的傳遞函數為

在MATLAB中,可用傳遞函數分子、分母多項式按s的降冪系數排列的行向量,即
num=[b1,b2,…,bn-1,bn]
den=[a0,a1,…,an-1,an]
描述式(1-211)所示傳遞函數G(s)的多項式模型。而由命令函數tf()則可建立系統的傳遞函數模型TF,其調用格式為
sys=tf(num,den)
其中,num、den分別是傳遞函數分子、分母多項式系數行向量,且系數均按s的降冪排列。
【例1-24】 已知系統傳遞函數為

則可以利用程序MATLAB Program 1_1將上述系統模型表示出來,并將其建立在MATLAB的工作空間(Workspace)中。
%MATLABProgram1_1 num=[29]; %G(s)分子多項式按s的降冪系數排列的行向量 den=[1 3 2 4 6]; %G(s)分母多項式按s的降冪系數排列的行向量 G=tf(num,den) %建立傳遞函數模型,存放于G
執行MATLAB Program 1_1后得到
Transfer function: 2s+9 ----------------------- s∧4+3s∧3+2s∧2+4s+6
對SISO線性定常離散系統,其脈沖傳遞函數一般可表示為關于z的降冪多項式分式形式,即

在MATLAB中,對于式(1-212)所示離散系統,同樣可用tf()命令建立其脈沖傳遞函數模型,調用格式為
nu m=[cm,cm-1,…,c1,c0];
den=[an,an-1,…,a1,a0];
sys=tf(num,den,Ts)
其中,Ts為系統采樣周期。
另外,系統的傳遞函數還可表示成零極點形式,即

在MATLAB中,可用傳遞函數的零點向量、極點向量及增益,即

描述式(1-213)所示傳遞函數G(s)的零極點模型。而由命令函數zpk()則可建立零極點模型ZPK,其調用格式為
sys=zpk(z,p,k)
2.狀態空間模型
r維輸入、m維輸出的MIM O線性定常系統的狀態空間表達式為

式中,x,y、u分別為n×1、m×1、r×1維的列向量,A、B、C、D分別為n×n、n×r、m×n,m×r維的常數矩陣。
在MATLAB中,只要按照矩陣輸入方式建立式(1-214)系統相應的系數矩陣,即
A=[a11,a12,…,a1 n;a21,a22,…,a2 n;…;an 1,an 2,…,an n]
B=[b11,b12,…,b1 r;b21,b22,…,b2 r;…;bn 1,bn 2,…,bn r]
C=[c11,c12,…,c1 n;c21,c22,…,c2 n;…;cm 1,cm 2,…,cm n]
D=[d11,d12,…,d1r;d21,d22,…,d2r;…;dm 1,dm 2,…,dmr]
即可描述式(1-214)系統的狀態空間模型。而由命令函數ss()則可建立系統的狀態空間模型SS,其調用格式為
sys=ss(A,B,C,D)
對線性定常離散系統

在按常數矩陣輸入方式建立系數矩陣G,H,C,D后,同樣調用
sys=ss(G,H,C,D,Ts)
則可建立式(1-215)離散系統的狀態空間模型。其中,Ts為系統采樣周期。
3.組合系統模型
MATLAB提供了兩個子系統G1、G2并聯連接系統函數parallel()、串聯連接系統函數series()及反饋連接系統函數feedback(),由此可計算相應組合系統的模型,其調用格式分別為
sys=parallel(G1,G2)
sys=series(G1,G2)
sys=feedback(G1,G2)
其中,G1、G2為子系統1、子系統2已建立的模型,其可均為傳遞函數模型TF,也可均為狀態空間模型SS。
1.5.2 系統模型的轉換
1.狀態空間表達式向傳遞函數形式的轉換
MATLAB提供了模型轉換函數,可以完成系統數學模型的相互轉換,利用ss2tf()函數可由系統狀態空間表達式求其傳遞函數(陣)。對SISO系統,ss2tf()的調用格式為
[num,den]=ss2tf(A,B,C,D)
執行以上語句,可實現將描述為(A,B,C,D)的系統狀態空間模型中各系數矩陣轉換為傳遞函數模型中分子、分母多項式系數行向量num、den。對多輸入系統,ss2tf()的調用格式為
[num,den]=ss2tf(A,B,C,D,iu)
其中,iu用于指定變換所使用的輸入量,iu默認則為單輸入情況。
【例1-25】 已知系統狀態空間表達式為

試應用MATLAB求取系統的傳遞函數陣。
解 該系統為雙輸入單輸出系統,因此其傳遞函數陣G(s)為1×2維向量,即
其中,G1(s)、G2(s)分別為輸出量y與輸入量u1、u2之間的傳遞函數。利用ss2tf()函數可以進行指定輸入的狀態方程向傳遞函數的轉換。MATLAB Program 1_2為求解本題的程序。
G(s)=[G1(s)G2(s)]
%MATLABProgram 1_2 A=[2.25-5-1.25-0.5;2.25-4.25-1.25-0.25; 0.25-0.5-1.25-1;1.25-1.75-0.25-0.75]; B=[46;24;22;02]; C=[0202]; D=[00]; [num1,den1]=ss2tf(A,B,C,D,1) %指定第一輸入信號u1 所對應的轉換 G1=tf(num1,den1) [num2,den2]=ss2tf(A,B,C,D,2) %指定第二輸入信號u2 所對應的轉換 G2=tf(num2,den2)
程序MATLAB Program 1_2的運行結果為
num1= 0 4.0000 14.0000 22.0000 15.0000 den1= 1.0000 4.0000 6.2500 5.2500 2.2500 Transfer function: 4s∧3+14s∧2+22s+15 ----------------------------- s∧4+4s∧3+6.25s∧2+5.25s+2.25 num2= 0 12.0000 32.0000 37.0000 17.0000 den2= 1.0000 4.0000 6.2500 5.2500 2.2500 Transfer function: 12s∧3+32s∧2+37s+17 ----------------------------- s∧4+4s∧3+6.25s∧2+5.25s+2.25
由此得系統的傳遞函數陣為

與ss2tf()類似,應用MATLAB函數ss2zp()可由系統狀態空間表達式求其零極點模型的參數(z,p,k)。對SISO系統,ss2zp()的調用格式為
[z,p,k]=ss2zp(A,B,C,D)
而對多輸入系統,其調用格式為
[z,p,k]=ss2zp(A,B,C,D,iu)
2.傳遞函數到狀態空間表達式的變換
利用MATLAB函數tf2ss()、zp2ss()可分別由多項式形式、零極點形式的傳遞函數求其狀態空間模型中的各系數矩陣。其調用格式分別為
[A,B,C,D]=tf2ss(num,den)
[A,B,C,D]=zp2ss(z,p,k)
上面兩條語句分別由已知的(num,den)、(z,p,k)經模型轉換返回狀態空間表達式中各系數矩陣(A,B,C,D)。
【例1-26】 已知系統傳遞函數為

應用MATLAB的模型轉換函數求狀態空間模型的系數矩陣。
解 MATLAB Program 1_3為求解本題的程序。
%MATLABProgram1_3 num=[18,36]; den=[140.4391150]; [A,B,C,D]=tf2ss(num,den)
程序MATLAB Program 1_3的運行結果為
A= -40.4000-391.0000 -150.0000 1.0000 0 0 0 1.0000 0 B= 1 0 0 C= 0 18 36 D= 0
應該指出,函數ss()不僅可用于建立系統的狀態空間模型SS,而且可將任意LTI系統模型sys(傳遞函數模型TF、零極點模型ZPK)轉換為狀態空間模型SS,其調用格式為
SYS=ss(sys)
事實上,MATLAB中建立LTI系統3種模型的3個函數tf()、zpk()及ss()均可用類似的調用格式實現由一種模型到另一種模型的轉換。
1.5.3 系統的線性非奇異變換與標準型狀態空間表達式
1.系統的線性非奇異變換
MATLAB中函數ss2ss()可實現對系統的線性非奇異變換。其調用格式為
GT=ss2ss(G,T)
其中,G、GT分別為變換前、后系統的狀態空間模型,T為線性非奇異變換陣。或為
[At,Bt,Ct,Dt]=ss2 ss(A,B,C,D,T)
其中,(A,B,C,D)、(At,Bt,Ct,Dt)=(TAT-1,TB,CT-1,D)分別為變換前、后系統的狀態空間模型的系數陣,T為線性非奇異變換陣。
【例1-27】 已知系統狀態空間表達式的系數陣為
A=

B=

C=[0.5-0.4375 0.4375],D=0
試應用ss2ss()函數進行系統的線性非奇異變換。
解 變換陣T只要保證其非奇異即可,在此選擇單位反對角陣作為變換陣。MATLAB Program 1_4為求解本題的程序。
%MATLABProgram 1_4
A=[10-42;800;020];
B=[2;0;0];
C=[0.5 -0.4375 0.4375];
D=0;
G1=ss(A,B,C,D); %建立變換前原狀態空間模型G1
T=fliplr(eye(3)); %構造線性非奇異變換陣T為單位反對角陣
GT=ss2ss(G1,T) %獲得變換后狀態空間模型GT
程序MATLAB Program 1_4運行結果略。
MATLAB沒有提供將一般狀態空間表達式化為約當標準型的函數,但可先利用其計算約當標準型函數jordan()求出化約當標準型的變換陣,再利用函數ss2ss()得約當標準型。jordan()的調用格式為
[T,J]=jordan(A)
執行以上語句,可得到化A為約當標準型J的變換陣T,即J=T-1AT,T由A的線性獨立特征向量、廣義特征向量為列向量構成。
【例1-28】 應用MATLAB求解例1-11。
解 MATLAB Program 1_5為求解本題的程序。
%MATLABProgram 1_5 A=[010;001;230]; B=[0;0;1]; C=[100]; D=0; G=ss(A,B,C,D); %建立變換前狀態空間模型 [T,J]=jordan(A); %求化A為約當標準型的變換陣T及約當陣J GT=ss2ss(G,inv(T)) %狀態空間模型變換,變換陣為T-1
程序MATLAB Program 1_5運行結果略。
2.標準型狀態空間表達式的實現
MATLAB提供了標準型狀態空間表達式的實現函數canon(),以得到LTI系統模型sys的標準型狀態空間表達式的實現。其調用格式為
G1=canon(sys,type)
若LTI系統模型sys為對應狀態向量x的狀態空間模型,可應用函數canon()將其變換為在新的狀態向量下的標準型狀態空間表達式,其調用格式為
[G1,P]=canon(sys,type)
其中,sys為原系統狀態空間模型,P是返回的線性非奇異狀態變換陣,滿足=Px關系。或為
[At,Bt,Ct,Dt,P]=canon(A,B,C,D,type)T=[α β]
其中,(A,B,C,D)為對應x的原系統狀態空間模型的系數陣,(At,Bt,Ct,Dt)則為對應新狀態向量(仍滿足
=Px)的標準型狀態空間模型的系數陣。
以上函數canon()調用中的字符串type確定標準型類型。它可以是模態(modal)標準型,也可以是伴隨(companion)標準型形式。
當系統矩陣A可對角化但具有共軛復數特征值時,若仍用1.3.1節的方法化成對角標準型,計算特征向量將出現復數向量,且對角標準型及變換陣均為復數矩陣,給分析計算帶來困難,且復數的物理意義也不清晰,此時,可將系統矩陣化為模態(modal)標準型。設二階系統∑(A,B,C)具有共軛復數特征值λ1,2=σ±jω,則可用線性非奇異狀態變換將系統矩陣化為形如

的模態(modal)標準型。且可證明變換陣為
式中,列向量α、β分別是對應特征值λ1=σ+jω的復數特征向量α+jβ的實部、虛部。
【例1-29】 已知系統∑(A,B,C,D)的系數陣為
A=

B=

C=[1 2 5 2],D=0
將其變換為模態標準型或對角標準型,并給出變換陣。
解 應用狀態方程的規范實現函數canon()容易進行該變換,MATLAB Program 1_6為求解本題的程序。
%MATLABProgram 1_6 A=[5210;0460;0-3-50;0-3-6-1]; B=[1;2;3;4];C=[1252];D=0; sys=ss(A,B,C,D); [G,T]=canon(sys,′modal′)
程序MATLAB Program 1_6運行結果略。