LMI(线性矩阵不等式)工具箱
- 格式:doc
- 大小:39.50 KB
- 文档页数:7
常用工具箱MATLAB包括拥有数百个内部函数的主包和三十几种工具包。
工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
开放性使MATLAB广受用户欢迎。
除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
Matlab Main Toolbox——matlab主工具箱Control System Toolbox——控制系统工具箱Communication Toolbox——通讯工具箱Financial Toolbox——财政金融工具箱System Identification Toolbox——系统辨识工具箱Fuzzy Logic Toolbox——模糊逻辑工具箱Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱Image Processing Toolbox——图象处理工具箱computer vision system toolbox----计算机视觉工具箱LMI Control Toolbox——线性矩阵不等式工具箱Model predictive Control Toolbox——模型预测控制工具箱μ-Analysis and Synthesis Toolbox——μ分析工具箱Neural Network Toolbox——神经网络工具箱Optimization Toolbox——优化工具箱Partial Differential Toolbox——偏微分方程工具箱Robust Control Toolbox——鲁棒控制工具箱Signal Processing Toolbox——信号处理工具箱Spline Toolbox——样条工具箱Statistics Toolbox——统计工具箱Symbolic Math Toolbox——符号数学工具箱Simulink Toolbox——动态仿真工具箱Wavele Toolbox——小波工具箱DSP system toolbox-----DSP处理工具箱常用函数Matlab内部常数[2]eps:浮点相对精度exp:自然对数的底数ei 或j:基本虚数单位inf 或Inf:无限大,例如1/0nan或NaN:非数值(Not a number),例如0/0 pi:圆周率p(= 3.1415926...)realmax:系统所能表示的最大数值realmin:系统所能表示的最小数值nargin: 函数的输入引数个数nargout: 函数的输出引数个数lasterr:存放最新的错误信息lastwarn:存放最新的警告信息MATLAB常用基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phase angle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):下取整,即舍去正小数至最近整数ceil(x):上取整,即加入正小数至最近整数rat(x):将实数x化为多项分数展开rats(x):将实数x化为分数表示sign(x):符号函数(Signum function)。
6.1.1MA TLAB中常用的工具箱MA TLAB中常用的工具箱有:Matlab main toolbox——matlab主工具箱Control system toolbox——控制系统工具箱Communication toolbox——通信工具箱Financial toolbox——财政金融工具箱System identification toolbox——系统辨识工具箱Fuzzy logic toolbox ——模糊逻辑工具箱Higher-order spectral analysis toolbox——高阶谱分析工具箱Image processing toolbox——图像处理工具箱Lmi contral toolbox——线性矩阵不等式工具箱Model predictive contral toolbox——模型预测控制工具箱U-Analysis ang sysnthesis toolbox——u分析工具箱Neural network toolbox——神经网络工具箱Optimization toolbox——优化工具箱Partial differential toolbox——偏微分奉承工具箱Robust contral toolbox——鲁棒控制工具箱Spline toolbox——样条工具箱Signal processing toolbox——信号处理工具箱Statisticst toolbox——符号数学工具箱Symulink toolbox——动态仿真工具箱System identification toolbox——系统辨识工具箱Wavele toolbox——小波工具箱6.2优化工具箱中的函数1、最小化函数2、最小二乘问题3、方程求解函数4、演示函数中型问题方法演示函数大型文体方法演示函数。
一、线性矩阵不等式的LMI 工具箱求解(一)可行性问题(LMIP )1、可行性问题描述系统状态方程:[]11223301000210-4014x 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,DECV ARS,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 ().. 0T T Trace X s t A X XA XBB X Q +++<其中: 5342154067; 3; 562.78314228A B Q -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪===-- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭2、仿真用到的命令DECV ARS = mat2dec(LMISYS,X1,X2,X3,...) :由给定的矩阵变量得到相应的决策变量值;[copt,xopt]=mincx(LMIs,c,options):用于给定的特征值问题求解,copt 返回全局最优的决策变量,xopt 返回决策变量的最优解。
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(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,使得系统在闭环下能够保持稳定。
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: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 工具箱提供了确定、处理和数值求解线性矩阵不等式的一些工具,它们主要用于: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)中的决策变量是矩阵中的独立元。
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包括拥有数百个内部函数的主包和三十几种工具包。
工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
开放性使MATLAB广受用户欢迎。
除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
Matlab Main Toolbox——matlab主工具箱Control System Toolbox——控制系统工具箱Communication Toolbox——通讯工具箱Financial Toolbox——财政金融工具箱System Identification Toolbox——系统辨识工具箱FuzzyLogic Toolbox——模糊逻辑工具箱Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱Image Processing Toolbox——图象处理工具箱computer vision systemtoolbox----计算机视觉工具箱LMI Control Toolbox——线性矩阵不等式工具箱Model predictive Control Toolbox——模型预测控制工具箱μ-Analysis and Synthesis Toolbox——μ分析工具箱Neural Network Toolbox——神经网络工具箱Optimization Toolbox——优化工具箱Partial Differential Toolbox——偏微分方程工具箱Robust Control Toolbox——鲁棒控制工具箱Signal Processing Toolbox——信号处理工具箱 Spline Toolbox——样条工具箱Statistics Toolbox——统计工具箱Symbolic Math Toolbox——符号数学工具箱Simulink Toolbox——动态仿真工具箱Wavele Toolbox——小波工具箱DSP systemtoolbox-----DSP处理工具箱常用函数Matlab内部常数[2]eps:浮点相对精度exp:自然对数的底数ei 或j:基本虚数单位inf 或Inf:无限大, 例如1/0nan或NaN:非数值(Not a number),例如0/0 pi:圆周率p(= 3.1415926...)realmax:系统所能表示的最大数值realmin:系统所能表示的最小数值nargin: 函数的输入引数个数nargout: 函数的输出引数个数lasterr:存放最新的错误信息lastwarn:存放最新的警告信息MATLAB常用基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phase angle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):下取整,即舍去正小数至最近整数ceil(x):上取整,即加入正小数至最近整数rat(x):将实数x化为多项分数展开rats(x):将实数x化为分数表示sign(x):符号函数(Signum function)。
matlab工具箱介绍MATLAB有三十多个工具箱大致可分为两类:功能型工具箱和领域型工具箱.功能型工具箱主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件实时交互功能,能用于多种学科。
而领域型工具箱是专业性很强的。
如控制系统工具箱(Control System Toolbox)、信号处理工具箱(Signal Processing Toolbox)、财政金融工具箱(Financial Toolbox)等。
下面,将MATLAB工具箱内所包含的主要内容做简要介绍:1)通讯工具箱(Communication Toolbox)。
令提供100多个函数和150多个SIMULINK模块用于通讯系统的仿真和分析——信号编码——调制解调——滤波器和均衡器设计——通道模型——同步可由结构图直接生成可应用的C语言源代码。
2)控制系统工具箱(Control System Toolbox)。
鲁连续系统设计和离散系统设计* 状态空间和传递函数* 模型转换* 频域响应:Bode图、Nyquist图、Nichols图* 时域响应:冲击响应、阶跃响应、斜波响应等* 根轨迹、极点配置、LQG3)财政金融工具箱(FinancialTooLbox)。
* 成本、利润分析,市场灵敏度分析* 业务量分析及优化* 偏差分析* 资金流量估算* 财务报表4)频率域系统辨识工具箱(Frequency Domain System ldentification Toolbox* 辨识具有未知延迟的连续和离散系统* 计算幅值/相位、零点/极点的置信区间* 设计周期激励信号、最小峰值、最优能量诺等5)模糊逻辑工具箱(Fuzzy Logic Toolbox)。
* 友好的交互设计界面* 自适应神经—模糊学习、聚类以及Sugeno推理* 支持SIMULINK动态仿真* 可生成C语言源代码用于实时应用(6)高阶谱分析工具箱(Higher—Order SpectralAnalysis Toolbox* 高阶谱估计* 信号中非线性特征的检测和刻画* 延时估计* 幅值和相位重构* 阵列信号处理* 谐波重构(7)图像处理工具箱(Image Processing Toolbox)。
一、线性矩阵不等式的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 返回决策变量的最优解。
MATLAB常用工具箱常用工具箱MATLAB包括拥有数百个内部函数的主包和三十几种工具包。
工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
开放性使MATLAB广受用户欢迎。
除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
Matlab Main Toolbox——matlab主工具箱Control System Toolbox——控制系统工具箱Communication Toolbox——通讯工具箱Financial Toolbox——财政金融工具箱System Identification Toolbox——系统辨识工具箱Fuzzy Logic Toolbox——模糊逻辑工具箱Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱Image Processing Toolbox——图象处理工具箱LMI Control Toolbox——线性矩阵不等式工具箱Model predictive Control Toolbox——模型预测控制工具箱μ-Analysis and Synthesis Toolbox——μ分析工具箱Neural Network Toolbox——神经网络工具箱Optimization Toolbox——优化工具箱Partial Differential Toolbox——偏微分方程工具箱Robust Control Toolbox——鲁棒控制工具箱Signal Processing Toolbox——信号处理工具箱Spline Toolbox——样条工具箱Statistics Toolbox——统计工具箱Symbolic Math Toolbox——符号数学工具箱Simulink Toolbox——动态仿真工具箱Wavele Toolbox——小波工具箱常用函数Matlab内部常数[3]eps:浮点相对精度exp:自然对数的底数ei或j:基本虚数单位inf或Inf:无限大,例如1/0nan或NaN:非数值(Not a number),例如0/0 pi:圆周率p(= 3.1415926...)realmax:系统所能表示的最大数值realmin:系统所能表示的最小数值nargin:函数的输入引数个数nargout:函数的输出引数个数lasterr:存放最新的错误信息lastwarn:存放最新的警告信息MATLAB常用基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phase angle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):下取整,即舍去正小数至最近整数ceil(x):上取整,即加入正小数至最近整数rat(x):将实数x化为多项分数展开rats(x):将实数x化为分数表示sign(x):符号函数(Signum function)。
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 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。
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、对于外部变量,取值为02、对于A*X*B,取值X3、对于A*X'*B,取值-Xflag(可选,值为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 representation 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;Dd = 0.1;gammar = 1;% Initial a LMI systemsetlmis([]);% 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 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]);% Q, S1, S2 > 0lmiterm([-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);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把决策变量转化为矩阵形式。