- 計算機仿真技術與CAD
- 李國勇主編
- 2716字
- 2019-01-09 15:00:30
2.2 系統數學模型間的相互轉換
在系統仿真研究中,在一些場合下需要用到系統的一種模型,而在另一場合下可能又需要系統的另外一種模型,而這些模型之間又有某種內在的等效關系,所以了解由一種模型到另外一種模型的轉換方法也是很必要的。在MATLAB控制系統工具箱中提供了大量的控制系統模型相互轉換的函數,如表2-1所示。
表2-1 模型轉換函數

1.狀態空間表達式到傳遞函數的轉換
如果系統的狀態空間表達式為

式中,A:n ×n;B:n ×r;C:m ×n;D:m ×r
則系統的傳遞函數可表示為

式中,B0,B1,…,Bm均為m ×r實常數矩陣。
在MATLAB控制系統工具箱中,給出一個根據狀態空間表達式求取系統傳遞函數的函數ss2tf(),其調用格式為
[num,den] =ss2tf(A,B,C,D,iu).
其中,A,B,C和D為狀態空間形式的各系數矩陣;iu為輸入的代號,用來指定第幾個輸入。對于單變量系統iu=1,對多變量系統,不能用此函數一次求出對所有輸入信號的整個傳遞函數矩陣,而必須對各個輸入信號逐個地求取傳遞函數子矩陣,最后獲得整個的傳遞函數矩陣;返回結果den為傳遞函數分母多項式按s 降冪排列的系數;傳遞函數分子系數則包含在矩陣num中。num的行數與輸出y的維數一致,每行對應一個輸出。
【例2-6】 對于例2-5中給出的多變量系統,可以由下面的命令分別對各個輸入信號求取傳遞函數向量,然后求出這個傳遞函數矩陣。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>[num1,den1] =ss2tf(A,B,C,D,1),[num2,den2] =ss2tf(A,B,C,D,2)
結果顯示:

從而可求得系統的傳遞函數矩陣為

2.狀態空間形式到零極點形式的轉換
MATLAB函數ss2zp()的調用格式為
[Z,P,K] =ss2zp(A,B,C,D,iu)
其中,A,B,C,D為狀態空間形式的各系數矩陣;iu為輸入的代號。對于單變量系統iu=1,對于多變量系統iu表示要求的輸入序號;返回量列矩陣P儲存傳遞函數的極點;而零點儲存在矩陣Z中,Z的列數等于輸出y的維數,每列對應一個輸出;對應增益則在列向量K中。
【例2-7】 對于例2-5中給出的狀態空間表達式,試根據以上函數求取系統的傳遞函數矩陣。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>[Z1,P1,K1] =ss2zp(A,B,C,D,1),[Z2,P2,K2] =ss2zp(A,B,C,D,2)
結果顯示:

從而可求得系統的傳遞函數矩陣為

3.傳遞函數到狀態空間表達式的轉換
已知系統的傳遞函數模型,求取系統狀態空間表達式的過程稱為系統的實現。由于狀態變量可以任意選取,所以實現的方法并不是唯一的。這里只介紹一種比較常用的實現方法。
對于單輸入多輸出系統

適當地選擇系統的狀態變量,則系統的狀態空間表達式可以寫成

在MATLAB控制系統工具箱中稱這種方法為能控標準型實現方法,并給出了直接實現函數。該函數的調用格式為
[A,B,C,D] =tf2ss(num,den)
其中,num的每一行為相應于某輸出的按s的降冪順序排列的分子系數,其行數為輸出的個數;行向量den為按s的降冪順序排列的公分母系數;返回量A,B,C,D為狀態空間形式的各系數矩陣。
【例2-8】 將以下系統變換成狀態空間形式

解 在MATLAB命令窗口中,利用下列MATLAB命令
>>num=[0 2 3;1 2 1];den=[1 0.4 1];[A,B,C,D] =tf2ss(num,den)
結果顯示:

在MATLAB的多變量頻域設計(MFD)工具箱中,對多變量系統的狀態空間表達式與傳遞函數矩陣間的相互轉換給出了更簡單的轉換函數。它們的調用格式分別為
[num,dencom] =mvss2tf(A,B,C,D)
及
[A,B,C,D] =mvtf2ss(num,dencom)
4.傳遞函數形式到零極點形式的轉換
MATLAB函數tf2zp()的調用格式為
[Z,P,K] =tf2zp(num,den)
【例2-9】 若已知系統的傳遞函數為

求其零極點和增益,并寫出系統的零極點形式。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>num=[6 12 6 10];den=[1 2 3 1 1];[Z,P,K] =tf2zp(num,den)
結果顯示:

變換后所得的零極點模型為

5.零極點形式到狀態空間表達式的轉換
MATLAB函數zp2ss()的調用格式為
[A,B,C,D] =zp2ss(Z,P,K)
6.零極點形式到傳遞函數形式的轉換
MATLAB函數zp2tf()的調用格式為
[num,den] =zp2tf(Z,P,K)
【例2-10】 設系統的零極點增益模型為

求系統的狀態空間模型及傳遞函數模型。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>K=6;Z=[ -3];P=[ -1;-2;-5]; >>[A,B,C,D] =zp2ss(Z,P,K),[num,den] =zp2tf(Z,P,K)
結果顯示:

因此,系統的狀態空間表達式為

傳遞函數模型為

7.傳遞函數形式與部分分式間的相互轉換
MATLAB的轉換函數residue()調用格式為
[R,P,H] =residue(num,den)
或
[num,den] =residue(R,P,H)
其中,列向量P為傳遞函數的極點,對應各極點的留數在列向量R中;行向量H為原傳遞函數中剩余部分的系數;num,den分別為傳遞函數的分子分母系數。
【例2-11】 對例2-9中給出的傳遞函數模型,通過下面語句將可以直接獲得系統的部分分式模型。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>num=[6 12 6 10];den=[1 2 3 1 1];[R,P,H] =residue(num,den)
結果顯示:

則可得系統的部分分式為

8.相似變換
由于狀態變量選擇的非唯一性,因此系統傳遞函數的實現不是唯一的,即系統的狀態空間表達式也不是唯一的。在實際應用中,常常根據所研究問題的需要,利用相似變換將狀態空間表達式化成相應的幾種標準形式。
假設線性定常系統的狀態空間表達式為

若引入一個非奇異線性變換

則可以將上述系統變換成

式中。
MATLAB控制系統工具箱給出了一個直接完成線性變換的函數ss2ss(),該函數的調用格式為
[A1,B1,C1,D1] =ss2ss(A,B,C,D,P)
通過上式不僅可求得系統的各種標準型實現,也可利用系統的結構分解來求取系統的最小實現。
9.最小實現
最小實現是一種模型的實現,它消除了模型中過多的或不必要的狀態。對傳遞函數或零極點增益模型,這等價于將彼此相等的零極點對進行對消。利用MATLAB控制系統工具箱提供的minreal()函數可直接求出一個給定系統狀態空間表達式的最小實現。該函數的調用格式為
[Am,Bm,Cm,Dm] =minreal(A,B,C,D,tol)
其中,A,B,C,D為原狀態空間表達式的各系數矩陣;tol為用戶任意指定的誤差限,如果省略此參數,則會自動地取為eps;Am,Bm,Cm,Dm為最小實現的狀態空間表達式的各系數矩陣。
如果原系統模型由傳遞函數形式num,den或零極點形式z,p給出,則可以直接調用minreal()函數來獲得零極點對消最小實現的傳遞函數形式NUMm,DENm或零極點形式Zm,Pm。調用格式為
[NUMm,DENm] =minreal(num,den,tol) [Zm,Pm] =minreal(z,p,tol)
【例2-12】 已知系統的狀態空間表達式為

求出系統最小實現的狀態空間表達式的各系數矩陣。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>A=[-5800;-4700;0004;00-26];B=[4;-2;2;1];C=[2-2-22];D=0; >>[Am,Bm,Cm,Dm] =minreal(A,B,C,D)
結果顯示:

【例2-13】 對于例2-12中給出的狀態空間表達式,可以容易地得出系統的傳遞函數,然后由傳遞函數直接進行最小實現運算。
解 在MATLAB命令窗口中,利用下列MATLAB命令
>>A=[-5,8,0,0;-4,7,0,0;0,0,0,4;0,0,-2,6];B=[4;-2;2;1];C=[2,-2,-2,2];D=0; >>[num,den] =ss2tf(A,B,C,D,1),[NUMm,DENm] =minreal(num,den)
結果顯示:

可得出零極點對消后的傳遞函數
