以下是我的代码,怀疑有问题,一直不可解。
希望大神们帮帮我。
n=3;
p=3;
n_=n+2*p;
% 自定义参数
%gama,daerta分别为LMI中参数
gama=0.5;
daerta=0.7;
A_=[-1.46 0 2.428 0 0 0 0 0 0;-0.8357 -2.4 -0.3788 0 0 0 0 0 0;0.3107 0 -2.23 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0;0 0 0 0 1 0 0 0 0;0 0 0 0 0 1 0 0 0;0 0 0 0 0 0 1 0 0;0 0 0 0 0 0 0 1 0;0 0 0 0 0 0 0 0 1];
Aeig=eig(A_);
B_=[-12.5068;-9.4796;-7.4111;0;0;0;0;0;0];
C_=[-0.0700 0.5 1 1 0 0 1 0 0;0.5 -0.5 -0.1 0 1 0 0 1 0;0.1 0.2 0.4 0 0 1 0 0 1];
D_2=[0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0;0 0 0 0 1 0 0 0 0;0 0 0 0 0 1 0 0 0;0 0 0 0 0 0 1 0 0;0 0 0 0 0 0 0 1 0;0 0 0 0 0 0 0 0 1];
D_1=[1 0 0;0 1 0;0 0 1;0 0 0;0 0 0;0 0 0;0 0 0;0 0 0;0 0 0];
%n1为指标集,共36个
nl=[0;1;2;3];
I=eye(n_,n_);
% LMI
jiama=0.5;
deerta=0.7;
Myita=B_*pinv(C_*B_);
A=(I-Myita*C_)*A_;
Tyita=[D_2-Myita*C_*D_2,D_1-Myita*C_*D_1];
setlmis([]);
P=lmivar(1,[n_ 1]);
Q=lmivar(2,[n_,p]);
jieta = lmivar(1,[1 1]);
H=lmivar(2,[12,3]);
lmiterm([1 1 1 P],1,A,'s');
lmiterm([1 1 1 Q],1,-C_,'s');
lmiterm([1 1 1 P],jiama, 1);
lmiterm([1 1 2 0],0);
lmiterm([1 2 1 0],0);
lmiterm([1 2 2 0],-deerta*deerta);
lmiterm([2 1 1 0],-jieta);
lmiterm([2 2 1 P],Tyita.',1);
lmiterm([2 2 1 H],-1,C_);
lmiterm([2 2 2 0],-1);
lmiterm([-3 1 1 P],1,1);
%lmiterm ([3 1 1 0],2);
lmisys = getlmis;
n2=decnbr(lmisys);
c=zeros(n2,1);%预分配c的内存,可以没有,但会降低运行速度
for jj = 1:n2
[rouj]= defcx(lmisys,jj,jieta);%通过defcx函数求取,如果不能理解mat2dec函数就用defcx函数吧
c(jj)=rouj;
end
[copt,xopt] = mincx(lmisys,c);
P = dec2mat(lmisys,xopt,P);%标识符为1,即第一个命名的矩阵变量
Peig1=eig(P);
Q = dec2mat(lmisys,xopt,Q);
H = dec2mat(lmisys,xopt,H);
L=inv(P)*Q;