# robgain

Robust performance of uncertain system

## Syntax

## Description

`[`

calculates
the robust performance margin for an uncertain system and the performance
level `perfmarg`

,`wcu`

]
= robgain(`usys`

,`gamma`

)`gamma`

. The performance of `usys`

is
measured by its peak gain or peak singular value (see Robustness and Worst-Case Analysis).
The performance margin is relative to the uncertainty level specified
in `usys`

. A margin greater than 1 means that the
gain of `usys`

remains below `gamma`

for
all values of the uncertainty modeled in `usys`

.
A margin less than 1 means that at some frequency, the gain of `usys`

exceeds `gamma`

for
some values of the uncertain elements within their specified ranges.
For example, a margin of 0.5 implies the following:

The gain of

`usys`

remains below`gamma`

as long as the uncertain element values stay within 0.5 normalized units of their nominal values.There is a perturbation of size 0.5 normalized units that drives the peak gain to the level

`gamma`

.

The structure `perfmarg`

contains upper and
lower bounds on the actual performance margin and the critical frequency
at which the margin upper bound is smallest. The structure `wcu`

contains
the uncertain-element values that drive the peak gain to the level `gamma`

.

`[`

assesses
the robust performance margin for the frequencies specified by `perfmarg`

,`wcu`

]
= robgain(`usys`

,`gamma`

,`w`

)`w`

.

If

`w`

is a cell array of the form`{wmin,wmax}`

, then`robgain`

restricts the performance margin computation to the interval between`wmin`

and`wmax`

.If

`w`

is a vector of frequencies, then`robgain`

computes the performance margin at the specified frequencies only.

`[`

specifies
additional options for the computation. Use `perfmarg`

,`wcu`

]
= robgain(___,`opts`

)`robOptions`

to
create `opts`

. You can use this syntax with any
of the previous input-argument combinations.

## Examples

## Input Arguments

## Output Arguments

## Algorithms

Computing the robustness margin at a particular frequency is
equivalent to computing the structured singular value, *μ*,
for some appropriate block structure (*μ*-analysis).

For `uss`

and `genss`

models, `robgain(usys)`

and `robgain(usys,{wmin,wmax})`

use
an algorithm that finds the smallest margin across frequency. This
algorithm does not rely on frequency gridding and is not adversely
affected by discontinuities of the *μ* structured
singular value. See Getting Reliable Estimates of Robustness Margins for
more information.

For `ufrd`

and `genfrd`

models, `robgain`

computes
the *μ* lower and upper bounds at each frequency
point. This computation offers no guarantee between frequency points
and can be inaccurate if there are discontinuities or sharp peaks
in *μ*. The syntax `robgain(uss,w)`

,
where `w`

is a vector of frequency points, is the
same as `robgain(ufrd(uss,w))`

and also relies on
frequency gridding to compute the margin.

In general, the algorithm for state-space models is faster and
safer than the frequency-gridding approach. In some cases, however,
the state-space algorithm requires many *μ* calculations.
In those cases, specifying a frequency grid as a vector `w`

can
be faster, provided that the robustness margin varies smoothly with
frequency. Such smooth variation is typical for systems with dynamic
uncertainty.

## See Also

`robstab`

| `robOptions`

| `wcgain`

| `uscale`

**Introduced in R2016b**