用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=⎝⎜⎜⎜⎛D10⋮00D2⋮0⋯⋯⋱⋯00⋮Dr⎠⎟⎟⎟⎞
如果
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----------定义其它结构矩阵变量
当我们的矩阵不等式中存在 T r a c e ( Z ) < γ Trace(Z)<\gamma Trace(Z)<γ时,常采用这种定义结构来表示Z矩阵。
[Z11,~,sZ11]=lmivar(1,[1 1]); % Z11
[Z12,~,sZ12]=lmivar(1,[1 1]); % Z12
[Z13,~,sZ13]=lmivar(1,[1 1]); % Z13
[Z22,~,sZ22]=lmivar(1,[1 1]); % Z22
[Z23,~,sZ23]=lmivar(1,[1 1]); % Z23
[Z33,~,sZ33]=lmivar(1,[1 1]); % Z33
Z=lmivar(3,[sZ11, sZ12, sZ13;
sZ12, sZ22, sZ23;
sZ13, sZ23, sZ33;]);
我们将Z矩阵的每个元素定义为决策变量,并利用type=3类型定义Z矩阵,其中sZ11代表Z11是第几个决策变量,Z矩阵相应的元素是哪个决策变量就输入决策变量的编号,0则输入0。
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+CTSCBTXXB−S)<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不等式小于号左边的单位矩阵。
本文是作者在日常学习生活中所作,难免有遗漏或错误,遇到问题的读者请点击给我写信向我的邮箱反馈,不胜感激。