【MATLAB】能控标准型的转化

将系统转化为能控标准型的步骤如下:

1.构造判别矩阵Mc,判断系统是否能控。

2.构造变换矩阵Tp,Tp的计算如下:

eq?T_p%3DT_1*T_2%3D%5Cbegin%7Bbmatrix%7D%20A%5E%7Bn-1%7DB%26A%5E%7Bn-2%7DB%26%20...%20%26%20B%20%5Cend%7Bbmatrix%7D%5Cbegin%7Bbmatrix%7D%201%20%26%200%20%26%200%20%26%20...%20%26%200%5C%5C%20a_1%26%201%26%200%20%26%20...%20%260%20%5C%5C%20a_2%26%20a_1%20%26%201%20%26%20...%26%3A%20%5C%5C%20%3A%26%20%3A%26%20%3A%26%20...%260%20%5C%5C%20a_%7Bn-1%7D%26%20a_%7Bn-2%7D%20%26%20...%20%26%20a1%20%26%201%20%5Cend%7Bbmatrix%7D

        其中:a1...an为特征多项式eq?%5Cbegin%7Bvmatrix%7D%20sI-A%20%5Cend%7Bvmatrix%7D%3Ds%5En+a_1s%5E%7Bn-1%7D+...+a_%7Bn-1%7Ds+a_n的各项系数。

3.计算出变换矩阵eq?T_p%5E%7B-1%7D,然后通过下列式子转化矩阵A、B、C,得到系统的能控标准型

eq?%5Cleft%5C%7B%5Cbegin%7Bmatrix%7D%20A_k%3DT_p%5E%7B-1%7DAT_p%5C%5C%20B_k%3DT_p%5E%7B-1%7DB%5C%5C%20C_k%3DCT_p%20%5Cend%7Bmatrix%7D%5Cright.

在matlab中,对系统能控标准型的转化主要会用到下列函数 :

函数用法说明
det(B)返回方阵的行列式
diag(B,x)生成在主对角线上方第x条对角线为向量B的矩阵,x为负时为对角线下方第x条对角线
ctrb(A,B)返回系统的能控性判别矩阵Mc,其中A为系统矩阵,B为输入矩阵
sys=ss(A,B,C,D)由A、B、C、D矩阵得到连续系统的状态空间模型
[A,B,C,D]=ssdata(sys)得到连续系统的A、B、C、D矩阵
syst=ss2ss(sys,TM)通过非奇异变换矩阵TM变换系统sys的空间表达式
num=sym2poly(p)返回符号多项式p的系数向量num。返回的系数向量c包括所有系数,包括等于0的系数

下面通过一个例子来演示将一个线性定常系统的状态空间模型转化为能控标准型。

例:已知线性定常系统的状态空间模型模型为

eq?%5Cleft%5C%7B%5Cbegin%7Bmatrix%7D%20%5Cdot%7Bx%7D%3D%5Cbegin%7Bpmatrix%7D%200%20%26%201%20%26%202%5C%5C%20-2%20%26%20-3%20%26%200%5C%5C%20-1%20%26%201%20%26%20-3%20%5Cend%7Bpmatrix%7Dx+%5Cbegin%7Bpmatrix%7D%200%5C%5C%201%5C%5C%202%20%5Cend%7Bpmatrix%7Du%5C%5C%20y%3D%5Cbegin%7Bpmatrix%7D%200%20%26%200%20%26%201%20%5Cend%7Bpmatrix%7Dx%20%5Cend%7Bmatrix%7D%5Cright.

采用MATLAB将系统变化为能控标准型。

解: 程序如下

%先编写trancon.m函数,用于求系统的能控标准型。
function sysc=trancon(sys)  %函数输入为ss模型传递函数,输出为ss模型传递函数
[A,B,C,D]=ssdata(sys); %得到原系统的的矩阵A,B,C,D
n=length(A);           %得到系统矩阵A的维度n
Mc=ctrb(A,B);          %求能控型判别矩阵Mc
if rank(Mc)<n          %若判别矩阵Mc不满秩,说明系统不可控,无法转化为能控标准型
    disp('Uncontrollable system'); 
else                 %若系统满秩,说明可以转化为能控标准型
    T1=[];
    T2=zeros(n);     %矩阵T1和T2用来求变换矩阵Tp
    I=eye(size(A));  %单位矩阵I
    syms s
    F=det(s*I-A);    %求系统的特征多项式
    a=sym2poly(F);   %提取系统的特征多项式的系数向量
    for i=1:1:n      %求得矩阵T1,T2
        T1=[A^(i-1)*B T1];
        T2=T2+diag(a(i)*ones(1,n+1-i),1-i);
    end
    Tp=T1*T2         %计算变换矩阵Tp
    sysc=ss2ss(sys,inv(Tp));%求得变换为能控标准型的状态空间模型
end

然后在命令窗口中输入
>> A=[0 1 2 ;-2 -3 0;-1 1 -3];
>> B=[0 1 2]';
>> C=[0 0 1];
>> D=0;
>> sys=ss(A,B,C,D);
>> sysc=trancon(sys)

运行结果如下:

Tp =

    17     5     0
    -6     3     1
     3     7     2


sysc =
 
  A = 
               x1          x2          x3
   x1           0           1           0
   x2           0           0           1
   x3         -16         -13          -6
 
  B = 
       u1
   x1   0
   x2   0
   x3   1
 
  C = 
       x1  x2  x3
   y1   3   7   2
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

可以从结果看到变换矩阵Tp以及化为能控能控标准型后的矩阵A、B、C、D。

 

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦斯威尔逊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值