LMI(线性矩阵不等式)工具箱介绍学习
线性矩阵不等式

则应用引理 2.1.2,可以将矩阵不等式(2.1.6)的可行性问题转化成一个等价的矩阵不等 式
AT P PA Q PB
BT P
R0
(2.1.7)
的可行性问题,而后者是一个关于矩阵变量P的线性矩阵不等式。
2.3一些标准的线性矩阵不等式问题
例2.1.1 稳定性问题 考虑线性自治系统
x(t) Ax(t)
setlmis([]) X=lmivar(1,[61]) S=lmivar(1,[20;21]) ﹪lst LMI lmiterm([111x],1,A,’s’) lmiterm([111s],c’,c) lmiterm([112x],1,B) lmiterm([122s],-1,1) ﹪2nd LMI lmiterm([-211X],1,1) ﹪3rd LMI lmiterm([-311s],1,1) lmiterm([3110],1) lmisys=getlmis
m 是一组给定的实对称矩阵,(2.1.1)中的不等号“<”指的是矩阵 F(x)是负定的,即对所有
非零的向量 v Rm , vT F (x)v0 或者 F(x)的最大特征值小于零。
在许多系统与控制问题问题中,问题的变量是以矩阵的形式出现的。例如 Lyapunov 矩阵 不等式:
F ( X ) AT X XA Q0
lmivar 函数lmivar用来描述出现在线性矩阵不等式系
统中的矩阵变量,每一次只能描述一个矩阵变 量。矩阵变量的描述包括该矩阵变量的结构。 该函数的一般表达是:
X=lmivar(type,struct) 这一函数定义了一个新的矩阵变量X。函数中
的第一个输入量type确定了矩阵变量X的类型, 第二个输入量struct进一步根据变量X的类型给 出该变量的结构。变量的类型分成三类:
第14章 LMI工具箱的应用

min
x
s.t. C ( x) D( x) 0 B( x) A( x) B ( x)
相应的求解器为gevp。其一般表达式如下: [Lopt,xopt]=gevp(lmisys,nlfc,options,linit,xinit,target) nlcf表示含 不等式的个数,必须写正确。 target时,迭代结束。
clc clear A=[-1 -2 1;3 2 1;1 -2 -1]; B=[1;0;1]; Q=[1 -1 0;-1 -3 -12;0 -12 -36]; c=[1 0 1 0 0 1]; setlmis([]); X=lmivar(1,[3,1]); BR=newlmi; lmiterm([BR 1 1 X],A',1,'s'); lmiterm([BR 1 1 0],Q); lmiterm([BR 1 2 X],1,B); lmiterm([BR 2 2 0],-1);
X= -6.3542 -5.8895 2.2046 -5.8895 -6.2855 2.2201 2.2046 2.2201 -6.0771 copt = -18.7167 xopt = -6.3542 -5.8895 -6.2855 2.2046 2.2201 -6.0771
3)广义特征值的最小化问题
2)具有线性矩阵不等式约束的线性目标函数的最小化问题
min c x
x
s.t
A( x) B( x)
相应的求解器是mincx,其一般形式为: [copt,xopt]=mincx(lmisys,c,options,xinit,target) 返回目标函数cTx的最优解copt和决策变量的最优解xopt。 而最优解xopt可以从dec2mat中得到。 cTx<=target,求解过程停止。 options设置迭代次数、精度等。 xinit是xopt 的一个初始猜测。 mincx中后面三个输入可省略,采用默认值。
Matlab工具箱解LMI 线性矩阵不等式详解

• mincx求解器
• 第一步:建立矩阵不等式,变量命名为X,不 等式组命名为LMIs。
• 第二步:将目标函数Trace(X)写成cTX形式。用 函数mat2dec建立c。
• Mat2dec的调用格式:定义与X同阶的矩阵W, mat2dec(LMIs, W)返回的是W与X对应元素乘 积的和。(延申,257页,defcx等)
提取结果和验证结果:evallmi和 showlmi
• 用法: • EVALSYS = evallmi(LMISYS,DECVARS):计算出矩阵
不等式中所有决策变量项的值(矩阵形式?); • [LHS,RHS]=showlmi(LMISYS,N):给出第N个线性矩
阵不等式的左边和右边的矩阵值。
• lmiterm([-1 1 1 0],0); • lmiterm([-1 2 1 0],B'*P1); • lmiterm([-1 2 2 0],P3*B+B'*P2);
• lmis=getlmis;
• 四、观察所建立的矩阵不等式的信息
• 使用函数lmiinfo(lmisys),lmibr(lmisys), matnbr(lmisys)可以提取所建立的不等式 lmisys的信息。
其它命令
• 1、用于求个数的命令: • lminbr(lmisys):给出系统中线性矩阵不等式的个数;
matnbr(lmisys):给出系统中矩阵变量的个数; decnbr(lmisys):给出系统中决策变量的个数。 • 2、用于查看相关信息的命令: • lmiinfo(LMISYS):给出线性矩阵不等式系统的信息; DECX = decinfo(LMISYS,XID) :给出决策变量和矩阵变 量之间关系的一些详细信息。
MATLAB 主要工具箱简介

MATLAB 主要工具箱简介1.控制系统工具箱控制领域的计算机辅助设计自产生以来就一直受到控制界的重视。
而MATLAB 正是控制领域进行计算及辅助设计的一种非常好的工具语言。
MATLAB 的控制系统工具箱(Control System Toolbox)为用户提供了许多控制领域的专用函数,实际上,这个工具箱就是一个关于控制系统的算法的集合。
通过使用这些专用函数,月户可以方便地实现控制系统的部分应用。
此外,使用MATLAB 的控制系统工具箱还可以方便地进行模型间的转换。
下面列出了该工具箱在控制领域的主要应用:(1)连续系统设计和离散系统设计;(2)传递函数和状态空间;(3)模型转换;(4)频域响应;(5)时域响应;(6)根轨迹和极点配置。
2.小波工具箱小波工具箱(Wavelet Toolbox)在信号处理领域的主要应用包括:(1)基于小波的分析和综合;(2)图形界面和命令行接口;(3)连续和离散小波变换及小波包;(4)一维、二维小波;(5)自适应去噪和压缩。
3.模糊逻辑工具箱模糊逻辑工具箱(FuzzyLogicToolbox)是MATLAB 用于解决模糊逻辑问题的工具箱。
其主要应用包括:(1)友好的交互设计界面;(2)自适应神经——模糊学习、聚类以及Sugeno 推理;(3)支持SIMULINK 动态仿真;(4)可生成C 语言源代码用于实时应用。
4.神经网络工具箱神经网络工具箱(NeuralNetworkToolbox)的主要应用包括:(1)BP 网络;(2)Hopfield,Kohonen 网络:(3)径向基函数网络:(4)竞争、线性、Sigmoidal 等传递函数;(5)前馈、递归等网络结构;(6)性能分析及应用;(7)感知器:(8)自组织网络。
5.通信工具箱通信工具箱(Communication Toolbox)提供了100 多个函数和150 多个SIMULINK 模块用于通信系统的仿真和分析,其主要应用包括:(1)信号编码;(2)调制解调;(3)滤波器和均衡器设计;(4)通道模型;(5)同步:(6)多路访问;(7)错误控制编码。
LMI(线性矩阵不等式)工具箱介绍学习

LMI:Linear Matrix Inequality,就是线性矩阵不等式。
在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。
对于LMI Lab,其中有三种求解器(solver): feasp,mincx和gevp。
每个求解器针对不同的问题:feasp:解决可行性问题(feasibility problem),例如:A(x)<B(x)。
mincx:在线性矩阵不等式的限制下解决最小化问题(Minimization of a linear objective under LMI constraints),例如最小化c'x,在限制条件A(x) < B(x)下。
gevp:解决广义特征值最小化问题。
例如:最小化lambda,在0<B(x),A(x)<lamba*B(x)限制条件下。
要解决一个LMI问题,首要的就是要把线性矩阵不等式表示出来。
对于以下类型的任意的LMI问题N' * L(X1, . . . , XK) * N < M' * R(X1, . . . , XK) * M其中X1, . . . , XK是结构已经事先确定的矩阵变量。
左侧和右侧的外部因子(outer factors)N和M是给定的具有相同维数的矩阵。
左侧和右侧的内部因子(inner factors)L(.)和R(.)是具有相同结构的对称块矩阵。
每一个块由X1, . . . , XK以及它们的转置组合而成形成的。
解决LMI问题的步骤有两个:1、定义维数以及每一个矩阵的结构,也就是定义X1, . . . , XK。
2、描述每一个LMI的每一项内容(Describe the term content of each LMI)此处介绍两个术语:矩阵变量(Matrix Variables):例如你要求解X满足A(x)<B(x),那么X就叫做矩阵变量。
Matlab LMI工具箱在教学和科研中的应用

第4 期
电气电子教学学报
J OUR NAL OF E E E
Vo . 4 No 4 13 . Au . 01 g2 2
21 02年 8月
MalbL t MI a 工具 箱 在 教 学 和 科研 中的应 用
江 兵 , 建 国, 郝 潘 平
( 合肥 工业 大学 电气 与 自动化 工程 学院 , 安徽 舍肥 200 ) 30 9
统 问题 。
1 系 统可行 性 问题 )
“
识、 电力系统和经济管理等诸多领域 的一个强大 的 设计 工具 。由于这 些领 域的许 多 问题 都 可 以转化 为
一
寻找一个 xR ( e 或等价为具有给定结构的矩 阵 瓦 )使 得满 足线性 矩 阵不等 式 系统 A( < , )
,
个 L 系统 的可行 性 问题 , 者是 一 个 具 有 L MI 或 MI
B( , )相应 的求 解 器 是 fap es。求 解 器 fap是 通过 es 求 解如 下的一 个辅 助 凸优 化 问题来求 解 线性矩 阵 不 等 式 系统 的 可行性 问题 的 。
mi L 来 解 决这 些 问题 已经 应 MI 成 为这些 领域 中的一 大 研究 热 点 。在 我校 “ 棒 控 鲁 制 ” “ 络 控 制 系 统 ” 课 程 教 学 和科 研 中 ,MI 和 网 等 L 工 具箱 正发挥 着越 来越 大 的作 用 0
St ( ..A )一B ) ( ≤I
1 L MI求解 器 简 介
L 工具 箱提供 的求 解器 用来求 解 以下 三类 系 MI
这个 凸优化 问题 的全局 最优值 用 tn a r表示 , 为 i 作 求 解器 fa es 出的第一 个分 量 。如果 t < , 系 p输 0则
matlab lmi工具箱使用实例

MATLAB(Matrix Laboratory)是一款广泛应用于科学计算和工程领域的专业软件,其功能强大、灵活性高,并且具有丰富的工具箱支持。
LMI(Linear Matrix Inequality)工具箱是MATLAB中的一种工具箱,用于解决线性矩阵不等式相关的问题。
本文将介绍LMI工具箱的基本使用方法,并结合具体实例进行详细讲解。
一、LMI工具箱的安装1.确保已经安装了MATLAB软件,并且软件版本是R2015b及以上版本。
只有在这些版本中,LMI工具箱才会被自动安装。
2.在MATLAB的命令行中输入“ver”,可以查看当前安装的工具箱列表,确认LMI工具箱是否已经成功安装。
二、LMI工具箱的基本功能1. LMI工具箱主要用于解决线性矩阵不等式问题,例如矩阵的稳定性分析、最优控制问题等。
2. LMI工具箱提供了一系列的函数和工具,能够方便地构建和求解线性矩阵不等式问题,同时也包括了一些经典的稳定性分析方法和控制器设计方法。
三、LMI工具箱的基本使用方法1. 定义变量:在使用LMI工具箱时,首先需要定义相关的变量。
可以使用“sdpvar”函数来定义实数变量,使用“sdpvar”函数和“size”函数可以定义矩阵变量。
2. 构建约束:在定义变量之后,需要构建线性矩阵不等式的约束条件。
可以使用“sdpvar”变量的线性组合来构建约束条件,使用“>=”来表示大于等于关系。
3. 求解问题:构建好约束条件之后,即可使用“optimize”函数来求解线性矩阵不等式问题。
在求解问题时,可以指定优化的目标函数和一些额外的约束条件。
四、LMI工具箱的实例应用下面我们通过一个具体的实例来演示LMI工具箱的使用方法。
假设有一个线性时不变系统,其状态方程可以表示为:$\dot{x} = Ax + Bu$其中,A和B分别为系统的状态矩阵和输入矩阵。
我们希望设计一个状态反馈控制器K,使得系统在闭环下能够保持稳定。
yalmip语法

yalmip语法YALMIP(Yet Another LMI Parser)是一种用于建模和求解优化问题的MATLAB工具箱。
它提供了一种简单而强大的语法,使用户能够轻松地定义线性矩阵不等式(LMI)和其他优化问题。
本文将介绍YALMIP的语法和一些常用的功能。
YALMIP的语法非常直观和易于理解。
用户只需使用MATLAB语言编写优化问题的数学表达式,然后使用YALMIP提供的函数将其转化为可求解的形式。
YALMIP支持各种类型的优化问题,包括线性规划、二次规划、半定规划等。
在YALMIP中,用户可以使用变量来表示问题中的未知量。
变量可以是标量、向量、矩阵或张量。
用户可以使用YALMIP提供的函数来定义变量的类型、大小和约束条件。
例如,用户可以使用sdpvar函数定义一个实数的标量变量:```matlabx = sdpvar(1, 1, 'real');```用户还可以使用矩阵变量来表示线性矩阵不等式(LMI)。
例如,用户可以使用sdpvar函数定义一个对称矩阵变量:```matlabP = sdpvar(n, n, 'symmetric');```在定义了变量之后,用户可以使用YALMIP提供的函数来构建优化问题的约束条件和目标函数。
例如,用户可以使用<=运算符来定义一个线性矩阵不等式约束:```matlabF = [A'*P + P*A <= -Q, P >= eye(n)];```其中,A、Q和n分别表示问题中的系数矩阵、常数矩阵和维度。
用户还可以使用YALMIP提供的函数来定义目标函数。
例如,用户可以使用trace函数来定义一个迹范数最小化的目标函数:```matlabobj = trace(P);```在定义了约束条件和目标函数之后,用户可以使用optimize函数来求解优化问题。
optimize函数将约束条件和目标函数作为输入参数,并返回最优解和最优值。
LMI工具箱介绍

L M IL M IL M IL M I0NN x x L L L x L 110)( (1)NL L L ,,,10Nx x ,,1T1],,[N x x x N R11),,(),,(11n n X X R X X L1Lyapunov)(L )(R nX X ,,10XA X A T (2)21X221A22X3221x x x x X X321x x x X100001100001321x x x XA20400043300222321x x x (3) 21Lyapunov23323A n2)1(n n L M ILyapunov23XH0NID B D ICX BXC XA X A N TTTT TNDCBAT XXnnR RNI D B D I CX B XC XA X A X L TT TT ),(X 11),(X L ),(X L),(X L X),(X L BDIXA ,A.2L M IM X X R M NX X L N ),,(),,(1T 1T K KKX X ,,1N M)(L )(R 0XXX1KX X ,,12l m i s y s l m i s y sL M Il m i de m1446B A IC G 1)()(s s (4)/D543211000000000d d d d d d D(5)5D1)(s up 1DDG jX66R DD ST 44R0S XB XB SC C XA XA T T T (6) 0X (7) I S(8)l m i var l m it er m 6~8setlmis([])X=lmivar(1,[6 1]) S=lmivar(1,[2 0;2 1])% 1st LMIlmiterm([1 1 1 X],1,A,’s’) lmiterm([1 1 1 S],C’,C) lmiterm([1 1 2 X],1,B) lmiterm([1 2 2 S],-1,1) % 2nd LMI lmiterm([-2 1 1 X],1,1)% 3rd LMI lmiterm([-3 1 1 S],1,1) lmiterm([3 1 1 0],1) lmisys=getlmisl m i varX l m it er mge tl m i sl m i s ys l m i s y sSs et l m i sget l m i s s e tl m i s ge tl m i ssetlmis([])l m i s osetlmis(lmiso) lmisys=getlmisl m i s y sl m i varl m i varX=lmivar(type,struct)X Xt ype Xs t ruc tX Type =1rD D D 0000021s t ruc tjD 2r in 10),(n m miD 11n i D 0n iD 1niD Type =2s t ruc t = ),(n m Type =3X0nx s t ruc tnx nXs t ruc tnn x j i n x j i n j i j i ),(,),(,0),(,0),(X X X 221X X3X1X 332X 42 2213I X 0000055122I 22l m i varsetlmis([])X1=lmivar(1,[3 1]) X2=lmivar(2,[2 4]) X3=lmivar(1,[5 1;1 0;2 0])l m i term1 23X A T S CC T P X QXPQ 3L M Il m it er m0SXB XB S CC XA X A TT Tlmiterm([1 1 1 X],1,A,’s’) lmiterm([1 1 1 S],C’,C) lmiterm([1 1 2 X],1,B) lmiterm([1 2 2 S],-1,1)XB S CC XA XA T T S11mm -m m23[1 1 2 1]1223k k-k 1kX k X T k X X 12S l m it er m234's 'P X Q QP X T1 2l m it er m's 'l m it er mXA X A T3I13I S lmiterm([-3 1 1 S],1,1) lmiterm([3 1 1 0],1)l m i varnew l m il m it er m1setlmis([]) X=lmivar(1,[6 1]) S=lmivar(1,[2 0;2 1])BRL=newlmilmiterm([BRL 1 1 X],1,A,’s’) lmiterm([BRL 1 1 S],C’,C) lmiterm([BRL 1 2 X],1,B) lmiterm([BRL 2 2 S],-1,1) Xpos=newlmi lmiterm([-Xpos 1 1 X],1,1)Slmi=newlmi lmiterm([-Slmi 1 1 S],1,1) lmiterm([Slmi 1 1 0],1) lmisys=getlmisX SX BR L Xpo s Sl m i123-Xpo s2-XSXl m i e di tl m i ed itlmiedit1SRGl m i vars t ruc t2M ATLA B0IXB XBXA X A T T[A’*X+X*A X*B;B’*X -1]<0X Xl m i var /l m it er m v i ew co mm and sde s cr i be…l m i var /l m it er mM ATLA BM ATLA B s avel oadl m i var /l m it er m readde s cr i be t he m a t r i x var i ab l e s de s cr i be t he L M I s …l m i var /l m it er m wr it e crea t eM ATLA B m y l m i M ATLA B m y l m i m y l m il m it er m01l m i ed itl m it er m l m i ed it X (A*X+B)’*C+C’*(A*X+B)(A+B)’*X+X’*(A+B)l m it er m l m it er m1new l m i l m i varA.1l m i ed it1A.1l m i ed itA.3L M I l m ii nfo l m i nbr m a t nbrl m iin fol m ii nfol m ii nfolmiinfo(lmisys)l m i s y s ge tl m i sl m inb r mat nb rmatnbr(lmisys)A.4L M I xkX X ,,1NR x kX X ,,1)()(x B x Afea s px c xT m i ns .t . )()(x B x Am i ncxxm i ns .t . )()(x D x C (9))(x B 0(10) )()(x B x A (11)gevpfea s pfea s p[tmin,xfeas]=feasp(lmisys,options,target)fea s pt m i ns .t . I x B x A t )()( l m i s y st m i nfea s pt m i n <0l m i s y sl m i s y s fea s pxfea sdec2m a tl m i s y s fea s pt arge t t m i n t m i n <t arge tt arge t =0fea s pop ti on s5op ti on s (1)op ti on s (2)100 op ti on s (3)op ti on s (3)=R212R x N i ixfea sR910Rxop ti on s (4)J1%10Jt op ti on s (5)op ti on s (5)=1op ti on s (5)=0op ti on s (i )3IPP01T 1P A PA 1202T 2P A PA 13 03T 3P A P A 14.27.09.04.1,7.23.15.18.0,3121321A A A fea s psetlmis([]) P=lmivar(1,[2 1])lmiterm([1 1 1 P],1,A1,’s’) % LMI #1 lmiterm([2 1 1 P],1,A2,’s’) % LMI #2 lmiterm([3 1 1 P],1,A3,’s’) % LMI #3 lmiterm([-4 1 1 P],1,1) % LMI #4: P lmiterm([4 1 1 0],1)% LMI #4: Ilmis=getlmisfea s p[tmin,xfeas]=feasp(lmis)t m i n l m i sdec2m a t1363.3PP=dec2mat(lmis,xfeas,P)1.1554.1264.1268.270PPF roben i u s10t m i n1[tmin,xfeas]=feasp(lmis,[0,0,10,0,0],-1)t m i n1745.1P6912.9)(m axPm in cxm i ncx[copt,xopt]=mincx(lmisys,c,options,xinit,target)l m i s y s cxdefcxcm i ncxcop txop tdec2m a txop tx c Tm i ncx l m i s y sc x i n it xop tm a t 2decx i n itx i n itkX X ,,1t arge t t arge txxc T op ti on s 5op ti on s (1)cop t210op ti on s (2)100op ti on s (3)fea s pop ti on s (4)5JJx c T op ti on s (5)op ti on s (5)=1op ti on s (5)=0op ti on s (i)m i ncx4)(Trace m i n X Xs .t .0Q X XBB XA XA T T X36121231011,101,121123121Q B AS chur)(Trace m i n X Xs .t .0IXB XB Q XA XA TT )(Trace X Xm i ncxm i ncx1setlmis([])X=lmivar(1,[3 1]) % Xlmiterm([1 1 1 X],1,A,’s’)lmiterm([1 1 1 0],Q)lmiterm([1 2 2 0],-1)lmiterm([1 2 1 X],B’,1)LMIs=getlmisTrace X x c T x X2)(c X I Xc=mat2dec(LMIs,eye(3))defcx3m i ncx xop t cop t=c’*xop toptions=[1e-5,0,0,0,0][copt,xopt]=mincx(LMIs,c,options)1e-5cop tm i ncxSolver for linear objective minimization under LMI constraints Iterations : Best objective value so far12 -8.5114763 -13.063640*** new lower bound: -34.0239784 -15.768450*** new lower bound: -25.0056045 -17.123012*** new lower bound: -21.3067816 -17.882558*** new lower bound: -19.8194717 -18.339853*** new lower bound: -19.189417 8 -18.552558 *** new lower bound: -18.919668 9 -18.646811 *** new lower bound: -18.803708 10 -18.687324 *** new lower bound: -18.753903 11 -18.705715 *** new lower bound: -18.732574 12 -18.712175 *** new lower bound: -18.723491 13 -18.714880 *** new lower bound: -18.719624 14 -18.716094 *** new lower bound: -18.717986 15 -18.716509 *** new lower bound: -18.717297 16 -18.716695 *** new lower bound: -18.716873Result: feasible solution of required accuracy best objective value: -18.716695 guaranteed relative accuracy: 9.50e-006 f-radius saturation: 0.000% of R = 1.00e+009x c T x4m i ncxxop tXopt=dec2mat(LMIs,xopt,X)0771.62201.22046.22201.22855.65.88952046.28895.56.3542op tX gev pgevp[lopt,xopt]=gevp(lmisys,nlfc,options,linit,xinit,target)gevpl op tx xop t dec2m a tl m i s y s 16~88n l fcli n it =),(00x 0x i n it =gevpt arge tx ),(00x ),(00x ),(x t arge top ti on s5op ti on s (1)l op t210op ti on s (2)100op ti on s (3)fea s pop ti on s (4)JJ5op ti on s (5)op ti on s (5)=1op ti on s (5)=0op ti on s (i )gevp)()(x B x A)()(x B x A)(x B 0)(x B 00000)(,)()(11x B x B x BgevpY0000)(),(,)(1x B x B Y Y x A0)(),()(x B x B x Agevp53),3,2,1(),()(itt i x Ax3Lyapunov3)3,2,1(,i i A Px xx T)(VtVd)(d xm i ns.t. P IPP AP A1T1PP AP A2T2PP AP A3T3gevpsetlmis([]);P=lmivar(1,[2 1])lmiterm([1 1 1 0],1) % P>I: Ilmiterm([-1 1 1 P],1,1) % P>I: Plmiterm([2 1 1 P],1,A1,’s’) % LFC #1 (lhs)lmiterm([-2 1 1 P],1,1) % LFC #1 (rhs)lmiterm([3 1 1 P],1,A2,’s’) % LFC #2 (lhs)lmiterm([-3 1 1 P],1,1) % LFC #2 (rhs)lmiterm([4 1 1 P],1,A3,’s’) % LFC #3 (lhs)lmiterm([-4 1 1 P],1,1) % LFC #3 (rhs)lmis=getlmisgevp[alpha,popt]=gevp(lmis,3)a l pha =-0.1220.12264.1835.835.858.5Px m a t 2dec dec2m a tX1X2X3m a t 2dec321X X X xdec=mat2dec(lmisys,X1,X2,X3)l m i s y sl m i s y sm i ncx gevpm a t 2decx i n it321X X X xdecdec2m a tk2X2=dec2mat(lmisys,xdec,2)dec2m a t2l m i varm a t nbrdecnbr dec i nfoA.5L M I eva ll m is how l m i4m i ncxxop tevlmi=evallmi(LMIs,xopt) [lhs,rhs]=showlmi(evlmi,1)xop t1eig(lhs-rhs)ans=-2.0387e-04-3.9333e-05-1.8917e-07-4.6680e+01l h s-rh s xop t1A.6L M I de ll m i de l m var s e t m varDe ll m ide ll m i1l m i s y s Xnewsys=dellmi(lmisys,2)2new s y s12I S32new l m i1BR L Xpo s Sl m i Sl m inewsys=dellmi(lmisys,Xpos)2I Sd e l mvarde l m var0I B W B W XA X A T T TT X X44R42R Wsetlmis([]) X=lmivar(1,[4 1]) % X W=lmivar(2,[2 4]) % Slmiterm([1 1 1 X],1,A,’s’) lmiterm([1 1 1 W],B,1,’s’) lmiterm([1 1 1 0],1) lmisys=getlmisWnewsys=delmvar(lmisys,W)new s y sLyapunov0I XA X A Ts e t m vars etmvars e t m var11G1G D DD ST IS I S2Snewsys=setmvar(lmisys,S,2)2S32S I 2new s y s0IXB XB CC XA XA 22TT T0X I I 2newsys=dellmi(newsys,3) newsys =dellmi(newsys,Slmi) Sl m i new l m i 3 A.7l m i var 123 0n x n x n X X X X n X p p n n x x ,,1p n n x x ,,1X l m i var[X,n,sX]=lmivar(type,struct) n s X X nx x ,,1l m i var 621X X X00 X1X 2X 3223X 1 1X 2Xsetlmis([])[X1,n,sX1]=lmivar(2,[2 3]) [X2,n,sX2]=lmivar(2,[3 2])s X1s X2 1X 2X>>sX1sX1=1 2 3 4 5 6>>sX2sX2= 7 89 10 11 12 s X2(1, 1)=7(1, 1)7 2X 2Type 3X 1X 2X [X,n,sX]=lmivar(3,[sX1,zeros(2);zeros(3),sX2]) X>>sXsX= 1 2 3 0 0 4 5 6 0 0 0 0 0 7 8 0 0 0 9 10 0 0 0 11 12 733X 33Toep li z123212321y y y y y y y y y Y Y 33Y X Y 321n n n n XXsetlmis([]) [X,n]=lmivar(1,[3 1]) [X, n]2n =6Y Y=lmivar(3,n+[1 2 3;2 1 2;3 2 1])Y=lmivar(3,toeplitz(n+[1 2 3])) t oep lit zM ATLA B dec i nfo X Ylmis=getlmis decinfo(lmis,X) ans= 1 2 4 2 3 5 4 5 6decinfo(lmis,Y)ans= 7 8 9 8 7 8 9 8 78Y X Z00,00,00t x t z y x Z Y X tz y x X Y1 setlmis([])[X,n,sX]=lmivar(1,[1 0;1 0]) [Y,n,sY]=lmivar(1,[1 0;1 0])l m i var 3X Y),,,(4321x x x x ),,,(t z y x sX=1 0 0 2sY=3 0 04 l m i var 3Z[Z,n,sZ]=lmivar(3,[0 -sX(1,1);-sY(2,2) 0]) s X(1, 1)s Y(2, 2) 1x 4x 000041t x x x ZHer m iti an m a t r i x)(x L 0)(x L 0))(R e())(I m ())(I m ())(R e(x L x L x L x L X21X X X j 1X 2X A21A A A j 1A 2A 21X X 1221X X X X X21X X j 1221A A A A 21A A A j I X X X X M M H H , 122112211221T 1221X X X X M M M M X X X X M M M M I X X X X 1221 21M M M j 21X X X j i i X M 55C M M1=real(M), M2=imag(M) bigM=[M1 M2;-M2 M1] setlmis([])% declare bigX=[X1 X2;-X2 X1] with X1=X1’ and X2+X2’=0:[X1,n1,sX1]=lmivar(1,[5 1])[X2,n2,sX2]=lmivar(3,skewdec(5,n1)) bigX=lmivar(3,[sX1 sX2;-sX2 sX1])% describe the real counterpart of the complex LMI system: lmiterm([1 1 1 0],1) lmiterm([-1 1 1 bigX],1,1)lmiterm([2 1 1 bigX],bigM’,bigM)lmiterm([-2 1 1 bigX],1,1)lmis=getlmis b i gX =1221X X X X 1s X1n1 1X 1X 2s kewdec s kewdec(5,n1)n1+1, n1+2, ... 2X 5533s X1, s X2b i gX 1X 2Xm in cxx c Tm i ncxx c T x )(Trace X XX uu T u defcx c0T 0)(Trace Px x X X P l m i s y s 0x P X x 0 x0=[1 1] setlmis([])X=lmivar(1,[3 0]) P=lmivar(1,[2 1]) : :lmisys=getlmis 0T 0T )(Trace Px x X x c c n=decnbr(lmisys) c=zeros(n,1) for j=1:n,[Xj,Pj]=defcx(lmisys,j,X,P) c(j)=trace(Xj)+x0’*Pj*x0end 12for c 11j x x X P defcx defcx l m i s y s j X P X j Pj 2X =X j P =Pj j cc=3 1 2 1n=decnbr(LMI system) c=zeros(n,1) for j=1:n, [matrix values]=defcx(LMI system,j, matrix identifiers) c(j)=objective(matrix values) end A.8 系统模型描述)()()()()()(t t t t t t D u C x y B u A x x E (15) E D C B A ,,,,E 15)(),(),(t t t y u x E 15E 15 x y u kx x f x m 15 )(01)()(10)(10)(001t t y t u t f k t mT ])()([)(t x t x t 15M ATLA B S Y S TE MInf 00)(0n j D CB I E An L M I lti s y s lti ss S Y S TE M S Y S TE Msys=ltisys(-1,1,1,0)x y u x x , SYSTEM SYSTEM sys DC B A ,,, [A,B,C,D]=ltiss(sys) ltitf SYSTEM )()()(s d s n s G sys=ltisys(‘tf’,n,d) n d )(s G )(s n )(s d sinfo(sys)SYSTEM sys spol(sys)ssub SYSTEM G 123 G ssub(G,1,2:3) G G SYSTEM sinv )(s G )()(1s s G H )(s G D sbalancC B A ,,L M I SYSTEM SYSTEMg1g2SYSTEM sadd )(1s G )(2s G)(1s G )(2s G SYSTEM smult(g1,g2)SYSTEM 10 )()(12s s G G sdiag(g1,g2)SYSTEMS )}(),({d i ag )(21s s s G G G G 1(s )G 2(s )y r + 1 sloop r y SYSTEM slft SYSTEM 21w w 21z z G 1(s )G 2(s )w 1u z 1y w 2z 2 232,R R y u slft(g1,g2,2,3) H。
LMI(线性矩阵不等式)工具箱介绍学习

LMI:Linear Matrix Inequality,就是线性矩阵不等式。
在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。
对于LMI Lab,其中有三种求解器(solver): feasp,mincx和gevp。
每个求解器针对不同的问题:feasp:解决可行性问题(feasibility problem),例如:A(x)<B(x)。
mincx:在线性矩阵不等式的限制下解决最小化问题(Minimization of a linear objective under LMI constraints),例如最小化c'x,在限制条件A(x) < B(x)下。
gevp:解决广义特征值最小化问题。
例如:最小化lambda,在0<B(x),A(x)<lamba*B(x)限制条件下。
要解决一个LMI问题,首要的就是要把线性矩阵不等式表示出来。
对于以下类型的任意的LMI问题N' * L(X1, . . . , XK) * N < M' * R(X1, . . . , XK) * M其中X1, . . . , XK是结构已经事先确定的矩阵变量。
左侧和右侧的外部因子(outer factors)N和M是给定的具有相同维数的矩阵。
左侧和右侧的内部因子(inner factors)L(.)和R(.)是具有相同结构的对称块矩阵。
每一个块由X1, . . . , XK以及它们的转置组合而成形成的。
解决LMI问题的步骤有两个:1、定义维数以及每一个矩阵的结构,也就是定义X1, . . . , XK。
2、描述每一个LMI的每一项内容(Describe the term content of each LMI)此处介绍两个术语:矩阵变量(Matrix Variables):例如你要求解X满足A(x)<B(x),那么X就叫做矩阵变量。
LMI工具箱介绍——俞立

LMI 工具箱介绍线性矩阵不等式(LMI )工具箱是求解一般线性矩阵不等式问题的一个高性能软件包。
由于其面向结构的线性矩阵不等式表示方式,使得各种线性矩阵不等式能够以自然块矩阵的形式加以描述。
一个线性矩阵不等式问题一旦确定,就可以通过调用适当的线性矩阵不等式求解器来对这个问题进行数值求解。
LMI 工具箱提供了确定、处理和数值求解线性矩阵不等式的一些工具,它们主要用于:z 以自然块矩阵形式来直接描述线性矩阵不等式; z 获取关于现有的线性矩阵不等式系统的信息; z 修改现有的线性矩阵不等式系统; z 求解三个一般的线性矩阵不等式问题; z 验证结果。
本附录将详细介绍LMI 工具箱提供的用于解决以上各个问题的相关函数和命令。
A.1 线性矩阵不等式及相关术语一个线性矩阵不等式就是具有以下一般形式的一个矩阵不等式:0<+++=N N x x L L L x L "110)( (1)其中:是给定的对称常数矩阵,是未知变量,称为决策变量,N L L L ,,,10"N x x ,,1"∈=T 1],,[N x x "x N R 是由决策变量构成的向量,称为决策向量。
尽管表达式(1)是线性矩阵不等式的一个一般表示式,但在大多数实际应用中,线性矩阵不等式常常不是以一般表示式(1)的形式出现,而是具有以下形式:),,(),,(11n n X X R X X L ""<其中的和是矩阵变量的仿射函数,通过适当的代数运算,上式可以写成线性矩阵不等式的一般表示式(1)的形式。
例如,在系统稳定性问题中经常遇到的Lyapunov 矩阵不等式)(⋅L )(⋅R n X X ,,1"0<+XA X A T (2)也是一个线性矩阵不等式,其中的是一个矩阵变量。
我们以一个二阶矩阵为例,将矩阵不等式(2)写成一般表示式(1)的形式。
针对二阶矩阵不X ⎥⎦⎤⎢⎣⎡−−=2021A等式(2),对应的矩阵变量是一个二阶的对称矩阵,,不等式(2)中的决策变量是矩阵中的独立元。
线性矩阵不等式的MATLAB求解

线性矩阵不等式的MATLAB求解作者:张剑宇来源:《都市家教·上半月》2015年第02期【摘要】本文介绍了有关线性矩阵不等式的一些基本概念。
对用于求解线性矩阵不等式的MATLAB中的线性矩阵不等式工具箱作了简要说明。
为了更加说明线性矩阵不等式的求解过程。
文中还给出了相关的程序命令,以及示例。
【关键词】线性矩阵不等式;MATLAB求解线性矩阵不等式(LMI)在控制系统分析和设计方面得到了广泛的重视和应用,由它的优良性质以及解法的突破。
在现行矩阵不等式出现之前,绝大多数的控制问题都是通过Riccati 方程或其不等式的方法来解决的。
但是解Riccati 方程或其不等式时,有大量的参数和正定对称矩阵需要预先调整。
有时,即使问题本身是有解的,也找不出问题的解。
这给实际应用问题的解决带来极大不便,而线性矩阵不等式方法可以很好地弥补Riccati 方程方法的上述不足。
在解线性矩阵不等式时,不需要预先调整任何参数和正定对称矩阵。
这使得它在在控制系统分析和设计方面得到了广泛的重视和应用。
线性矩阵不等式以及线性矩阵不等式方法(技术)已是控制工程、系统辨识、结构设计等领域的一个强有力的设计工具。
1 线性矩阵不等式的介绍一个线性矩阵不等式具有如下形式:F(x)=F0+x1F1+x2F2+…+xmFm式中,x1,…, xm是m个实数变量,称为是线性矩阵不等式(1)的决策变量, x=(x1,…, xm)T∈Rm是由决策变量构成的向量,称为决策向量。
Fi=FiT∈Rm×m,i=0,1,…, m,是一组给定的实对称矩阵,式(1)中的“2 线性矩阵不等式常用的求解器LMI 工具箱提供了求解以下3 个问题的线性矩阵不等式求解器。
2.1可行性问题寻找一个x∈Rn,使得满足线性矩阵不等式系统:A(x)相应的求解器是feasp。
feasp 函数是在线性矩阵不等式A(x)2.2具有线性矩阵不等式约束的一个线性目标函数的最小化问题s.t. A(x)相应的求解器是mincx。
LMI线性矩阵不等式培训讲学

(5)
其中,Xi
∈
Rqi×pi
是一个矩阵,而∑n i=1
qi
×
pi
=
m,所有矩
阵变量的列堆叠起来,形成单个向量变量x。
于是我们考虑下面常用形式的函数:
F (X1, X2, · · · , Xn) = F0 + G1X1H1 + G2X2H2 + · · · + GnXnHn
4
∑n
= F0 + GiXiHi
7
找P > 0,使得
AT P + P A > 0
(14)
这是一个关于变量P > 0的LMI可行性问题,然而,给定满
足该问题的任意的P > 0,明显地集合
P
=
{
βP
:
标量β
>
}
0
(15)
中任意矩阵都满足上述问题。
P > 0和(14)所描述的LMI约束,可以等价地组成一个LMI:
AT P + P A 0 < 0
9
%可行 ( 是稳定的A) 当且仅当 tmin<0
tmin
运行结果:
Lyap = 1
Solver for LMI f e a s i b i l i t y problems L ( x ) < R( x ) 10
This solver minimizes t subject to L( x ) < R( x ) + t∗I
The best value o f t should be negative for f e a s i b i l i t y
Iteration :
线性矩阵不等式的LMI工具箱求解

一、线性矩阵不等式的LMI 工具箱求解 (一)可行性问题(LMIP )1、可行性问题描述系统状态方程:[]11223301000210-414x x x x u x x ⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=-+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦⎣⎦&&& 在判断系统的稳定性时,根据线性定常系统的李雅普诺夫稳定性判据,需要判断是否存在实对称矩阵P ,使得:T A P+PA=Q -成立,其中Q 为正定矩阵。
那么判断系统稳定性的问题,可以转化为下面不等式是否存在解的问题:T A P+PA<0这种不等式解是否存在的问题可以用MATLAB 的LMI 工具箱进行判断。
2、仿真所需要用到的命令setlmis([]) :开始一个线性矩阵不等式系统的描述; X= lmivar(TYPE,STRUCT):定义一个新的矩阵变量;lmiterm(TERMID,A,B,FLAG):确定线性矩阵不等式的一个项的内容; LMISYS = getlmis :结束一个线性矩阵不等式系统的描述,返回这个现行矩阵不等式系统的内部表示向量LMISYS ;X = dec2mat(LMISYS,DECVARS,XID):由给定的决策变量得到相应的矩阵变量值。
[tmin,xfeas]=feasp(lmisys):可行性问题的求解器函数,tmin大于0时,表明LMI系统不可行,P阵无解,系统不稳定,tmin小于0时,便可以用dec2mat 函数求解出P矩阵。
3、仿真结果可以看到,仿真结果tmin<0,因此P阵存在,系统是稳定的。
进一步用dec2mat 函数求解出P 矩阵。
得:(二)特征值问题(EVP)1、EVP 问题描述该问题对应矩阵工具箱中的LMI 约束的线性目标函数最小化优化问题。
一般采用mincx 求解器求解。
考虑这样一个优化问题:min ().. 0TTTrace X s t A X XA XBB X Q +++<其中:5342154067; 3; 562.78314228A B Q -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪===-- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭2、仿真用到的命令DECVARS = mat2dec(LMISYS,X1,X2,X3,...) :由给定的矩阵变量得到相应的决策变量值;[copt,xopt]=mincx(LMIs,c,options):用于给定的特征值问题求解,copt 返回全局最优的决策变量,xopt 返回决策变量的最优解。
LMI工具箱介绍——俞立培训课件

1、可行性问题 寻找一个x∈RN, 使得满足LMI
A(x) < B(x) 相应的求解器是feasp. 一般表达形式
[tmin, xfeas]=feasp(lmisys, options, target) 原理:通过求解如下的辅助优化问题
min t s.t. A(x)-B(x) ≤ tI 来求解线性矩阵不等式系统lmisys的可行性问题.
③描述该项是变量还是常数. ④变量的左系数、右系数. ⑤可选项, 只能是's' , 描述转置.
5/26
机动 目录 上页 下页 返回 结束
使用LMI工具箱描述
AT
X
XA BT X
C T SC
XB
S
0
X 0
SI
其中X∈R6×6 和 S = DTD∈R 4×4,
d1 D
d1
d2 d4
minx cTx s.t. A(x) < B(x) 相应的求解器是mincx. 一般表达形式
[copt, xopt]=mincx(lmisys, c, options, xinit, target)
求解器的2个输出量:
copt : 目标函数值cTx的全局最优值;
xopt : 最优解, 可用dec2mat提取相应的矩阵变量.
xfeas : 系统lmisys可行时, 给出一个可行解,
用dec2mat提取出该可行解.
求解器的3个输入量:
lmisys : 如前所述;
target : 可选, 为tmin设置目标值, 只要tmin < target,
优化迭代过程就结束. target = 0是默认值.
options : 可选量, 5维向量, 描述求解参数, 见资料.
Matlab LMI(线性矩阵不等式)工具箱中文版介绍及使用教程

⎧ 0,
struct (i,
j)
=
⎪ ⎨
n,
⎪⎩− n,
如果X (i, j) = 0 如果X (i, j) = xn 如果X (i, j) = −xn
例 2:考虑具有三个矩阵变量 X1、X 2 和 X 3 的线性矩阵不等式系统,其中 z X1 是一个 3 × 3 维的对称矩阵; z X 2 是一个 2 × 4 维的长方矩阵;
的决策变量是矩阵 X 中的独立元 x1、x2、x3 。根据对策性,矩阵变量 X 可以写成
⎡1 0⎤ ⎡0 1⎤ ⎡0 0⎤ X = x1 ⎢⎣0 0⎥⎦ + x2 ⎢⎣1 0⎥⎦ + x3 ⎢⎣0 1⎥⎦
将矩阵 A 和上式代入矩阵不等式(2),经整理,可得
⎡− 2 2⎤ ⎡ 0 − 3⎤ ⎡0 0 ⎤
XB⎤
−
S
⎥ ⎦
<
0
(6)
X >0
(7)
S>I
(8)
用命令 lmivar 和 lmiterm 给出线性矩阵不等式系统(6)~(8)的内部描述如下:
setlmis([])
X=lmivar(1,[6 1]) S=lmivar(1,[2 0;2 1])
% 1st LMI lmiterm([1 1 1 X],1,A,’s’) lmiterm([1 1 1 S],C’,C) lmiterm([1 1 2 X],1,B) lmiterm([1 2 2 S],-1,1)
AT X + XA < 0
(2)
也是一个线性矩阵不等式,其中的 X 是一个矩阵变量。我们以一个二阶矩阵
A
=
⎡− 1
⎢ ⎣
0
2⎤ − 2⎥⎦
matlab中LMI应用说明

我们要实现的就利用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 symmetricQ = lmivar(1, [2 1]);% S1 a symmeric matrix, size 2S1 = lmivar(1, [2 1]);% S2 is 1 by 1 matrixS2 = lmivar(1, [1 0]);% Type of 2, size 1 by 2M = lmivar(2, [1 2]);定义完成变量之后,我们就该用lmiterm来描述LMI中的每一个项了。
Matlab 的官方文档提示我们,如果要描述一个LMI只需要描述上三角或者下三角元素就可以了,否则会描述成另一个LMI。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LMI:Linear Matrix Inequality,就是线性矩阵不等式。
在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。
对于LMI Lab,其中有三种求解器(solver): feasp,mincx和gevp。
每个求解器针对不同的问题:feasp:解决可行性问题(feasibility problem),例如:A(x)<B(x)。
mincx:在线性矩阵不等式的限制下解决最小化问题(Minimization of a linear objective under LMI constraints),例如最小化c'x,在限制条件A(x) < B(x)下。
gevp:解决广义特征值最小化问题。
例如:最小化lambda,在0<B(x),A(x)<lamba*B(x)限制条件下。
要解决一个LMI问题,首要的就是要把线性矩阵不等式表示出来。
对于以下类型的任意的LMI问题N' * L(X1, . . . , XK) * N < M' * R(X1, . . . , XK) * M其中X1, . . . , XK是结构已经事先确定的矩阵变量。
左侧和右侧的外部因子(outer factors)N和M是给定的具有相同维数的矩阵。
左侧和右侧的内部因子(inner factors)L(.)和R(.)是具有相同结构的对称块矩阵。
每一个块由X1, . . . , XK以及它们的转置组合而成形成的。
解决LMI问题的步骤有两个:1、定义维数以及每一个矩阵的结构,也就是定义X1, . . . , XK。
2、描述每一个LMI的每一项内容(Describe the term content of each LMI)此处介绍两个术语:矩阵变量(Matrix Variables):例如你要求解X满足A(x)<B(x),那么X就叫做矩阵变量。
项(Terms):项是常量或者变量(Terms are either constant or variable)。
常项(Constant Terms)是确定的矩阵。
可变项(Variable Terms)是哪些含有矩阵变量的项,例如:X*A, X*C'。
如果是X*A + X*C',那么记得要把它当成两项来处理。
好了废话不说了,让我们来看个例子吧(下面是一线性时滞系统)。
500)this.width=500;" border=0>针对这个式子,如果存在满足如下LMI的正矩阵(positive-define)的Q,S1,S2和矩阵M,那么我们就称作该系统为H-inf渐进稳定的,并且gammar是上限。
500)this.width=500;" border=0> 算例为:500)this.width=500;" border=0>我们要实现的就利用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 symmetricQ = 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 bloc ks 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、对于外部变量,取值为02、对于A*X*B,取值X3、对于A*X'*B,取值-X flag(可选,值为s):因为:(A*X*B) + (A*X*B)T = A*X*B + B'*X'*A',所以采用s来进行简写。
比如:针对A*X + X'*A' 我们采用笨方法:lmiterm([1 1 1 X],A,1) lmiterm([1 1 1 -X],1,A')那么简写就是lmiterm([1 1 1 X],A,1,'s')接下来我们就看该论文中的算例吧:(1,1)位置是 -Q+Bd*S2*Bd'+Ad*S1*Ad'; 我们应该表示为: % pos in (1, 1)lmiterm([1 1 1 Q], -1, 1); lmiterm([1 1 1 S2], Bd, Bd'); lmiterm([1 1 1 S1], Ad, Ad');其它位置仿照写就行了,不懂了多看帮助文档。
把每一个项都定义以后,要记得 lmis = getlmis;[tmin, feas] = feasp(lmis)getlmis:是在完成定义变量和项之后,LMI系统的内部表示就可以通过此命令获得(After completing the description of a given LMI system with lmivar and lmiterm, its internal rep resentation lmisys is obtained with the command)。
feasp是调用feasp求解器,看有没有可行解。
feas就是可行解。
下面我把代码贴上去,那些常数矩阵都在此源程序中定义了。
A = [2 1; 0 1]; Ad = [0.2 0.1; 0 0.1]; B1 = [0.1 0.1]'; B2 = [1 1]'; Bd = [0.1 0.1]'; C = [1, 1]; Cd = [ 0.1, 0.1]; D11 = 0.1;D12 = 1; Dd = 0.1; gammar = 1;% Initial a LMI system setlmis([]); % Define Variables% 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]); % Q, S1, S2 > 0 lmiterm([-2 1 1 Q], 1, 1); lmiterm([-3 1 1 S1], 1, 1); lmiterm([-4 1 1 S2], 1, 1); % pos in (1, 1)lmiterm([1 1 1 Q], -1, 1); lmiterm([1 1 1 S2], Bd, Bd'); lmiterm([1 1 1 S1], Ad, Ad'); % pos (1, 2)lmiterm([1 1 2 Q], A, 1); lmiterm([1 1 2 M], B2, 1); % pos(1, 3)lmiterm([1 1 3 0], B1);% pos(1, 4)lmiterm([1 1 4 S2], Bd, Dd'); lmiterm([1 1 4 S1], Ad, Cd'); % pos(2, 2)lmiterm([1 2 2 Q], -1, 1); % pos(2, 4)lmiterm([1 2 4 Q], 1, C'); lmiterm([1 2 4 -M], 1, D12'); % pos(2, 5)lmiterm([1 2 5 -M], 1, 1); % pos(2, 6)lmiterm([1 2 6 Q], 1, 1); % pos(3, 3)lmiterm([1 3 3 0], -(gammar^2)); % pos(3, 4)lmiterm([1 3 4 0], D11'); % pos(4, 4)lmiterm([1 4 4 0], -1); lmiterm([1 4 4 S1], Cd, Cd'); lmiterm([1 4 4 S2], Dd, Dd'); lmiterm([1 5 5 S2], -1, 1); lmiterm([1 6 6 S1], -1, 1); lmis = getlmis;[tmin, feas] = feasp(lmis)运行后,就调用dec2mat把决策变量转化为矩阵形式。