Modify a System of LMIs

Once specified, a system of LMIs can be modified in several ways with the functions dellmi, delmvar, and setmvar.

Deleting an LMI

The first possibility is to remove an entire LMI from the system with dellmi. For instance, suppose that the LMI system of Specify LMI System is described in LMISYS and that we want to remove the positivity constraint on X. This is done by

NEWSYS = dellmi(LMISYS,2)

where the second argument specifies deletion of the second LMI. The resulting system of two LMIs is returned in NEWSYS.

The LMI identifiers (initial ranking of the LMI in the LMI system) are not altered by deletions. As a result, the last LMI

S > I

remains known as the third LMI even though it now ranks second in the modified system. To avoid confusion, it is safer to refer to LMIs via the identifiers returned by newlmi. If BRL, Xpos, and Slmi are the identifiers attached to the three LMIs described in Specify LMI System, Slmi keeps pointing to S > I even after deleting the second LMI by

NEWSYS = dellmi(LMISYS,Xpos)

Deleting a Matrix Variable

Another way of modifying an LMI system is to delete a matrix variable, that is, to remove all variable terms involving this matrix variable. This operation is performed by delmvar. For instance, consider the LMI

ATX + XA + BW + WTBT + I < 0

with variables X = XTR4×4 and WR2×4. This LMI is defined by

setlmis([])
X = lmivar(1,[4 1]) 	% X
W = lmivar(2,[2 4]) 	% W

lmiterm([1 1 1 X],1,A,'s')
lmiterm([1 1 1 W],B,1,'s')
lmiterm([1 1 1 0],1)

LMISYS = getlmis

To delete the variable W, type the command

NEWSYS = delmvar(LMISYS,W)

The resulting NEWSYS now describes the Lyapunov inequality

ATX + XA + I < 0

Note that delmvar automatically removes all LMIs that depended only on the deleted matrix variable.

The matrix variable identifiers are not affected by deletions and continue to point to the same matrix variable. For subsequent manipulations, it is therefore advisable to refer to the remaining variables through their identifier. Finally, note that deleting a matrix variable is equivalent to setting it to the zero matrix of the same dimensions with setmvar.

Instantiating a Matrix Variable

The function setmvar is used to set a matrix variable to some given value. As a result, this variable is removed from the problem and all terms involving it become constant terms. This is useful, for instance, to fixsetmvar some variables and optimize with respect to the remaining ones.

Consider again Specify LMI System and suppose we want to know if the peak gain of G itself is less than one, that is, if

G < 1

This amounts to setting the scaling matrix D (or equivalently, S = DTD) to a multiple of the identity matrix. Keeping in mind the constraint S > I, a legitimate choice is S = 2-βψ-I. To set S to this value, enter

NEWSYS = setmvar(LMISYS,S,2)

The second argument is the variable identifier S, and the third argument is the value to which S should be set. Here the value 2 is shorthand for 2-by-I. The resulting system NEWSYS reads

$\begin{array}{c}\left(\begin{array}{cc}{A}^{T}X+XA+2{C}^{TC}& XB\\ {B}^{T}X& -2I\end{array}\right)<0\\ X>0\\ 2I>I.\end{array}$

Note that the last LMI is now free of variable and trivially satisfied. It could, therefore, be deleted by

NEWSYS = dellmi(NEWSYS,3)

or

NEWSYS = dellmi(NEWSYS,Slmi)

if Slmi is the identifier returned by newlmi.

Robust Control Toolbox Documentation Get trial now