matlab lmi 定义一个任意方阵,matlab中lmi应用说明 -凯发k8官方网
我们要实现的就利用lmi进行求解。
首先我们要用setlmis([])命令初始化一个lmi系统。
接下来,我们就要设定矩阵变量了。采用函数为lmivar
语法:x = lmivar(type,struct)
type=1: 定义块对角的对称矩阵。每一个对角块或者是全矩阵,标量,或者是零阵。
如果x有r个对角块,那么后面这个struct就应该是一个rx2阶的的矩阵,在此矩阵中,struct(r,1)表示第r个块的大小,struct(r,2) 表示第r个块的类型<1--全矩阵,0--标量,-1--零阵)。
比如一个矩阵有两个对角块,其中一个是2x2的全对称矩阵,第二个是1x1的一个标量,那么该矩阵变量应该表示为x = lmivar(1, [2 1; 1 0]) 。
type=2: mxn阶的矩阵,只需要写作struct = [m,n]即可。
type=3: 其它类型。针对类型3,x的每一个条目(each entry of x)被定义为0或者是 (-)xn,此处xn代表了第n个决策变量。
那么针对我们的例子,我们如此定义变量:
% q is a symmetric matrix, has a block size of 2 and this block is symmetric
q = lmivar(1, [2 1]);
% s1 a symmeric matrix, size 2
s1 = lmivar(1, [2 1]);
% s2 is 1 by 1 matrix
s2 = lmivar(1, [1 0]);
% type of 2, size 1 by 2
m = lmivar(2, [1 2]);
定义完成变量之后,我们就该用lmiterm来描述lmi中的每一个项了。matlab 的官方文档提示我们,如果要描述一个lmi只需要描述上三角或者下三角元素就可以了,否则会描述成另一个lmi。
when describing an lmi with several blocks, remember to specify only the terms in the blocks on or below the diagonal (or equivalently, only the terms in blocks on or above the diagonal).
语法为:lmiterm(termid,a,b,flag)
termid是一个四维整数向量,来表示该项的位置和包含了哪些矩阵变量。
termid(1)可以为 p或者-p, p代表了这个项位于第p个线性矩阵不等式的左边,-p代表了这个项位于第p个线性矩阵不等式的右边。注意:按照惯例来讲,左边通常指较小的那边。termid(2:3):
1、对于外部变量来说,取值为[0,0];
2、对于左边或者右边的内部变量来说,如果该项在(i,j)位置,取值[i,j]
termid(4):
1、对于外部变量,取值为0
2、对于a*x*b,取值x
3、对于a*x'*b,取值-x
总结
以上是凯发k8官方网为你收集整理的matlab lmi 定义一个任意方阵,matlab中lmi应用说明的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: