Main Content

lmiterm

Specify term content of LMIs

    Description

    lmiterm(termID,A,B) specifies the content of one term of a linear matrix inequality (LMI) system. LMI terms are the additive elements in the block-matrix expression of an LMI. Before using lmiterm, initialize the LMI description with setlmis and declare the matrix variables with lmivar. Then, add terms one at a time to the current LMI system, using lmiterm once for each term.

    An LMI term can be one of the following entities:

    • Outer factors that multiple an LMI matrix as a whole.

    • Variable terms of the form AXB or AXTB, where X is a matrix variable and A and B are given matrices called the term coefficients. These variable terms are combined and positioned in blocks to form the matrix inner factors.

    • Constant terms, fixed matrices that appear within one or more blocks of the matrix inner factors.

    example

    lmiterm(termID,A,B,'s') allows you to specify certain conjugated pairs of terms by invoking lmiterm once, instead of invoking it separately for each member of the pair. This syntax applies only to terms of the form (AXB) + (AXB)T = AXB + BTXTAT that appear in diagonal blocks.

    example

    Examples

    collapse all

    Specify the terms of the following LMI:

    (2AX2ATx3E+DDTBTX1X1TBI)<MT(CX1CT+CX1TCT00fX2)M

    where X1 and X2 are matrix variables of type 2 and type 1, respectively, and x3 is a type 1 scalar variable. (For information about the LMI variable types, see lmivar).

    Assume that you have initialized the LMI description using setlmis and declared the matrix variables using lmivar, labeling the variables X1, X2, and x3 respectively.

    The (1,1) block on the left side of the equation consists of three terms: 2AX2AT, x3E, and DDT. To create the first term, construct the termID vector. Because the term is on the left side of the LMI, in the (1,1) block, and it involves the variable X2, set termID as follows:

    termID = [1 1 1 X2];

    The left coefficient on X2 is the matrix 2*A and the right coefficient is the transpose A'. Assuming you have already specified a value for the constant matrix A in the workspace, specify the first LMI term.

    lmiterm(termID,2*A,A');      % 2*A*X2*A'
    

    The next term is also in the (1,1) block and involves the variable x3, so you can specify this term using termID = [1 1 1 x3]. Assuming you have already defined a value for the right coefficient E, specify this LMI term:

    lmiterm([1 1 1 x3],-1,E);    % -x3*E 

    Similarly, specify the last term of the (1,1) block, the (2,1) block, and the (2,2) block of the left side. You do not need to specify the (1,2) block, which is symmetric with the (2,1) block.

    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
    

    For the right side of the LMI, the first entry in termID is always -1. For the outer factor, M, use termID(2:3) = [0 0]. Because this factor involves no variable, use termID(4) = 0.

    lmiterm([-1 0 0 0],M);         % outer factor M 

    The (1,1) block contains the conjugate expression CX1CT + CX1TCT. To ensure proper symmetrization, specify this expression by a single lmiterm command with the flag 's'.

    lmiterm([-1 1 1 X1],C,C','s'); % C*X1*C'+C*X1'*C' 
    

    Finally, specify the (2,2) block of the right side.

    lmiterm([-1 2 2 X2],-f,1);     % -f*X2
    

    Suppose you have an LMI in which a conjugated expression of the following form appears in a diagonal block:

    (AXB) + (AXB)T = AXB + BTXTAT

    You can use the syntax lmiterm(termID,A,B,'s') to specify both elements of this pair with a single call to lmiterm, instead of specifying each element separately.

    For instance, suppose that you want to add the symmetrized expression AX + XTAT to the (2,2) block of the first LMI, assuming you have already created an LMI variable with the identifier X. Use the's' syntax as follows:

    lmiterm([1 2 2 X],A,1,'s');
    

    This single command summarizes the following commands that specify each element of the pair separately.

    lmiterm([1 2 2 X],A,1); 
    lmiterm([1 2 2 -X],1,A');
    

    Using the single-command syntax results in a more efficient representation of the LMI.

    Input Arguments

    collapse all

    Term location and matrix variable, specified as a four-element vector that encodes the location and matrix variable in the term. Construct this vector as described in the following table.

    Element of termIDValue
    termID(1)

    Specifies the location of the term. Set termID(1) to:

    • +p for terms on the left (smaller) side of the pth LMI in the system

    • -p for terms on the right (larger) side of the pth LMI in the system

    The index p is relative to the order in which you declared the LMIs in the system. p corresponds to the identifier returned by newlmi. For a system with one LMI, p = 1.

    termID(2:3)

    Specifies whether the term is part of an outer factor or an inner factor. Set termID(2:3) to:

    • [0,0] if the term is an outer factor

    • [j,k] for a term in block (j,k) of an inner factor

    When describing an inner factor with multiple blocks, 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, in a two-block LMI, specify the blocks (1,1), (2,1), and (2,2). The software automatically determines term (1,2) from symmetry constraints on the LMI expression.

    termID(4)

    Specifies the involvement of a variable in the LMI term. Set termID(4) to:

    • 0 for outer factors and constant terms

    • x for variable terms of the form AXB

    • -x for variable terms of the form AXTB

    Here, x is the identifier of the matrix variable X as returned by lmivar when you define X.

    For example, suppose that the (2,1) block of the left (smaller) side of the first LMI in a system contains the term AX1TB. Suppose further that you defined X1T using lmivar and obtained the identifier x1. Construct the termID vector as follows:

    • termID(1) — The term is on the left side of the first LMI, so set termID(1) to 1.

    • termID(2:3) — The term is in the (2,1) block of the inner factor of the LMI, so set termID(2:3) to [2 1].

    • termID(4) — The term is of the form AXTB and involves the variable with the identifier x1, so set termID(4) to -x.

    Therefore, to define this LMI term, use termID = [1 2 1 -x].

    For more examples of how to construct this input argument, see Specify LMI Terms.

    Numerical coefficients of the LMI term, specified as scalars or matrices. Set the values of A and B according to where in the LMI they appear.

    Location in LMI

    A

    B

    Outer factor N

    Matrix value of N

    Omit

    Constant term C

    Matrix value of C

    Omit

    Variable term of the form AXB or AXTB

    Matrix value of A

    (1 if A is absent)

    Matrix value of B

    (1 if B is absent)

    You do not need to specify outer factors equal to the identity (1 or eye(N)) or constant terms equal to zero.

    For examples of how to specify the coefficients A and B, see Specify LMI Terms.

    Version History

    Introduced before R2006a