good books for learning linear matrix inequality with MATLAB examples
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello,
i am in my reasurch phase and badly stuck in LMI coding using matlab. can anyone suggest me some good books on LMI with matlab example please. iam trying to solve the following problem (from "Monitoring of stealthy attack in networked control systems") :
so far i have coded this but it gives me infeasible sol whereas in paper thr range of lambda is [0,0.72]:
clc
close all
clear all
%%%%%%%%%%%%%%%%%%%%%%%%%%SYSTEM DYNAMICS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=[0.6 0 0.34 0.35 ;
0 0.8 0 0.37 ;
0 0 0.5 0 ;
0 0 0 0.9];
B=[1 0 0; 1 0 1; 0 0 2; 0 1 1];
C=[1 0 0 0; 0 1 0 0; 0 0 0 1];
f=[0 0 1 0]';
F=A*f;
H=pinv(C*F);
Ab=A-A*F*H*C;
bta=[ 1 0 1;
2 1 1 ];
sigma=bta*(eye(3)-C*F*H);
% rank(sigma);
cb=sigma*C;
Kb =[0.0057 -0.0028;
-0.0275 0.0618;
0.0041 -0.0178;
0.0077 0.0239];
K =[0.0276 0.0230 0.0229;
0.0252 0.0612 0.0338;
0.0015 -0.0001 -0.0001;
0.0162 0.0235 0.0313 ];
%%
lambda=0;
k=1;
l=zeros(1,91);
n=zeros(1,91);
%%
%LMI PART
for i=1:91
i
setlmis([]);
Y=lmivar(1,[4,1]) ;
%defining first lmi
% |Y sqrt(1-lamda)(YA+KC) sqrt( lamda)(YA_bar+K_bar*C_bar)|
% | sqrt(1-lamda)(YA+KC)' Y 0 | >0
% | sqrt( lamda)(YA_bar+K_bar*C_bar))' 0 Y |
%%
%row 1 (% |Y sqrt(1-lamda)(YA+KC) sqrt( lamda)(YA_bar+K_bar*C_bar)|)
lmiterm([-1 1 1 Y], 1,1); % Y>0
lmiterm([-1 1 2 Y], 1,sqrt(1-lambda)*A); %sqrt(1-lmd)*(YA)
lmiterm([-1 1 2 0], sqrt(1-lambda)*K*C); %sqrt(1-lmd)*(KC)
lmiterm([-1 1 3 Y], 1,sqrt(lambda)*Ab); %sqrt(lmd)*(YA_bar)
lmiterm([-1 1 3 0], sqrt(lambda)*Kb*cb); %sqrt(lmd)*(K_bar C_bar)
%%
%row 2 (|Y 0|)
lmiterm([-1 2 2 Y], 1,1); %Y>0
lmiterm([-1 2 3 0],zeros(4,4)); %4X4 block of zeros
%%
%row 3 (| Y |)
lmiterm([-1 3 3 Y], 1,1); %Y>0
%%
% defining 2nd lmi (Y<I ) (ignoring this LMI is feasible)
lmiterm([2 1 1 Y],1,1); %Y < ...
lmiterm([-2 1 1 0],eye(4)); % ... < I
%%
syslmis=getlmis ;
[tmin,Yfes] = feasp(syslmis);
Y=dec2mat(syslmis,Yfes,Y) ;
Y1(:,:,k)=Y;
K1(:,:,k)=K;
Kb1(:,:,k)=Kb;
L(:,k)=lambda;
%%
a=Y1(:,:,i);
b=Y1(:,:,i)*A+(K1(:,:,i)*C);
c=Y1(:,:,i)*Ab+(Kb1(:,:,i)*cb);
D=[a sqrt(1-L(:,i))*b sqrt(L(:,i))*c;
sqrt(1-L(:,i))*b' a zeros(4,4);
sqrt(L(:,i))*c' zeros(4,4) a];
%%
[R1,p1] = chol(D); %p1=0 implies D>0
[R2,p2] = chol(Y); %p2=0 implies Y>0
[p1,p2]
if(p1==0 && p2==0)
display('__________________________________positive definite____________________________________________')
dummy(:,k)=k ; %for picking lamda from L with index in dummy for wich D>0 & Y>0
lmd(:,k)=lambda;
end
if(p1~=0 || p2~=0)
dummy(:,k)=0;
% lmd(:,k)=-1;s
display('__________________________________not positive definite________________________________________')
end
lambda=lambda+0.01;
k=k+1;
display('_______________________________________________________________________________________________')
end
display(' all lambdas for which Y>0 and D(Y)>0')
lmd
0 comentarios
Respuestas (1)
Waseem Abbasi
el 3 de Jul. de 2019
I think as far LMI are concerned its better to use Yalimp toolbox as it solve the LMI problem quite effeciently and easily.
0 comentarios
Ver también
Categorías
Más información sobre Linear Matrix Inequalities en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!