Once all uncertainty blocks have been defined and all IQC-multipliers have been assigned, one can proceed by performing an IQC analysis by means of the function iqcanalysis.
This function supports the computation of the following performance metrics:
- Induced -gain performance
- performance (deterministic signal-based interpretation)
- Generalized performance (energy to peak)
- Passivity performance
If no performance blocks are specified, the algorithm performs a robust stability analysis.
The function can be called as follows:
- is the uncertain stable continuous- or discrete time LTI plant
- is the main uncertainty/performance block, which is assumed to be bounded on and whose entries are objects from the class iqcdelta, which have been associated with an IQC multiplier using iqcassign. The uncertainty/performance block should be provided as a cell:
- The option varargin allows specifying additional properties in the IQC-analysis. This proceeds in the following fashions as discussed in the following table.
|1||For , the inputs come in pairs and can be specified by|
|2||The properties can also be set by defining a structure |
and subsequently specifying
|3||Finally, the properties can be set and retrieved respectively by |
The following table provides an overview of properties that can be set in the IQC-analysis.
|Parser||It is possible to select either one of the following parsers: |
1. ‘LMIlab’ (default)
Note: It is emphasized that the use of Yalmip in combination with whichever solver sometimes seems less reliable if compared to the use of LMIlab.
To this end, it is always recommended to perform a post-solution check to confirm that a solution is indeed feasible (see Property SolChk for more details).
|Solver||If selecting LMIlab, the Matlab solvers mincx, and feasb are used to solve the minimization and feasibility problem respectively.|
On the other hand, if using Yalmip, you can consider various solvers, such as e.g., mosek, sdpt3, sedumi, etc. The reader is referred to https://yalmip.github.io/allsolvers/ for an overview of solvers that are supported.
|gmax||‘gmax’ specifies the maximum worst-case performance value (default = 1e4).|
|FeasbRad||‘FeasbRad’ specifies the feasibility radius (default = 1e9).|
|RelAcc||‘RelAcc’ is an LMIlab option that specifies the relative accuracy on the computed optimal value (default = 1e-6).|
|MaxNumIter||‘MaxNumIter’ is an LMIlab option that specifies the maximum number of iterations that can be performed by the optimization procedure (default = 800).|
|Terminate||‘Terminate’ is an LMIlab option that helps speeding up the termination. If set to an integer value , the code terminates when the objective has not decreased by more than the desired relative accuracy during the last iterations.|
|Display||‘Display’ allows to turn on/off the trace of execution of the optimization procedure (default = ‘off’).|
|Init||The option ‘Init’ can be used to specify an initial condition for the LMI optimization problem (default = ).|
|eps||‘eps’ allows to enforce strict LMI by a small nonnegative constant (default = 1e-9)|
|SolChk||‘SolChk’ allows to verify whether an obtained LMI solution is indeed feasible (default = ‘off’)|
|Pi11pos||To improve the conditioning of the IQC-multiplier sub-block , it is possible to include the positivity constraint|
To do so, one can specify ‘ Pi11pos’ (default = 0).
Note: is always positive (semi) definite on the imaginary axis. The reason to include this constraint is to enforce its strictness by means of the non-negative constant ‘Pi11pos’. This option is relevant for the synthesis algorithms presented here.