Given an IQC-problem (i.e. an instance of the class iqcprob you can easily define new LMI variables by means of the class iqcvar. This proceeds by specifying
X=iqcvar(iqcprob,dim,type)
where
- iqcprob is the LMI problem as an instance of the class iqcprob
- dim is the dimension of the variable (i.e., [dim1,dim2])
- type is the type of variable (i.e., ‘symmetic’, ‘full’,’skew’)
Each variable has four properties: var, nvar, svar, and Parser. Here the first three entries correspond to the output of the MATLAB function [X,Xn,sX]=lmivar(type,struct), which specify the name, number, and structure of an LMI variable in LMIlab.
The advantage of the function iqcprob is that it has the same convenient interface as Yalmip has, while it is compatible with both LMI parser (i.e. LMIlab and Yalmip). Indeed, the class iqcvar supports a selective range of operations as summarized next:
Operation | Description |
Horizontal concatenation | |
Vertical concatenation | |
Transposition (real) | |
Negation | |
Multiplication by identity | with scalar variable |
Block-diagonal concatenation | |
Skew diagonalization | |
Kronecker product | Here either is a matrix whose entries are in , while is an LMI variable, or is a matrix whose entries are , while is an LMI variable. |
Diagonalization | This either takes the diagonal element of a square matrix returned as a vector, or it turns a vector into a diagonal matrix, where all the off-diagonal elements are zero. |
Subindexing | This selects a subset of elements of an LMI variable , which are returned as a new LMI variable . |
Note:
- New operations can always be added
- The operations addition, subtraction, multiplication, and division by a matrix are currently not supported by this class. This will be aimed for in a future release.