matlab-LMI工具箱

  • Post author:
  • Post category:其他




前言


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 版权协议,转载请附上原文出处链接和本声明。