前言
H无穷控制中,常常需要利用线性矩阵不等式(LMI)去求解最后的控制律,本篇主要介绍matlab中关于LMI工具箱的一些常见用法。
LMI工具箱
1.首先初始化一个LMI系统
setlmis([]);
2.LMI中,矩阵变量由lmivar来定义,设一矩阵X
X=lmivar(type, struct);
– type = 1 为对角块对称矩阵
例:
X = lmivar(1, [2 1]); X为2x2的满阵
X = lmivar(1, [1 0]); X为1x1的标量
– type = 2 为 m*n 的任意矩阵
例:
X = lmivar(2, [2 6]); X为2x6的矩阵
3.LMI中,不等式由lmiterm来描述
lmiterm(termID, A, B, flag);
termID为四位整数向量,即termID=[a b c d]
termID(a):
termID(b, c):表示[b, c],第b行第c列
termID(d):“0” 对应外部量
“X”对应AXB,X是矩阵变量,A和B是已知设定好的矩阵
“-X”对应AYB,Y表示X的转置
flag通常是“1”,当表示AXB + (AXB的转置)时,flag = ‘ s ’
例子:
图中,A,B1,B2,C1,D11,D12为已知矩阵,X和Y是未知矩阵,γ为我们最终想求解的量。代码中以“r1”表示
X = lmivar(1,[6 1]);
Y = lmivar(2,[2 6]);
r1= lmivar(1,[1 0]);
lmiterm([1 1 1 X],A,1,'s');
lmiterm([1 1 1 Y],B2,1,'s');
lmiterm([1 2 1 0],B1');
lmiterm([1 2 2 0],-1);
lmiterm([1 3 1 X],C1,1);
lmiterm([1 3 1 Y],D12,1);
lmiterm([1 3 2 0],D11);
lmiterm([1 3 3 r1],-1,1);%r1=γ
lmiterm([-2 1 1 X],1,1);
ps:对于LMI,只需要写一个上三角或者下三角,因为它是转置对称的。
4.最后一步,封装好需要求解的LMI
lmisys = getlmis;
LMI的求解器(solver)有feasp、mincx和gevp
版权声明:本文为mercurialmush原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。