y(k)?Z?1{C(zI?G)?1z}x(0)?Z?1{C?(zI?G)?1HU(z)}?Du(k) (3-2-10)
例2-5 已知系统
x(k?1)??1??0?0?x(k)?u(k) ?????0.16?1??1? y(k)??1?1?x(k)
求状态转移矩阵,求初始状态为零时系统的单位阶跃响应。
实验三 线性定常系统的能控性和能观测性
一、实验目的
1. 掌握能控性和能观测性的概念。学会用MATLAB判断能控性和能观测性。 2. 掌握系统的结构分解。学会用MATLAB进行结构分解。 3. 掌握最小实现的概念。学会用MATLAB求最小实现。 二、实验内容 1. 已知系统
??3?4??4????xx?u ?????10??1?y???1?1?x
(1)判断系统状态的能控性和能观测性,以及系统输出的能控性。说明状态能
控性和输出能控性之间有无联系。
(2)令系统的初始状态为零,系统的输入分别为单位阶跃函数和单位脉冲函数。用MATLAB函数计算系统的状态响应和输出响应,并绘制相应的响应曲线。观察和记录这些曲线。当输入改变时, 每个状态变量的响应曲线是否随着改变?能否根据这些曲线判断系统状态的能控性? (3) 将给定的状态空间表达式变换为对角标准型,判断系统的能控性和能观测性,与(1)的结果是否一致?为何?
(4)令(3)中系统的初始状态为零, 输入分别为单位阶跃函数和单位脉冲函数。用MATLAB函数计算系统的状态响应和输出响应,并绘制响应的曲线。观察和记录这些曲线。当输入改变时, 每个状态变量曲线是否随着改变?能否根据这些曲线判断系统以及各状态变量的能控性?不能控和能控状态变量的响应曲线有何不同?
(5)根据(2)和(4)所得曲线能否判断系统状态以及各状态变量的能观测性?
2. 已知系统
00???10?2??0?30??1?0?x???u ???x?0?0?0?20?????000?4???0?y??1010?x
(1)将给定的状态空间模型转换为传递函数模型。令初始状态为零,用MATLAB计算系
统的单位阶跃输出响应,绘制和记录相应的曲线。
(2)按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型。它与(1)中所得的传递函数模型是否一致?为何?令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。这一曲线与(1)中的输出曲线是否一致?为何?
(3)按能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。它与(1)中的传递函数模型是否一致?为何?令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。这一曲线与(1)中的输出曲线是否一致?
(4)按能控性能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。它与(1)中的传递函数模型是否一致?为何?令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应的曲线。这一曲线与(1)中的输出曲线是否一致?为何? 3. 已知系统
00???10?2??0?30??1?0?x???u ??? (a)x?0?0?0?20?????000?4???0? y??1010?x (b)G(s)?s?1
(s?1)(s?2)(s?3)用函数minreal( )求最小实现。判断所得系统的能控性和能观测性,验证其是否最小实现。 三、附录 1. 能控性
1)线性定常系统状态能控性的判断
n阶线性定常连续或离散系统?(A,B)状态完全能控的充分必要条件是:能控性矩阵
Uc?BABA2B?An?1B的秩为n。
能控性矩阵可用MATLAB提供的函数ctrb( )自动产生,其调用格式为:
??Uc?ctrb(A,B)
其中A,B分别为系统矩阵和输入矩阵,Uc为能控性矩阵。
能控性矩阵的秩即rank(Uc)称为能控性指数,表示系统能控状态变量的数目,可由MATLAB提供的函数rank( )求出。 例3-1 判断系统的能控性
?132??21? x????020?x??11?u ????1??013?????1?? y???211??010??x 在命令窗中运行下列命令
>> A=[1 3 2;0 2 0;0 1 3]; B=[2 1; 1 1;-1 -1]; Uc=ctrb(A,B); rank(Uc) 返回 ans = 2
因为rank(Uc)=2?n,所以系统的状态不完全能控。
也可编制判断系统状态能控性的函数sctrb( ),其程序如下: function sctrb(A,B) %判断系统状态的能控性 Uc=ctrb(A,B); nc=rank(Uc); n=length(A); if n==nc
disp('system is completely state controllable') else
disp('system is not completely state controllable') end
在命令窗中运行下列命令
>> A=[1 3 2;0 2 0;0 1 3];B=[2 1;1 1;-1 -1];sctrb(A,B) 返回
system is not completely state controllable 2)线性定常系统输出能控性的判断
线性定常连续或离散系统?(A,B,C,D)输出能控的充分必要条件是:m?(n?1)r矩阵Uy?CB为输出个数。
矩阵Uy可以通过能控性矩阵Uc得到,即Uy??C*Uc例3-2 判断系统的输出能控性
?CABCA2B?CAn?1BD的秩为m,其中r为系统的输入个数,m
D?
???45???5??x??x???u ??10??1? y??1?1?x
在命令窗中运行下列命令
>> A=[-4 5;1 0];B=[-5;1];C=[1 -1];D=0;Uc=ctrb(A,B);Uy=[C*Uc D];rank(Uy) 返回 ans= 1
因为rank(Uy)=1=m,故系统是输出能控的。
类似的,也可编制判断输出能控性的函数。 2. 能观测性
n阶线性定常连续或离散系统?(A,C)状态完全能观测的充分必要条件是:能观测性
?C??CA???2矩阵Vo??CA?的秩为n。
?????n?1??CA??能观测性矩阵可以用MATLAB提供的函数obsv( )自动产生,其调用格式为:
Vo?obsv(A,C)
其中A, C分别为系统矩阵和输出矩阵,Vo为能观测性矩阵。
能观测性矩阵的秩即rank(Vo)称为能观测性指数,表示系统能观测状态变量的数目。可由MATLAB提供的函数rank( )求出。
例3-3 判断例1中系统的能观测性
3. 线性系统的结构分解 1) 按能控性分解
如果线性系统的状态不完全能控,则可通过非奇异线性变换, 将系统(或状态)分解为 能控和不能控两部分。
MATLAB提供的函数ctrbf( ), 可将系统(或状态)分解为如下形式:
?c??Ac?x??????xc??A21y?Cc0??xc??0???????u Ac??xc??Bc???xc?Cc?? (3-3-1)
?xc??该函数的调用格式为:
?Ac其中?ABcCcTcKc??ctrbf(A,B,C)
BcCc?为分解后系统的状态空间模
?AcBC?为给定系统的状态空间模型,
型。Tc为相应线性变换矩阵,Kc返回系统中能控状态变量的数目。 例3-4 按能控性分解
?00?1??1????10?3?x??1?u x???????01?3???0??y??01?2?x
在命令窗中运行下列命令
>> A=[0 0 -1;1 0 -3;0 1 -3]; B=[1;1;0]; C=[0 1 -2]; [Ac Bc Cc Tc Kc]=ctrbf(A,B,C) 返回 Ac =
-1.0000 0.0000 -0.0000 -2.1213 -2.5000 0.8660 -1.2247 -2.5981 0.5000 Bc =
0 0