在命令窗中运行下列命令
>> num=[6];den=[1 6 11 6];Gj=canon(tf(num,den), 'modal') 返回
a =
x1 x2 x3 x1 -3 0 0 x2 0 -2 0 x3 0 0 -1
b =
u1 x1 -7.762 x2 -9.798 x3 2.872
c =
x1 x2 x3 y1 -0.3865 0.6124 1.044
d =
u1 y1 0
Continuous-time model. 例1-6 已知系统的传递函数为
G(s)?2s?10s?17s?11s?5s?8s?43232
将其转换为约当标准型。
在命令窗中运行下列命令
>> num=[2 10 17 11]; den=[1 5 8 4]; Gj=jordants(num,den) 返回 a =
x1 x2 x3 x1 -2 1 0 x2 0 -2 0 x3 0 0 -1 b = u1 x1 0 x2 1
6
x3 1
c =
x1 x2 x3 y1 -1 -2 2 d = u1 y1 2
Continuous-time model.
我们编制的函数ctrlts( )可将传递函数转换为能控标准型。该函数的调用格式为:
Gc?ctrlt(snum,den)
Gc为转换得到的能控其中num和den分别为传递函数的分子和分母多项式系数的行向量,标准型。
该函数的程序如下:
function Gc=ctrlts(num,den) %将传递函数转换为能控标准型 m=length(num)-1;n=length(den)-1; if m==n
[R,P,K]=residue(num,den); num1=num-K*den;
A(n,:)=-1*rot90(den(:,2:n+1),2); A(1:n-1,2:n)=eye(n-1); A(1:n-1,1)=zeros(n-1,1); B=[zeros(n-1,1);1];
C=rot90(num1(:,2:n+1),2); D=K;
else A(n,:)=-1*rot90(den(:,2:n+1),2); A(1:n-1,2:n)=eye(n-1); A(1:n-1,1)=zeros(n-1,1); B=[zeros(n-1,1);1];
C(:,1:m+1)=rot90(num,2); C(:,m+2:n)=zeros(1,n-m-1); D=0; end
Gc=ss(A,B,C,D);
例1-7 将例1-6中的传递函数转换为能控标准型。
在命令窗中运行下列命令 >> num=[2 10 17 11];den=[1 5 8 4];Gc=ctrlts(num,den) 返回 a =
x1 x2 x3 x1 0 1 0 x2 0 0 1 x3 -4 -8 -5 b =
7
u1 x1 0 x2 0 x3 1 c =
x1 x2 x3 y1 3 1 0 d =
u1 y1 2
Continuous-time model.
进一步,求能控标准型的对偶系统可得能观测标准型。在命令窗中运行下列命令 >> Ao=(Gc.a)';Bo=(Gc.c)';Co=(Gc.b)';Do=Gc.d;Go=ss(Ao,Bo,Co,Do) 返回
a =
x1 x2 x3 x1 0 0 -4 x2 1 0 -8 x3 0 1 -5 b = u1 x1 3 x2 1 x3 0 c =
x1 x2 x3 y1 0 0 1 d =
u1 y1 2
Continuous-time model.
下面是介绍MATLAB提供的三个函数tfdata( ), zpkdata( ), ssdata( )。
函数tfdata( ) 可得到传递函数模型的分子分母多项式系数。其调用格式为
[num,den]?tfdata(G,'v')
其中G为系统LTI模型。num和den分别为分子和分母多项式的系数向量。
函数zpkdata( ) 可得到零极点增益模型的零点、极点和增益。其调用格式为
[z,p,k]?zpkdata(G,'v')
其中G为系统LTI模型。z和p分别为零点和极点向量,k为增益。
函数ssdata( ) 可得到状态空间模型的系数矩阵。其调用格式为
[A,B,C,D]?ssdata(G,'v')
其中G为系统LTI模型。A,B,C,D为系数矩阵。
8
3. 模型的连接 1) 串联连接
设线性定常系统?1和?2的LTI模型分别为G1和G2。在MATLAB中, 两者的串联连接(参教材)可由命令G?G2*G1实现,其中G为整个系统的LTI模型。多个系统的串联连接可由命令G?Gn*Gn?1*?*G1实现。 2) 并联连接
设线性定常系统?1和?2的LTI模型分别为G1和G2。在MATLAB中, 两者的并联连接(参教材)可由命令G?G1?G2实现,其中G为整个系统的LTI模型。多个系统的并联连接可由命令G?G1?G2???Gn实现。 3) 反馈连接
设线性定常系统?1和?2的LTI模型分别为G1和G2。在MATLAB中, 两者的反馈
连接(参教材)可由MATLAB提供的函数feedback( )实现。该函数的调用格式为: G?feedbac(Gk1,G2,Sign)
其中G为整个系统LTI模型。如果Sign=-1或省略Sign变量,则表示负反馈。如果Sign=1, 则表示正反馈。
4. 状态空间表达式的相似变换
线性定常系统状态空间表达式为?(A,B,C,D),假设存在一个非奇异矩阵T将原状态x变换为z=Tx, 则状态z对应的状态空间表达式为?(A,B,C,D),其中A?TATB?TB,C?CT?1?1,
。
MATLAB提供函数ss2ss( )可完成状态空间模型的相似变换。该函数调用格式为
Gt?ss2ss(G,T)
其中G为原状态空间模型。T为变换矩阵。Gt为经变换得到的状态空间模型。 例1-8 考虑一个系统,它的状态空间表达式为
?0???x??21??1?x????u ?3??1?y??10?x
由于该系统的系统矩阵A为友矩阵,所以可由其特征值构造变换矩阵。令变换矩阵T?1为T????11???2??1。
9
在命令窗中运行下列命令
>> A=[0 1;-2 -3];B=[1 1]';C=[1 0];G=ss(A,B,C,0); T=inv([1 1;-1 -2]); G1=ss2ss(G,T) 返回
a =
x1 x2 x1 -1 0 x2 0 -2 b =
u1 x1 3 x2 -2 c =
x1 x2 y1 1 1 d =
u1
y1 0
Continuous-time model.
通过线性变换可将状态空间表达式变换为约当标准型(包括对角标准型),能控标准型和能观测标准型。
MATLAB提供的函数canon( )可将状态空间表达式变换为对角标准型或约当标准型。该函数的调用格式为:
GJ?canon(G,'modal')
其中G为原状态空间模型,而GJ为转换得到的对角标准型或约当标准型。但该函数在系统含有重特征值时,效果不甚理想。
例1-9 利用函数canon( )将例1-8中状态空间表达式变换为对角标准型。 在命令窗中运行下列命令 >> A=[0 1;-2 -3];B=[1 1]';C=[1 0];G=ss(A,B,C,0); G1=canon(G,’modal’) 返回
a =
x1 x2 x1 -1 0 x2 0 -2 b =
u1 x1 4.243 x2 4.472 c =
x1 x2 y1 0.7071 -0.4472 d =
u1 y1 0
10