利用Matlab判断系统是否可控可观测

自动控制系统中,经常会遇到需要判断系统是否可控可观测的情况,Matlab在这方面处理很方便快捷。

1. 利用Matlab判断系统可控性

对于一个线性时不变动态方程来讲,系统是否可控可以使用判据 [ B , A B , A 2 B , . . . , A n − 1 B ] [B ,AB ,A^2B,...,A^{n-1}B] [B,AB,A2B,...,An1B]进行判断,也就是判断这个可控性矩阵是否满秩。
比如对于如下系统:
利用Matlab判断系统是否可控可观测_第1张图片

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,...,CAn1]进行判断,也就是判断这个可观测性矩阵是否满秩。
同样对于上述系统:

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,matlab,矩阵,线性代数)