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.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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*AX*^{T}*B*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.

$$\text{termID}(1)=\{\begin{array}{c}+\text{p}\\ -\text{p}\end{array}$$

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`

.

$$\begin{array}{l}\text{termID}(2:3)=\{\begin{array}{l}\left[\text{0,0}\right]\text{forouterfactors}\hfill \\ [i,j]\text{fortermsinthe}(i,j)\text{-thblockoftheleftorrightinnerfactor}\hfill \end{array}\\ \\ \text{termID}(4)=\{\begin{array}{l}\text{0forouterfactors}\hfill \\ \begin{array}{l}x\text{forvariableterms}AXB\\ -x\text{forvariableterms}A{X}^{T}B\end{array}\hfill \end{array}\end{array}$$

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 | matrix value of | omit |

constant term C | matrix value of | omit |

variable term
| matrix value of (1 if | matrix value of (1 if |

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}*)
=

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* + *X ^{T}*

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

$$\left(\begin{array}{cc}2A{X}_{2}{A}^{T}-{x}_{3}E+D{D}^{T}& {B}^{T}{X}_{1}\\ {X}_{1}^{T}B& -I\end{array}\right)<{M}^{T}\left(\begin{array}{cc}C{X}_{1}{C}^{T}+C{X}_{1}^{T}{C}^{T}& 0\\ 0& -f{X}_{2}\end{array}\right)M$$

where *X*_{1}, *X*_{2} are
matrix variables of Types 2 and 1, respectively, and *x*_{3} is
a scalar variable (Type 1).

After initializing the LMI description with `setlmis`

and
declaring the matrix variables with `lmivar`

, the
terms on the left side of this LMI are specified by:

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, X3`

should be the variable identifiers
returned by `lmivar`

.

Similarly, the term content of the right side is specified by:

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 *CX*_{1}*C ^{T}* +

`lmiterm`

command with the
flag `'s'`

to ensure proper symmetrization.Was this topic helpful?