Main Content

Visualize disk-based stability margins

`diskmarginplot(`

plots the disk-based gain
and phase margins for the SISO or MIMO negative feedback loop
`L`

)`feedback(L,eye(N))`

, where `N`

is the number of
inputs and outputs in the open-loop response `L`

.

For MIMO responses, `diskmarginplot`

plots the multiloop disk
margins. The disk-based gain margin at each frequency is ±*GM*, where
*GM* is the value shown in the plot in dB. Similarly, the disk-based
phase margin is ±*PM* degrees, where *PM* is the value
shown on the plot. For details about disk-based gain and phase margins, see `diskmargin`

.

`diskmarginplot(___,`

plots
the disk-based gain and phase margins computed using the skew `sigma`

)`sigma`

to bias the gain variation toward gain increase (`sigma`

> 0) or gain
decrease (`sigma`

< 0). If you have used
`diskmargin`

to obtain disk-based margins with some particular
`sigma`

, you can use this syntax to see the frequency dependence of
the margins at that `sigma`

value. For `sigma`

≠ 0,
the plotted value is `GM = min(gmax,1/max(0,gmin))`

. In other words, the
plot shows the largest amount of gain change `[1/GM,GM]`

that fits within
the disk-based gain margin `[gmin,gmax]`

of the system at the specified
`sigma`

.

`diskmarginplot(___,`

plots the
margins at the frequencies specified by `w`

)`w`

.

If

`w`

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

, then the plot shows the margins at frequencies ranging between`wmin`

and`wmax`

.If

`w`

is a vector of frequencies, then the plot shows the margins at each specified frequency.

`diskmarginplot(`

plots the range of
simultaneous gain and phase variations corresponding to a disk-based gain margin. The plot
also shows the maximum gain-only and phase-only variations (this disk-based gain and phase
margins). `DGM`

)`DGM`

is a vector of the form `[gmin,gmax]`

.
The gain margin `DGM`

can also be a scalar, which is equivalent to
specifying the symmetric gain variation `[1/DGM,DGM]`

. To plot the ranges
for multiple disk-based gain margins at once, use a two-column matrix of the form
`[gmin1,gmax1;...;gminN,gmaxN]`

. For more information about disk-based
gain margins, see `diskmargin`

.

`diskmarginplot(`

plots the
complex-valued disk of modeled gain and phase variations corresponding to the disk-based
gain margin `DGM`

,'disk')`DGM`

. For details about how disk-margin analysis models
gain and phase variations, see Stability Analysis Using Disk Margins.

`diskmarginplot(`

plots the
exclusion region in the Nyquist plane corresponding to the disk margin
`DGM`

,'nyquist')`DGM`

. The requirement that the closed-loop system remain stable for
gain or phase variations within the disk corresponding to `DGM`

amounts
to a requirement that the open-loop response remain outside a disk-shaped exclusion region
in the Nyquist plane. For more information, see Stability Analysis Using Disk Margins.

`diskmarginplot(`

plots the range of gain and phase variations corresponding to the disk size
`alpha`

,`sigma`

,___)`alpha`

and skew `sigma`

. If either
`alpha`

or `sigma`

is a vector, then the plot
includes the ranges for all specified values. If both `alpha`

and
`sigma`

are vectors, then the plot includes the ranges for the pairs
`alpha1,sigma1;...;alphaN,sigmaN`

.

To plot the modeled uncertainty disk corresponding to
`alpha`

,`sigma`

, use this syntax with the
`'disk'`

flag. To plot the corresponding exclusion disk in the Nyquist
plane, use this syntax with the `'nyquist'`

flag.

`diskmarginplot(`

draws a
plot on the axes specified by an axes handle (`AX`

,___)`axes`

or a
`UIaxes`

object). Use this argument to specify axes when creating apps in
Develop Apps Using App Designer. You can use this argument with any of the
previous syntaxes to draw any of the plots that `diskmarginplot`

can
generate.

[1] Seiler, Peter, Andrew Packard, and
Pascal Gahinet. “An Introduction to Disk Margins [Lecture Notes].” *IEEE Control
Systems Magazine* 40, no. 5 (October 2020): 78–95.

`getDGM`

| `wcdiskmarginplot`

| `diskmargin`

| `diskmarginoptions`

| `gm2dm`

| `umargin`