主函数:
clear
A=[0 1 0;0 -1 1;0 0 -2];
B=[0;0;1];
C=[1 0 0];
[V,D]=eig(A)
P=[-2 -1+j -1-j];%极点配置
func1(A,B,C,P)
A B C 矩阵根据具体情况更改
P为配置后的极点矩阵
配置极点子函数:
%极点配置子函数
function K=func1(A,B,C,P)
Qc=ctrb(A,B)
n=size(A,1);
if rank(Qc)==n
[m,n]=size(A);
Q=poly(A)%特征多项式系数
T=zeros(m,n);
T(:,1)=B;
for i=2:n %单独求出Ti
T(:,i)=A*T(:,i-1)+Q(1,i)*T(:,1);
end
T=fliplr(T) %求出T
A1=inv(T)*A*T;
B1=inv(T)*B;
C1=C*T;
n=length(P);
a1=poly(A);
a2=[1 -P(1)];
for j=1:n-1
a2=conv(a2,[1 -P(j+1)]);
end
for j=1:n
K(1,n-j+1)=a2(j+1)-a1(j+1);
end
K=K*inv(T)
else
disp('系统不能控')
end
end