例1-7 将例1-6中的传递函数转换为能控标准型。
进一步,求能控标准型的对偶系统可得能观测标准型。在命令窗中运行下列命令 >> 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]?tfdat(aG,'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为系数矩阵。
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?feedback(G1,G2,Sign)
其中G为整个系统LTI模型。如果Sign=-1或省略Sign变量,则表示负反馈。如果Sign=1, 则表示正反馈。
4. 状态空间表达式的相似变换
线性定常系统状态空间表达式为?(A,B,C,D),假设存在一个非奇异矩阵T将原状态x变换为z=Tx, 则状态z对应的状态空间表达式为?(A,B,C,D),其中A?TAT?1,
B?TB,C?CT?1。
MATLAB提供函数ss2ss( )可完成状态空间模型的相似变换。该函数调用格式为
Gt?ss2ss(G,T)
其中G为原状态空间模型。T为变换矩阵。Gt为经变换得到的状态空间模型。 例1-8 考虑一个系统,它的状态空间表达式为
1??0?1????xx?u ?????2?3??1?y??10?x
由于该系统的系统矩阵A为友矩阵,所以可由其特征值构造变换矩阵。令变换矩阵T
1??1为T???。
?1?2??在命令窗中运行下列命令
>> 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( )可将状态空间表达式变换为对角标准型或约当标准型。该函数的调用格式为:
?1GJ?canon(G,'model')
其中G为原状态空间模型,而GJ为转换得到的对角标准型或约当标准型。但该函数在系
统含有重特征值时,效果不甚理想。
例1-9 利用函数canon( )将例1-8中状态空间表达式变换为对角标准型。
如果SISO线性定常系统?(A,B,C,D)完全能控,则可通过非奇异线性变换将状态空间表达式?(A,B,C,D)变换为能控标准型。
我们编制的函数ctrlss( ) 可实现这一变换。该函数的调用格式为:
Gc?ctrlss(G)
其中G为原来的状态空间模型。Gc为转换得到的能控标准型。
该函数程序如下:
function Gc=ctrlss(A,B,C,D) %将状态空间表达式变换为能控标准型 n=length(A); Uc=ctrb(A,B); U=inv(Uc); p1=U(n,:); for i=1:n
T(i,:)=p1*A^(i-1); end
Ac=T*A*inv(T); Bc=T*B; Cc=C*inv(T);
Gc=ss(Ac,Bc,Cc,D);
例1-10 考虑一个系统,它的状态空间表达式为
?02?2??2????11?2?x??1?u x???????2?21???1??y??111?x
将其转换为能控标准型。
试编将状态空间表达式变换为能观测标准型的函数。
实验二 线性定常系统状态方程的解
一、实验目的
1. 掌握状态转移矩阵的概念。学会用MATLAB求解状态转移矩阵。
2. 掌握线性系统状态方程解的结构。学会用MATLAB求解线性定常系统的状态响应和输出响应,并绘制相应曲线。 二、实验内容
1. 求下列系统矩阵A对应的状态转移矩阵
?010?0?1???001?
A?(a)A?? (b)????40???2?54?????(c)A?0???02. 已知系统
0?0??000?0??0?10???0?? (d)A??00?1?
?????000???1??0?0????xx?u ?????6?5??1?y??10?x
(1)令初始状态为x(0)???,输入为零。
a) 用MATLAB求状态方程的解析解。选择时间向量t,绘制系统的状态响应曲线。观察并记录这些曲线。
b) 用函数initial( )计算系统在初始状态作用下状态响应和输出响应的数值解, 并用
函数plot( ) 绘制系统的状态响应曲线和输出响应曲线。观察并记录这些响应曲线,然后将这一状态响应曲线与a)中状态响应曲线进行比较。
c) 根据b)中所得的状态响应的数值解,用命令plot(x(:,1), x(:,2))绘制系统的状态轨
迹。记录系统状态转移的过程,结合a)和b)中的状态响应曲线分析这一过程。 (2) 令初始状态为零,输入为u(t)?1(t)。
a) 用MATLAB求状态方程的解析解。选择时间向量t,绘制系统的状态响应曲线。
观察并记录这些曲线。
b) 用函数initial( )计算系统在初始状态作用下状态响应和输出响应的数值解, 并用函
数plot( ) 绘制系统的状态响应曲线和输出响应曲线。观察并记录这些响应曲线,然后将这一状态响应曲线与a).中状态响应曲线进行比较。 c) 根据b)中所得的状态响应的数值解,用命令plot(x(:,1), x(:,2))绘制系统的状态轨迹。
记录系统状态转移的过程,结合a)和b)中的状态响应曲线分析这一过程。 (3)令初始状态为x(0)???1??0??1?,输入为u(t)?1(t)。求系统状态响应和输出响应的数值???1?解,绘制系统的状态响应曲线、输出响应曲线和状态轨迹。观察和分析这些响应曲线和状态轨迹是否是(1)和(2)中的响应曲线和状态轨迹的叠加。