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
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,
an R-by-2 matrix where
struct(r,1) is the size of the r-th
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
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.
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,
returns two extra outputs: (1) the total number n of scalar decision
variables used so far and (2) a matrix
the entry-wise dependence of X on the decision
variables x1, . . ., xn.
Consider an LMI system with three matrix variables X1, X2, X3 such that
X1 is a 3-by-3 symmetric matrix (unstructured),
X2 is a 2-by-4 rectangular matrix (unstructured),
where Δ is an arbitrary 5-by-5 symmetric matrix, δ1 and δ2 are scalars, and I2 denotes the identity matrix of size 2.
These three variables are defined by
setlmis() X1 = lmivar(1,[3 1]) % Type 1 X2 = lmivar(2,[2 4]) % Type 2 of dim. 2x4 X3 = lmivar(1,[5 1;1 0;2 0]) % Type 1
The last command defines X3 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
Type 3 allows you to specify fairly complex matrix variable structures.
For instance, consider a matrix variable X with
where X1 and X2 are 2-by-3 and 3-by-2 rectangular matrices, respectively. You can specify this structure as follows:
Define the rectangular variables X1 and X2 by
setlmis() [X1,n,sX1] = lmivar(2,[2 3]) [X2,n,sX2] = lmivar(2,[3 2])
the decision variable content of X1 and X2:
sX1 sX1 = 1 2 3 4 5 6 sX2 sX2 = 7 8 9 10 11 12
sX2(1,1)=7 means that the (1,1)
entry of X2 is the seventh
Use Type 3 to specify the matrix variable X and define its structure in terms of those of X1 and X2:
[X,n,sX] = lmivar(3,[sX1,zeros(2);zeros(3),sX2])
The resulting variable
X has the prescribed
structure as confirmed by
sX 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