## Documentation Center |

Nyquist plot of frequency response

`nyquist(sys)nyquist(sys,w)nyquist(sys1,sys2,...,sysN)nyquist(sys1,sys2,...,sysN,w)nyquist(sys1,'PlotStyle1',...,sysN,'PlotStyleN')[re,im,w] = nyquist(sys)[re,im]
= nyquist(sys,w)[re,im,w,sdre,sdim] = nyquist(sys)`

`nyquist` creates a Nyquist plot of the frequency response
of a dynamic system model.
When invoked without left-hand arguments, `nyquist` produces
a Nyquist plot on the screen. Nyquist plots are used to analyze system
properties including gain margin, phase margin, and stability.

`nyquist(sys)` creates a Nyquist plot of
a dynamic system `sys`. This model can be continuous
or discrete, and SISO or MIMO. In the MIMO case, `nyquist` produces
an array of Nyquist plots, each plot showing the response of one particular
I/O channel. The frequency points are chosen automatically based on
the system poles and zeros.

`nyquist(sys,w)` explicitly
specifies the frequency range or frequency points to be used for the
plot. To focus on a particular frequency interval, set `w
= {wmin,wmax}`. To use particular frequency points, set `w` to
the vector of desired frequencies. Use `logspace` to
generate logarithmically spaced frequency vectors. Frequencies must
be in `rad/TimeUnit`, where `TimeUnit` is
the time units of the input dynamic system, specified in the `TimeUnit` property of `sys`.

`nyquist(sys1,sys2,...,sysN)` or `nyquist(sys1,sys2,...,sysN,w)` superimposes
the Nyquist plots of several LTI models on a single figure. All systems
must have the same number of inputs and outputs, but may otherwise
be a mix of continuous- and discrete-time systems. You can also specify
a distinctive color, linestyle, and/or marker for each system plot
with the syntax `nyquist(sys1,'PlotStyle1',...,sysN,'PlotStyleN')`.

`[re,im,w] = nyquist(sys)` and `[re,im]
= nyquist(sys,w)` return the real and imaginary parts of
the frequency response at the frequencies `w` (in `rad/TimeUnit`). `re` and `im` are
3-D arrays (see "Arguments" below for details).

`[re,im,w,sdre,sdim] = nyquist(sys)` also
returns the standard deviations of `re` and `im` for
the identified system `sys`.

The output arguments `re` and `im` are
3-D arrays with dimensions

For SISO systems, the scalars `re(1,1,k)` and `im(1,1,k)` are
the real and imaginary parts of the response at the frequency ω* _{k}* =
w(k).

For MIMO systems with transfer function *H*(*s*), `re(:,:,k)` and `im(:,:,k)` give
the real and imaginary parts of *H*(*jω _{k}*)
(both arrays with as many rows as outputs and as many columns as inputs).
Thus,

where *h _{ij}* is the transfer
function from input

**Nyquist Plot of Dynamic System**

Plot the Nyquist response of the system

H = tf([2 5 1],[1 2 3]) nyquist(H)

The nyquist function has support for M-circles, which are the contours of the constant closed-loop magnitude. M-circles are defined as the locus of complex numbers where

is a constant value. In this equation, ω is the frequency
in radians/TimeUnit, where `TimeUnit` is the system
time units, and *G* is the collection of complex
numbers that satisfy the constant magnitude requirement.

To activate the grid, select **Grid** from
the right-click menu or type

grid

at the MATLAB^{®} prompt. This figure shows the M circles for
transfer function *H*.

You have two zoom options available from the right-click menu that apply specifically to Nyquist plots:

**Tight**—Clips unbounded branches of the Nyquist plot, but still includes the critical point (-1, 0)**On (-1,0)**— Zooms around the critical point (-1,0)

Also, click anywhere on the curve to activate data markers that display the real and imaginary values at a given frequency. This figure shows the nyquist plot with a data marker.

Compute the standard deviation of the real and imaginary parts of frequency response of an identified model. Use this data to create a 3σ plot of the response uncertainty.

Identify a transfer function model based on data. Obtain the standard deviation data for the real and imaginary parts of the frequency response.

load iddata2 z2; sys_p = tfest(z2,2); w = linspace(-10*pi,10*pi,512); [re, im, ~, sdre, sdim] = nyquist(sys_p,w);

`sys_p` is an identified transfer function
model. `sdre` and `sdim` contain `1-std` standard
deviation uncertainty values in `re` and `im` respectively.

Create a `Nyquist` plot showing the response
and its *3σ* uncertainty:

re = squeeze(re); im = squeeze(im); sdre = squeeze(sdre); sdim = squeeze(sdim); plot(re,im,'b', re+3*sdre, im+3*sdim, 'k:', re-3*sdre, im-3*sdim, 'k:')

Was this topic helpful?