如题,LMI中要求对角线的矩阵必须是方阵才能求解,可是我要求的矩阵不是方阵怎么办?
问题如图1.
Z=[98.235;50.862;49.144;48.756;25.397;25.514;75.375];
A=[1 -1 -1 0 0 0 0;0 0 1 -1 0 0 0;0 1 0 0 -1 -1 0;0 0 0 1 1 0 -1];
e1=[0.5;0.5;0.5;0.5;0.5;0.5;0.5];
e2=[0.4;0.4;0.4;0.4;0.4;0.4;0.4];
r1=[0.08;0.08;0.08;0.08;0.08;0.08;0.08];
r2=[0.06;0.06;0.06;0.06;0.06;0.06;0.06];
A为4X7矩阵;X,Z,e1,e2,r1,r2均为7x1矩阵
代码如下:
Z1=z-e1; Z2=-(z+e2);
setlmis([]);
X=lmivar(2,[7 1]);
lmiterm([1 1 1 X],-1,1);
lmiterm([1 1 1 0], Z1);
lmiterm([2 1 1 X],1,1);
lmiterm([2 1 1 0],Z2);
lmiterm([3 1 1 X], A,1);
lmiterm([3 1 1 0],-r1);
lmiterm([4 1 1 X],-A,1);
lmiterm([4 1 1 0],r2);
lmis=getlmis;
运行后如下错误:
lmiterm([1 1 1 X],-1,1);
lhs of LMI #1, block (1,1): terms in diagonal blocks must be square
Matlab要求每一个不等式必须是方阵,即X,AX也必须是方阵。怎么办?不可能每次都正好是方阵呀。
如果转化成图片2再求解,
程序如下
Z1=z-e1; Z2=-(z+e2);
setlmis([]);
X=lmivar(2,[7 1]);
lmiterm([1 1 1 X],-1,1);
lmiterm([1 1 1 0],Z1);
lmiterm([1 2 2 X],1,1);
lmiterm([1 2 2 0],Z2);
lmiterm([1 3 3 X], A,1);
lmiterm([1 3 3 0],r1);
lmiterm([1 4 4 X],A,-1);
lmiterm([1 4 4 0],r2);
lmis=getlmis;
还是出现同样的问题。
LMI要求不等式斜对角线上的矩阵为方阵,即nxn矩阵。而我这里要求解的不等式矩阵(1)-(4)都不是方阵怎么办?要怎么处理?
用fmincon函数可以解,但是就是想学会使用LMI函数,如果都是方阵才可以解,那岂不是LMI这个工具箱很局限?
![100RMB求MATLAB简单的LMI问题!]()
111111.png
![100RMB求MATLAB简单的LMI问题!-1]()
22222.png |