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 at the Command Line 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 at the Command Line, 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 = XT ∊ R4×4 and W ∊ R2×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
fix setmvar
some variables and
optimize with respect to the remaining ones.
Consider again Specify LMI System at the Command Line 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
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
.