end
Rs=sym(polymtx(A)); %计算R矩阵并转变为符号矩阵Rs形式 As=sym(A); %讲矩阵A转变为符号矩阵As Bs=sym(B); %讲矩阵B转变为符号矩阵Bs Ts=Bs; for i=1:n-1,
Ts=[As^i*Bs Ts]; end
Ts=Ts*Rs; %计算相似变换符号矩阵Ts
Abar=numeric(inv(Ts)*As*Ts); %实现矩阵A的相似变换并转变为数值形式 Bbar=numeric(inv(Ts)*Bs); %实现矩阵B的相似变换并转变为数值形式 Cbar=numeric(inv(C)*Ts); %实现矩阵C的相似变换并转变为数值形式 T=numeric(Tc); %相似变换矩阵T转变为数值形式
求系统相似变换的R矩阵函数polymtx:
函数polymtx: 求系统相似矩阵变换的R矩阵 function R=polymtx(A)
%R=polymtx(A)——A须为方针
% [1 0 0 0] % [a(n-1) 1 0 0] % R= [a(n-2) a(n-1) 0 0] % [... ... ... ...] % [a(2) a(3) 1 0] % [a(1) a(2) a(n-1) 1]
%其中a(i)(i=1,...n-1)为矩阵A的特征多项式 %|s*I-A|=s^n+a(n-1)*s^(n-1)+...+a(1)*s+a(0) %的各项系数
d=size(A);
if (length(d)~=2), %判断系统可控性 error(‘错误:非二维矩阵!’); end
if (d(1)~=d(2)), %判断系统可控性 error(‘错误:A非方针!’); end n=d(1); As=sym(A);
p=sym2poly(poly(As)); R=[]; for i=1:n
R=[R p(1:n)’];
p=[0 p(1:n)’]; end
R=numeric(R);
线性定常系统可控分解函数cdecomp:
函数cdecomp: 线性定常系统的可控性分解 function [Abar,Bbar,Cbar,P]=cdecomp(A,B,C) íecomp 可控性分解
%[Abar,Bbar,Cbar,P]=cdecomp(A,B,C)
%若系统不完全可控,则存在相似变换矩阵P,使得 % -1 -1
?ar=P*A*P, Bbar=P*B, Cbar=C*P %其中
?ar=|Ac A12| ,Bbar=|Bc |,Cbar=|Cc Cuc| |0 Auc| |0|
%(Ac,Bc)构成系统的可控子空间
As=sym(A); %转变为符号矩阵求解 Bs=sym(B); Cs=sym(C); nA=size(As,l);
Ms=sym(ctrb(As,Bs)); %求可控性矩阵M
n=numeric(rank(Ms)); if (n P=[]; %系统不可控,计算变换矩阵P i=1; while numeric (rank(P)) if (numeric(rank(P)) E=sym(eye(size(A))); i=1; while numeric (rank(P)) if (numeric(rank(P)) end else P=eye(size(A)); %若系统可控,取P=1 end Abar=numeric(inv(P)*A*P); %转变为数值矩阵输出 Bbar=numeric(inv(P)*B); Cbar=numeric(inv(C*P)); P=numeric(P); 线性定常系统可观分解函数odecomp: 函数odecomp: 线性定常系统的可观性分解 function [Abar,Bbar,Cbar,P]=odecomp(A,B,C) %odecomp可控性分解 %[Abar,Bbar,Cbar,P]=odecomp(A,B,C) %若系统不完全可观,则存在相似变换矩阵P,使得 % -1 -1 ?ar=P*A*P, Bbar=P*B, Cbar=C*P %其中 ?ar=|Ao 0| ,Bbar=|Bo |,Cbar=|Co 0| |A21 Ano| |Bno| %(Ao,Bo)构成系统的可观子空间 %根据对偶原理,应用可控性分解函数cdecomp实现可观性分解 [abar,bbar,cbar,P]=cdecomp(A’,B’,C’); Abar=abar’; Bbar=cbar’; Cbar=bbar’;