P=zeros(n);P(1,:)=P1;
for i=1:n-1
P(i+1,:)=P(i,:)*A;
end
P11=inv(P);A1=P*A*P11;B1=P*B;C1=C*P11
可观测标准型实现的调用函数:normal_obsver.m
function [A1,B1,C1,P]=normal_obsver(A,B,C,D)
global S
str1=jobsv(A,C)
S1=inv(S');
n=length(S1);
P1=[zeros(1,n-1),1]*S1;
P=zeros(n);P(1,:)=P1;
for i=1:n-1
P(i+1,:)=P(i,:)*A';
end
P11=inv(P);A1=P11'*A*P';B1=P11'*B;C1=C*P'
可控性判断调用函数:jctr.m
function str=jctr(A,B)
global S
S=ctrb(A,B)
save('S')
r=rank(S)
l=length(A);
if r==l
str='系统状态完全可控!';
else
str='系统状态不完全可控!';
end
可观测性判断调用函数:jobsv.m
function str=jobsv(A,C)
global S
S=obsv(A,C)
save('S')
r=rank(S)
l=size(A,1);
if r==l
str='系统状态完全可观!';
else
str='系统状态不完全可观!';
end
· 478 ·