# looptune

Tune MIMO feedback loops in Simulink using `slTuner`

interface

## Syntax

## Description

`[`

tunes
the free parameters of
the control system of the Simulink`st`

,`gam`

,`info`

]
= looptune(`st0`

,`controls`

,`measurements`

,`wc`

)^{®} model associated with the `slTuner`

interface, `st0`

,
to achieve the following goals:

Bandwidth — Gain crossover for each loop falls in the frequency interval

`wc`

Performance — Integral action at frequencies below

`wc`

Robustness — Adequate stability margins and gain roll-off at frequencies above

`wc`

`controls`

and `measurements`

specify
the controller output signals and measurement signals that are subject
to the goals, respectively. `st`

is the updated `slTuner`

interface, `gam`

indicates
the measure of success in satisfying the goals, and `info`

gives
details regarding the optimization run.

Tuning is performed at the sample time specified by the `Ts`

property
of `st0`

. For tuning algorithm details, see Algorithms.

`[`

tunes
the feedback loop to meet additional goals specified in one or more
tuning goal objects, `st`

,`gam`

,`info`

]
= looptune(`st0`

,`controls`

,`measurements`

,`wc`

,`req1,...,reqN`

)`req`

. Omit `wc`

to
drop the default loop shaping goal associated with `wc`

.
Note that the stability margin goals remain in force.

`[`

specifies
further options, including target gain and phase margins, number of
runs, and computation options for the tuning algorithm. Use `st`

,`gam`

,`info`

]
= looptune(___,`opt`

)`looptuneOptions`

to create `opt`

.

If you specify multiple runs using the `RandomStarts`

property
of `opt`

, `looptune`

performs
only as many runs required to achieve the target objective value of
1. Note that all tuning goals should be normalized so that a maximum
value of 1 means that all design goals are met.

## Examples

## Input Arguments

## Output Arguments

## More About

## Algorithms

`looptune`

automatically converts target
bandwidth, performance goals, and additional design goals into weighting
functions that express the goals as an *H _{∞}* optimization
problem.

`looptune`

then uses `systune`

to optimize tunable parameters
to minimize the *H*norm.

_{∞}For information about the optimization algorithms, see [1].

`looptune`

computes the *H _{∞}*
norm using the algorithm of [2] and structure-preserving eigensolvers from the SLICOT library. For more information
about the SLICOT library, see https://github.com/SLICOT.

## References

[1] P. Apkarian and D. Noll, "Nonsmooth H-infinity
Synthesis." *IEEE Transactions on Automatic Control*,
Vol. 51, Number 1, 2006, pp. 71–86.

[2] Bruinsma, N.A., and M. Steinbuch. "A Fast Algorithm to Compute the
H_{∞} Norm of a Transfer Function Matrix."
*Systems & Control Letters*, 14, no.4 (April 1990):
287–93.

## Extended Capabilities

## Version History

**Introduced in R2014a**

## See Also

```
looptune
(for genss)
```

| `looptuneOptions`

| `TuningGoal.Tracking`

| `TuningGoal.Gain`

| `TuningGoal.Margins`

| `slTuner`

| `addPoint`

| `getIOTransfer`

| `getLoopTransfer`

| `writeBlockValue`

| `systune`

| `hinfstruct`

(Robust Control Toolbox)