matlab函数 状态空间系统ss、能控性矩阵ctrb、矩阵的秩rank、能控标准型canon、零极点配置place、系统极点pole等函数(线性定常系统)

matlab函数 能控性矩阵ctrb、能控标准型canon、零极点配置place

第一章,线性定常系统

ss

如果已知线性定常系统的ABCD四个矩阵,可以得到状态空间系统

其他更具体的用法请直接看帮助文档。

用法:ss(A,B,C,D)

假如

在这里插入图片描述

可以输入

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)

最后得到

在这里插入图片描述

ctrb和rank

判断系统是否能控,可以用能控性矩阵是否奇异进行判断。ctrb函数用来生成能控性矩阵,rank用来判断矩阵的秩

对于线性定常系统
x ˙ = A x + B u \dot{x}=Ax+Bu x˙=Ax+Bu

如果能控性矩阵
C O = [ B    A B    A 2 B    ⋯    A n − 1 B ] CO=[B\ \ AB\ \ A^2B\ \ \cdots\ \ A^{n-1}B] CO=[B  AB  A2B    An1B]
的行秩=n,则意味着该系统完全能控(为什么是行秩呢,因为对于MIMO系统能控性矩阵不一定是方阵)

在matlab中,可以用ctrb(A,B)直接得到能控性矩阵

比如,我事先输入矩阵A和B

在这里插入图片描述

再输入函数

ctrb(A,B)

就会得到能控性矩阵

在这里插入图片描述

也可以直接用上一个函数ss生成的状态空间系统(和上个例子所用数据不同)

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
Co=ctrb(sys)

在这里插入图片描述

最后用rank(Co)计算一下能控性矩阵的秩。

比如对于这个能控性矩阵,其行秩为1,显然系统不能控

在这里插入图片描述

canon

要会这个函数,首先去看一下本篇第一个函数ss

状态空间方程化为高阶微分方程的实现方法是非唯一的,我们就提出了标准型便于我们研究和交流。

标准型有很多种。matlab中的标准型是第一能控标准型

在这里插入图片描述

用法canon(sys,‘companion’)

比如对于这个系统
在这里插入图片描述

把ABCD全都输进去,然后

sys=ss(A,B,C,D)

得到
在这里插入图片描述

再输入canon

canon(sys,'companion')

得到
在这里插入图片描述

place或acker

设计全状态反馈控制律中,我们把配置闭环系统极点的过程称之为极点配置。可以用place函数(acker函数可以实现)

  • 先在matlab中输入矩阵A和B
  • 再输入想要的极点 P = [ 第一个  第二个  第三个 …   ] P=[第一个\ \ 第二个\ \ 第三个\dots] P=[第一个  第二个  第三个]
  • 最后
acker[A,B,P] //或者用place[A,B,P]也可以,计算精度不同
  • 输出的结果就是反馈矩阵K或说R

例子:

A = [-1,-2;1,0];
B = [2;0];
p = [-1,-2];
K = place(A,B,p);

得到

在这里插入图片描述

pole

计算系统极点。也要看本章第一个函数ss

A = [-1,-2;1,0];
B = [2;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D);
pole(sys)

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于一个系统,如果它是能控的,那么就可以通过一定的输入控制使得系统状态在有限时间内可以从任意初始状态到达任意期望状态。能控性是系统的基本性质之一,它与系统的传递函数有密切关系。 对于一个线性时不变系统,可以通过传递函数来描述系统的输入输出关系。系统的传递函数可以表示为: G(s) = C(sI - A)^(-1)B + D 其中,A、B、C、D分别是系统的状态方程的系数矩阵,I是单位矩阵,s是复变量。如果系统能控的,那么就可以将传递函数化为能控标准型的形式。 能控标准型的传递函数可以表示为: Gc(s) = Kc(s) / (s^(n-m+1)) 其中,n是系统的阶数,m是系统的零点数,Kc(s)是系统控制器,它是一个关于s的多项式。 在MATLAB中,可以使用`ctrb`函数来判断一个系统是否是能控的,如果是能控的,那么可以使用`canon`函数系统转化为能控标准型的形式。例如: ```matlab % 定义系统的系数矩阵 A = [0 1 0; 0 0 1; -6 -11 -6]; B = [0; 0; 1]; C = [1 0 0]; % 判断系统是否是能控的 if rank(ctrb(A, B)) == size(A, 1) % 将系统转化为能控标准型 [Ac, Bc, Cc, Dc] = canon(A, B, C, [], 'companion'); else disp('The system is not controllable.'); end ``` 在上述代码中,`ctrb(A, B)`函数用来计算系统控制矩阵,`rank`函数用来计算矩阵,如果控制矩阵等于系统矩阵A的行数,那么就说明系统能控的。`canon`函数用来将系统转化为能控标准型,其中`'companion'`参数表示使用伴随矩阵法进行转化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值