MATLAB-LMI工具箱学习笔记

用LMI工具箱描述一个线性矩阵不等式系统

1、标准格式

代码 注解
setlmis([]) 定义一个矩阵不等式系统
X=lmivar(type,struct) 定义一个矩阵变量
lmiterm([1 1 1 X], 1, 1) 描述某个LMI不等式的某一项
lmisys=getlmis 矩阵不等式系统定义完毕

2、lmivar函数用法

X=lmivar(type,struct) 用于定义矩阵变量

①type=1----------定义对称块对角结构矩阵变量

就是形如: X = ( D 1 0 ⋯ 0 0 D 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ D r ) X= \begin{pmatrix} D_{1} & 0 & \cdots & 0\\ 0 & D_{2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & D_{r} \end{pmatrix} X=D1000D2000Dr
如果 D 1 D_{1} D1是一个满的5x5对称矩阵, D 2 D_{2} D2 D r D_{r} Dr分别是一个1x1、3x3数量矩阵,则需要定义为: X = l m i v a r ( 1 , [ 5    1 ; 1    0 ; . . . ; 3    0 ] ) X=lmivar(1,[5~~1;1~~0; ...;3~~0]) X=lmivar(1,[5  1;1  0;...;3  0])
其中,1代表 D 1 D_{1} D1是一个满的对称矩阵,0代表 D 2 D_{2} D2 D r D_{r} Dr是数量矩阵,-1代表是一个零矩阵,前面的数字则代表维度是几x几

②type=2----------定义长方形结构矩阵变量

struct=[m,n]表示矩阵的维度。
例如 X = l m i v a r ( 2 , [ 2    4 ] ) X=lmivar(2,[2~~4]) X=lmivar(2,[2  4])定义了一个2x4的矩阵变量X

③type=3----------定义其它结构矩阵变量

暂不考虑此类情况

3、lmiterm函数用法

举例: X = ( A T X + X A + C T S C X B B T X − S ) < 0 X= \begin{pmatrix} A^TX+XA+C^TSC & XB\\ B^TX & -S\end{pmatrix}<0 X=(ATX+XA+CTSCBTXXBS)<0 X > 0 X>0 X>0 S > I S>I S>I
以上有三个LMI不等式,需要分别描述。

①第一个不等式描述为:

l m i t e r m ( [ 1    1    1    X ] ,   1 ,   A ,   ′ s ′ ) lmiterm([1~~1~~1~~X],~1,~A,~'s') lmiterm([1  1  1  X], 1, A, s) l m i t e r m ( [ 1    1    1    S ] ,   C ′ ,   C ) lmiterm([1~~1~~1~~S],~C',~C) lmiterm([1  1  1  S], C, C) l m i t e r m ( [ 1    1    2    X ] ,   1 ,   B ) lmiterm([1~~1~~2~~X],~1,~B) lmiterm([1  1  2  X], 1, B) l m i t e r m ( [ 1    2    2    S ] ,   − 1 ,   1 ) lmiterm([1~~2~~2~~S],~-1,~1) lmiterm([1  2  2  S], 1, 1)
中括号里第一个数字代表第几个LMI不等式,正代表在不等号的小于号左边,负代表在不等号的小于号右边;第二、三个数字代表矩阵的第几行第几列,第四个变量代表所描述的变量,中括号后面的两个数字或矩阵代表变量的左系数和右系数,最后一个s代表转置的意思,是可选项

因此,第一句代码代表:第一个LMI不等式第一行第一列的XA+(XA)’;第二句代码代表:第一个LMI不等式第一行第一列的C’SC;第三句代码代表:第一个LMI不等式第一行第二列的XB;第四句代码代表:第一个LMI不等式第二行第二列的-S。

②第二个不等式描述为:

l m i t e r m ( [ − 2    1    1    X ] ,   1 ,   1 ) lmiterm([-2~~1~~1~~X],~1,~1) lmiterm([2  1  1  X], 1, 1)
这是第二个不等式,所以中括号第一个数字是2,同时由于X在小于号的右边,所以用-2。

③第三个不等式描述为:

l m i t e r m ( [ − 3    1    1    S ] ,   1 ,   1 ) lmiterm([-3~~1~~1~~S],~1,~1) lmiterm([3  1  1  S], 1, 1) l m i t e r m ( [ 3    1    1    0 ] ,   1 ) lmiterm([3~~1~~1~~0],~1) lmiterm([3  1  1  0], 1)
这是第三个不等式,所以中括号第一个数字是3,同时由于S在小于号的右边,所以用-3。因此,第一句代码代表:第三个LMI不等式小于号右边的S;第二句代码代表:第三个LMI不等式小于号左边的单位矩阵。

猜你喜欢

转载自blog.csdn.net/weixin_45454343/article/details/114220872