matlab-自控原理 秩判据 能控性 已知线性定常系统的A和B矩阵

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。


  •                     matlab : R2018a 64bit
  •                             os : win7
  •            type setting : markdown
  •                         blog : https://blog.csdn.net/yushaopu
  •                     github : https://github.com/GratefulHeartCoder

code

clear
clc

% x'=A*x+B*u


% A矩阵
A=[1 3 0;0 0 1;0 2 1]

% B矩阵
B=[0;1;0]

% 知道A的行数列数,也就知道了n。
sizeOfA=size(A);
temp=B;

%i必须要从1开始。
for i=1:1:sizeOfA(1)-1

    Q=zeros(sizeOfA(1),i+1);   
    %横向连接B矩阵与power(A,i)*B矩阵
    Q=cat(2,temp,A^i*B);
    temp=Q;

end

fprintf('Qc矩阵是');
Q
fprintf('Qc矩阵的秩是%d,',rank(Q))
fprintf('n是%d\n',sizeOfA(1))

if(rank(Q)==sizeOfA(1))
    fprintf('所以能控\n');
else
    fprintf('所以不能控\n');
end

result


A =

     1     3     0
     0     0     1
     0     2     1


B =

     0
     1
     0

Qc矩阵是
Q =

     0     3     3
     1     0     2
     0     2     2

Qc矩阵的秩是2,n是3
所以不能控
>> 

resource


感恩曾经帮助过 心少朴 的人。
matlab优秀,值得学习。基础知识 + 专业知识 + matlab = ?
注:此文是自学笔记所生,质量中下等,故要三思而后行。新手到此,不可照搬,应先研究其理象数,待能变通之时,自然跳出深坑。

猜你喜欢

转载自blog.csdn.net/yushaopu/article/details/81072123