镇场诗:慈心积善来分享,无数技术誓愿学。学术有成当栽树,后人来此可乘凉。故吾诚心说愿望,愿见文者得利益。
///
1、代码
%x'=A*x+B*u
%y=C*x
clear;
clc;
%A矩阵
A=[1 0 0;0 0 1;0 5 0]
%C矩阵
C=[1 1 0]
%知道A的行数列数,也就知道了n。
sizeOfA=size(A);
temp=C;
%i必须要从1开始。
%for循环别写{}了
for i=1:1:sizeOfA(1)-1
Q=zeros(i+1,sizeOfA(1));
%横向连接B矩阵与power(A,i)*B矩阵
Q=cat(1,temp,C*A^i);
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
2、效果
A =
1 0 0
0 0 1
0 5 0
C =
1 1 0
Qc矩阵是
Q =
1 1 0
1 0 1
1 5 0
Qc矩阵的秩是3,n是3
所以能观
3、感想
根据已有的计算过程设计算法,真是消耗时间。 我感觉具体的步骤是这样的: 1、用标准的方法一步一步的解出 2、多做几道题,多看看定义,找到规律 3、用人类的语言,写出规律 4、翻译成软件能懂的语言 注:在第四步的时候,就需要你对软件的各个函数功能有了解。如果没有了解的话,就只能上网搜索了。 /// 感恩所有帮助过我的人。我的代码是新手入门级代码,您应该学习后结合自身特点加以改造。 MATLAB是一个优秀的软件,值得学习。如果发现错误,请评论。 如果觉得博文对您有帮助就评论写好的言语,不好就评论差在哪里。因为我想铸造出来一个更加优秀的博客,需要您的支持!O(∩_∩)O谢谢 注:如果我侵犯了您的权益,请告知。看到您的告知后,我将及时作出处理。