📄 explitmpc.m
字号:
clear all;
format long;
for t=1:2000
y(t)=(1+tanh((t-1000)/2000*pi*1.5))/2;
end
A1=[0.2730 0.0660 0.3021 -0.5012;0.2717 0.4416 0.5602 -0.7123;0.3051 -0.7865 0.7651 0.3121;0.7962 -0.1452 0.5231 -0.9345];
A2=[0.2093 -0.1981 -0.2394 0.5671;0.2717 0.4598 0.5602 1.3782;-0.4700 0.6700 -0.8600 -1.2400;0.3456 -0.6312 -1.4594 1.8936];
B1=[0.2300;0.2601;0.1213;1.3452];
B2=B1;
Q=1;R=0.1;
X=[-0.3964;0.4377;-1.0905;1.1137];
yy=[X];
for k=1:19
A=y(k*100)*A1+(1-y(k*100))*A2;
B=B1;
setlmis([]);
gama=lmivar(1,[1 1]);
u=lmivar(1,[1 1]);
Q1=lmivar(1,[4 1]);
Y=lmivar(2,[1 4]);
%S=lmivar(1,[2 0;2 1]);
%%% 1st lmi%%%%
lmiterm([-1 1 1 0],1);
lmiterm([-1 1 2 -u],1,B');
lmiterm([-1 1 2 0],X'*A');
lmiterm([-1 1 3 0],X'*Q^(0.5));
lmiterm([-1 1 4 -u],1,R^(0.5));
lmiterm([-1 2 1 u],B,1);
lmiterm([-1 2 1 0],A*X);
lmiterm([-1 2 2 Q1],1,1);
lmiterm([-1 3 1 0],Q^(0.5)*X);
lmiterm([-1 3 3 gama],1,1);
lmiterm([-1 4 1 u],R^(0.5),1)
lmiterm([-1 4 4 gama],1,1);
% %%% 2st lmi%%%%%
lmiterm([-2 1 1 Q1],1,1);
lmiterm([-2 1 2 -Y],1,B1');
lmiterm([-2 1 2 Q1],1,A1');
lmiterm([-2 1 3 Q1],1,Q^(0.5));
lmiterm([-2 1 4 -Y],1,R^(0.5));
lmiterm([-2 2 1 Y],B1,1);
lmiterm([-2 2 1 Q1],A1,1);
lmiterm([-2 2 2 Q1],1,1);
lmiterm([-2 3 1 Q1],Q^(0.5),1);
lmiterm([-2 3 3 gama],1,1);
lmiterm([-2 4 1 Y],R^(0.5),1);
lmiterm([-2 4 4 gama],1,1);
% %%% 3st lmi%%%%%
lmiterm([-2 1 1 Q1],1,1);
lmiterm([-2 1 2 -Y],1,B2');
lmiterm([-2 1 2 Q1],1,A2');
lmiterm([-2 1 3 Q1],1,Q^(0.5));
lmiterm([-2 1 4 -Y],1,R^(0.5));
lmiterm([-2 2 1 Y],B2,1);
lmiterm([-2 2 1 Q1],A2,1);
lmiterm([-2 2 2 Q1],1,1);
lmiterm([-2 3 1 Q1],Q^(0.5),1);
lmiterm([-2 3 3 gama],1,1);
lmiterm([-2 4 1 Y],R^(0.5),1);
lmiterm([-2 4 4 gama],1,1);
% lmiterm([-3 1 1 S],1,1);
% lmiterm([3 1 1 0],1)
lmisys=getlmis;
c=[1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0];
options=[1e-5,0,0,0,0];
[copt(k),xopt]=mincx(lmisys,c,options)
u(k)=dec2mat(lmisys,xopt,u);
X=A*X+B*u(k);
yy=[yy X];
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -