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.*