我最近在学习lmi,mincx,做了个别人论文上的仿真实例,为什么我做的结果和论文上的不一样?不知道哪里出错了,求大神指点一下,感激不尽。
%给出常量
A=[0.999,0.0099;-0.0197,0.9703];
B3=[0.5000;0];
B4=[-0.5000;0.0099];
E=[1;-1];
D=[-2.7183,-3.6945;2.7183,7.3891];
H0=[0.1,0;0.1,0.1];
H1=[-2,-1];
H2=[-1,-2];
C1=[0.2,0];
C2=[0.01,0];
I=[1,0;0,1];
%初始化LMI
setlmis([]);
%定义变量
u=lmivar(1,[1,1]);
P=lmivar(1,[2,1]);
S=lmivar(1,[2,1]);
Z=lmivar(1,[2,1]);
W1=lmivar(2,[1,2]);
W2=lmivar(2,[2,2]);
Y=lmivar(2,[1,2]);
e1=lmivar(1,[1,1]);
e2=lmivar(1,[1,1]);
%添加项PSZ>0
lmiterm([-2 1 1 P], 1, 1);
lmiterm([-3 1 1 S], 1, 1);
lmiterm([-4 1 1 Z], 1, 1);
lmiterm([-5 1 1 e1], 1, 1);
lmiterm([-6 1 1 e2], 1, 1);
lmiterm([-7 1 1 u], 1, 1);
%添加项
lmiterm([1 1 1 P],-1,1);
lmiterm([1 2 2 Z],1,1);
lmiterm([1 2 2 S],-1,1);
lmiterm([1 3 3 Z],-1,1);
lmiterm([1 4 4 u],-1,I);
lmiterm([1 5 1 P],A,1);
lmiterm([1 5 2 W1],B3,1);
lmiterm([1 5 3 W1],B4,1);
lmiterm([1 5 4 0],H0);
lmiterm([1 5 5 e1],1,D*D');
lmiterm([1 5 5 P],-1,1);
lmiterm([1 6 2 W2],1,1);
lmiterm([1 6 6 S],-1,1);
lmiterm([1 7 2 W1],E,1);
lmiterm([1 7 3 W1],-E,1);
lmiterm([1 7 7 e1],-1,I);
lmiterm([1 8 1 P],C2,1);
lmiterm([1 8 4 0],H2);
lmiterm([1 8 8 0],-1);
lmiterm([1 9 1 P],C1,1);
lmiterm([1 9 4 0],H1);
lmiterm([1 9 9 e2],-1,1);
lmiterm([1 10 6 Y],1,1);
lmiterm([1 10 10 e2],-1,1);
%获取LMI系统描述
lmisys=getlmis;
%获取目标函数的决策向量的系数,这里没有使用defcx,是由于比较简单
n=decnbr(lmisys);
c=zeros(n,1);
for j=1:n
[uj,Pj,Sj,Zj,W1j,W2j,Yj,e1j,e2j]=defcx(lmisys,j,u,P,S,Z,W1,W2,Y,e1,e2);
% [uj]=defcx(lmisys,j,u);
c(j)=uj;
end
%定义options参数
options=[1e-5 0 0 0 1];
%调用mincx函数
[copt,xopt]=mincx(lmisys,c,options)
% P=dec2mat(lmisys,xopt,P)
% S=dec2mat(lmisys,xopt,S)
% Z=dec2mat(lmisys,xopt,Z)
% W1=dec2mat(lmisys,xopt,W1)
% W2=dec2mat(lmisys,xopt,W2)
% Y=dec2mat(lmisys,xopt,Y)
% e1=dec2mat(lmisys,xopt,e1)
% e2=dec2mat(lmisys,xopt,e2)
% u=dec2mat(lmisys,xopt,u)
%simulation
2017-3-13 10:07 上传