自动控制系统中,经常会遇到需要判断系统是否可控可观测的情况,Matlab在这方面处理很方便快捷。
1. 利用Matlab判断系统可控性
对于一个线性时不变动态方程来讲,系统是否可控可以使用判据
[
B
,
A
B
,
A
2
B
,
.
.
.
,
A
n
−
1
B
]
[B ,AB ,A^2B,...,A^{n-1}B]
[B,AB,A2B,...,An−1B]进行判断,也就是判断这个可控性矩阵是否满秩。
比如对于如下系统:
文章来源:https://www.toymoban.com/news/detail-779006.html
A = [0 1 0 0;0 5 0 0;0 0 -7 0;0 0 0 -8];
B = [1 1 3 4]'; % 右上角逗号表示装置,也就是将行向量变为列向量
C = [0 5 0 8];
ctrb_Mat = ctrb(A,B); % 计算系统的可控性矩阵
if rank(ctrb_Mat)==4 % 判断是否满秩,这里的系统是4阶的,于是判断是否等于4
disp(ctrb_Mat); % 打印可控性矩阵
disp('原系统可控');
else
disp('原系统不可控');
end
2. 利用Matlab判断系统可观测性
对于一个线性时不变动态方程来讲,系统是否可观测可以使用判据
[
C
,
C
A
,
C
A
2
,
.
.
.
,
C
A
n
−
1
]
[C ,CA ,CA^2,...,CA^{n-1}]
[C,CA,CA2,...,CAn−1]进行判断,也就是判断这个可观测性矩阵是否满秩。
同样对于上述系统:文章来源地址https://www.toymoban.com/news/detail-779006.html
A = [0 1 0 0;0 5 0 0;0 0 -7 0;0 0 0 -8];
B = [1 1 3 4]'; % 右上角逗号表示装置,也就是将行向量变为列向量
C = [0 5 0 8];
obsv_Mat = obsv(A,C); % 计算系统的可观测性矩阵
if rank(obsv_Mat)==4 % 判断是否满秩,这里的系统是4阶的,于是判断是否等于4
disp(obsv_Mat);
disp('原系统可观测');
else
disp('原系统不可观测');
end
到了这里,关于利用Matlab判断系统是否可控可观测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!