Specify term content of LMIs
lmiterm(termID,A,B,flag)
lmiterm
specifies the
term content of an LMI one term at a time. Recall that LMI
term refers to the elementary additive terms involved in
the block-matrix expression of the LMI. Before using lmiterm
,
the LMI description must be initialized with setlmis
and
the matrix variables must be declared with lmivar
.
Each lmiterm
command adds one extra term to the
LMI system currently described.
LMI terms are one of the following entities:
outer factors
constant terms (fixed matrices)
variable terms AXB or AXTB where X is a matrix variable and A and B are given matrices called the term coefficients.
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). For instance, specify the blocks (1,1), (2,1), and (2,2) in a two-block LMI.
In the calling of lmiterm
, termID
is
a four-entry vector of integers specifying the term location and the
matrix variable involved.
where positive p is for terms on the left-side of the p-th LMI and negative p is for terms on the right-side of the p-th LMI.
Recall that, by convention, the left side always refers to the
smaller side of the LMI. The index p
is relative
to the order of declaration and corresponds to the identifier returned
by newlmi
.
where x
is the identifier of the matrix variable X
as
returned by lmivar
.
The arguments A
and B
contain
the numerical data and are set according to:
Type of Term | A | B |
---|---|---|
outer factor N | matrix value of N | omit |
constant term C | matrix value of C | omit |
variable term AXB or AXTB | matrix value of A (1 if A is absent) | matrix value of B (1 if B is absent) |
Note that identity outer factors and zero constant terms need not be specified.
The extra argument flag
is optional and concerns
only conjugated expressions of the form
(AXB) + (AXB)T = AXB + BTXTAT
in diagonal blocks. Setting flag
= 's'
allows you to specify such expressions with a single lmiterm
command.
For instance,
lmiterm([1 1 1 X],A,1,'s')
adds the symmetrized expression AX + XTAT to the (1,1) block of the first LMI and summarizes the two commands
lmiterm([1 1 1 X],A,1) lmiterm([1 1 1 -X],1,A')
Aside from being convenient, this shortcut also results in a more efficient representation of the LMI.
Consider the LMI
where X1, X2 are matrix variables of Types 2 and 1, respectively, and x3 is a scalar variable (Type 1).
After you initialize the LMI description using setlmis
and
declare the matrix variables using lmivar
, specify
the terms on the left side of this LMI.
lmiterm([1 1 1 X2],2*A,A') % 2*A*X2*A' lmiterm([1 1 1 x3],-1,E) % -x3*E lmiterm([1 1 1 0],D*D') % D*D' lmiterm([1 2 1 -X1],1,B) % X1'*B lmiterm([1 2 2 0],-1) % -I
Here X1
, X2
, and x3
are
the variable identifiers returned by lmivar
when
you declare the variables.
Similarly, specify the term content of the right side.
lmiterm([-1 0 0 0],M) % outer factor M lmiterm([-1 1 1 X1],C,C','s') % C*X1*C'+C*X1'*C' lmiterm([-1 2 2 X2],-f,1) % -f*X2
Note that CX1CT + CX1TCT is
specified by a single lmiterm
command with the
flag 's'
to ensure proper symmetrization.