This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Specify matrix variables in LMI problem


X = lmivar(type,struct)
[X,n,sX] = lmivar(type,struct)


lmivar defines a new matrix variable X in the LMI system currently described. The optional output X is an identifier that can be used for subsequent reference to this new variable.

The first argument type selects among available types of variables and the second argument struct gives further information on the structure of X depending on its type. Available variable types include:

type=1: Symmetric matrices with a block-diagonal structure. Each diagonal block is either full (arbitrary symmetric matrix), scalar (a multiple of the identity matrix), or identically zero.

If X has R diagonal blocks, struct is an R-by-2 matrix where

  • struct(r,1) is the size of the r-th block

  • struct(r,2) is the type of the r-th block (1 for full, 0 for scalar, –1 for zero block).

type=2: Full m-by-n rectangular matrix. Set struct = [m,n] in this case.

type=3: Other structures. With Type 3, each entry of X is specified as zero or ±x where xn is the n-th decision variable.

Accordingly, struct is a matrix of the same dimensions as X such that

  • struct(i,j)=0 if X(i, j) is a hard zero

  • struct(i,j)=n if X(i, j) = xn

  • struct(i,j)=–n if X(i, j) = –xn

Sophisticated matrix variable structures can be defined with Type 3. To specify a variable X of Type 3, first identify how many free independent entries are involved in X. These constitute the set of decision variables associated with X. If the problem already involves n decision variables, label the new free variables as xn+1, . . ., xn+p. The structure of X is then defined in terms of xn+1, . . ., xn+p as indicated above. To help specify matrix variables of Type 3, lmivar optionally returns two extra outputs: (1) the total number n of scalar decision variables used so far and (2) a matrix sX showing the entry-wise dependence of X on the decision variables x1, . . ., xn.


collapse all

Consider an LMI system with three matrix variables , , and such that

  • is a 3-by-3 symmetric matrix (unstructured),

  • is a 2-by-4 rectangular matrix (unstructured),

  • =

where Δ is an arbitrary 5-by-5 symmetric matrix, and are scalars, and denotes the identity matrix of size 2.

Define these three variables using lmivar.

X1 = lmivar(1,[3 1]);          % Type 1 
X2 = lmivar(2,[2 4]);         % Type 2 of dimension 2-by-4 
X3 = lmivar(1,[5 1;1 0;2 0]);  % Type 1

The last command defines as a variable of Type 1 with one full block of size 5 and two scalar blocks of sizes 1 and 2, respectively.

Combined with the extra outputs n and sX of lmivar, Type 3 allows you to specify fairly complex matrix variable structures. For instance, consider a matrix variable X with structure given by:

where and are 2-by-3 and 3-by-2 rectangular matrices, respectively. Specify this structure as follows.

Define the rectangular variables and .

[X1,n,sX1] = lmivar(2,[2 3]); 
[X2,n,sX2] = lmivar(2,[3 2]);

The outputs sX1 and sX2 give the decision variable content of and .

sX1 = 

     1     2     3
     4     5     6

sX2 = 

     7     8
     9    10
    11    12

For instance, sX2(1,1) = 7 means that the (1,1) entry of is the seventh decision variable.

Next, use Type 3 to specify the matrix variable X, and define its structure in terms of the structures of and .

[X,n,sX] = lmivar(3,[sX1,zeros(2);zeros(3),sX2]);

Confirm that the resulting X has the desired structure.

sX = 

     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

Introduced before R2006a

Was this topic helpful?