Main Content

nyquistplot

Plot Nyquist response of dynamic system

    Description

    The nyquistplot function plots the Nyquist response of a dynamic system model and returns a NyquistPlot chart object. To customize the plot, modify the properties of the chart object using dot notation. For more information, see Customize Linear Analysis Plots at Command Line.

    To obtain Nyquist response data, use nyquist.

    Creation

    Description

    np = nyquistplot(sys)plots the Nyquist response of the dynamic system model sys and returns the corresponding chart object.

    If sys is a multi-input, multi-output (MIMO) model, then bodeplot produces a grid of Bode plots with each plot displaying the frequency response of one input-output pair.

    example

    np = nyquistplot(sys1,sys2,...,sysN) plots the Nyquist response of multiple dynamic systems sys1,sys2,…,sysN on the same plot. All systems must have the same number of inputs and outputs to use this syntax.

    example

    np = nyquistplot(sys1,LineSpec1,...,sysN,LineSpecN) sets the line style, marker type, and color for the Nyquist plot of each system.

    example

    np = nyquistplot(___,w) plots responses for frequencies specified in w. You can specify a frequency range or a vector of frequencies. You can use w with any of the previous syntaxes.

    example

    np = nyquistplot(___,plotoptions) plots the Nyquist response with the plotting options specified in plotoptions. Settings you specify in plotoptions override the plotting preferences for the current MATLAB® session. This syntax is useful when you want to write a script to generate multiple plots that look the same regardless of the local preferences.

    example

    np = nyquistplot(parent,___) plots the Nyquist response in the specified parent graphics container, such as a Figure or TiledChartLayout, and sets the Parent property. Use this syntax when you want to create a plot in a specified open figure or when creating apps in App Designer.

    Input Arguments

    expand all

    Dynamic system, specified as a SISO or MIMO dynamic system model or array of dynamic system models. Dynamic systems that you can use include:

    • Continuous-time or discrete-time numeric LTI models, such as tf, zpk, or ss models.

    • Sparse state-space models, such as sparss or mechss models.

    • Generalized or uncertain LTI models such as genss or uss (Robust Control Toolbox) models. Using uncertain models requires Robust Control Toolbox™ software.

      • For tunable control design blocks, the function evaluates the model at its current value to plot the response.

      • For uncertain control design blocks, the function plots the nominal value and random samples of the model.

    • Identified LTI models, such as idtf (System Identification Toolbox), idss (System Identification Toolbox), or idproc (System Identification Toolbox) models. Using identified models requires System Identification Toolbox™ software.

    If sys is an array of models, the plot shows responses of all models in the array on the same axes.

    Line style, marker, and color, specified as a string or character vector containing symbols. The symbols can appear in any order. You do not need to specify all three characteristics (line style, marker, and color). For example, if you omit the line style and specify the marker, then the plot shows only the marker and no line.

    Example: '--or' is a red dashed line with circle markers

    Line StyleDescription
    "-"Solid line
    "--"Dashed line
    ":"Dotted line
    "-."Dash-dotted line
    MarkerDescription
    "o"Circle
    "+"Plus sign
    "*"Asterisk
    "."Point
    "x"Cross
    "_"Horizontal line
    "|"Vertical line
    "s"Square
    "d"Diamond
    "^"Upward-pointing triangle
    "v"Downward-pointing triangle
    ">"Right-pointing triangle
    "<"Left-pointing triangle
    "p"Pentagram
    "h"Hexagram
    ColorDescription
    "r"red
    "g"green
    "b"blue
    "c"cyan
    "m"magenta
    "y"yellow
    "k"black
    "w"white

    Frequencies at which to compute the response, specified as one of the following:

    • Cell array of the form {wmin,wmax} — Compute the response at frequencies in the range from wmin to wmax. If wmax is greater than the Nyquist frequency of sys, the response is computed only up to the Nyquist frequency.

    • Vector of frequencies — Compute the response at each specified frequency. For example, use logspace to generate a row vector with logarithmically spaced frequency values. The vector w can contain both positive and negative frequencies.

    • [] — Automatically select frequencies based on system dynamics.

    Specify frequencies in units of rad/TimeUnit, where TimeUnit is the TimeUnit property of the model.

    Nyquist plot options, specified as a nyquistoptions object. You can use these options to customize the Nyquist plot appearance. Settings you specify in plotoptions override the preference settings for the current MATLAB session.

    Parent container of the chart, specified as one of the following objects:

    • Figure

    • TiledChartLayout

    • UIFigure

    • UIGridLayout

    • UIPanel

    • UITab

    Properties

    expand all

    Note

    The properties listed here are only a subset. For a complete list, see NyquistPlot Properties.

    Model responses, specified as a NyquistResponse object or an array of such objects. Use this property to modify the dynamic system model or appearance for each response in the plot. Each NyquistResponse object has the following fields.

    Source data for the response, specified as a structure with the following fields.

    Dynamic system, specified as a SISO or MIMO dynamic system model or array of dynamic system models.

    When you initially create a plot, Model matches the value you specify for sys.

    Frequencies at which to compute the response, specified as one of the following:

    • Cell array of the form {wmin,wmax} — Compute the response at frequencies in the range from wmin to wmax.

    • Vector of frequencies — Compute the response at each specified frequency. For example, use logspace to generate a row vector with logarithmically spaced frequency values. The vector w can contain both positive and negative frequencies.

    • [] — Automatically select frequencies based on system dynamics.

    Specify frequencies in units of rad/TimeUnit, where TimeUnit is the TimeUnit property of the model.

    When you initially create a plot:

    • FrequencySpec matches the value you specify for the w argument.

    • If you do not specify w, FrequencySpec is empty and frequencies are selected based on the system dynamics.

    Response name, specified as a string or character vector and stored as a string.

    Response visibility, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the response in the plot.

    • "off", 0, or false — Do not display the response in the plot.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Option to list response in legend, specified as one of the following logical on/off values:

    • "on", 1, or true — List the response in the legend.

    • "off", 0, or false — Do not list the response in the legend.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Marker style, specified as one of the following values.

    MarkerDescription
    "none"No marker
    "o"Circle
    "+"Plus sign
    "*"Asterisk
    "."Point
    "x"Cross
    "_"Horizontal line
    "|"Vertical line
    "s"Square
    "d"Diamond
    "^"Upward-pointing triangle
    "v"Downward-pointing triangle
    ">"Right-pointing triangle
    "<"Left-pointing triangle
    "p"Pentagram
    "h"Hexagram

    Plot color, specified as an RGB triplet or a hexadecimal color code and stored as an RGB triplet.

    Alternatively, you can specify some common colors by name. The following table lists these colors and their corresponding RGB triplets and hexadecimal color codes.

    Color NameRGB TripletHexadecimal Color Code

    "red" or "r"

    [1 0 0]#FF0000

    "green" or "g"

    [0 1 0]#00FF00

    "blue" or "b"

    [0 0 1]#0000FF

    "cyan" or "c"

    [0 1 1]#00FFFF

    "magenta" or "m"

    [1 0 1]#FF00FF

    "yellow" or "y"

    [1 1 0]#FFFF00

    "black" or "k"

    [0 0 0]#000000

    "white" or "w"

    [1 1 1]#FFFFFF

    Line style, specified as one of the following values.

    Line StyleDescription
    "-"Solid line
    "--"Dashed line
    ":"Dotted line
    "-."Dash-dotted line

    Marker size, specified as a positive scalar.

    Line width, specified as a positive scalar.

    Response characteristics to display in the plot, specified as a CharacteristicsManager object with the following properties.

    Visibility of peak response in magnitude plot, specified as a CharacteristicOption object with the following property.

    Peak response visibility, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the peak response.

    • "off", 0, or false — Do not display the peak response.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Visibility of all stability margins, specified as a CharacteristicOption object with the following property.

    Margin visibility, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the margins.

    • "off", 0, or false — Do not display the margins.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Visibility of minimum stability margins, specified as a CharacteristicOption object with the following property.

    Margin visibility, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the margins.

    • "off", 0, or false — Do not display the margins.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Confidence region for identified models, specified as a CharacteristicOption object with the following properties.

    Confidence region visibility, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the confidence region.

    • "off", 0, or false — Do not display the confidence region.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Frequency spacing of confidence ellipses used to plot the confidence region, specified as a positive integer. For example, when DisplaySampling is 5 the confidence ellipses are shown at every fifth frequency sample.

    Number of standard deviations to display for the confidence region, specified as a positive scalar.

    Dependencies

    ConfidenceRegion is supported only for identified models, which require System Identification Toolbox software.

    Option to show response for negative frequencies, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the response for negative frequencies.

    • "off", 0, or false — Do not display the response for negative frequencies.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Frequency units, specified as one of the following values:

    • "Hz"

    • "rad/s"

    • "rpm"

    • "kHz"

    • "MHz"

    • "GHz"

    • "rad/nanosecond"

    • "rad/microsecond"

    • "rad/millisecond"

    • "rad/minute"

    • "rad/hour"

    • "rad/day"

    • "rad/week"

    • "rad/month"

    • "rad/year"

    • "cycles/nanosecond"

    • "cycles/microsecond"

    • "cycles/millisecond"

    • "cycles/hour"

    • "cycles/day"

    • "cycles/week"

    • "cycles/month"

    • "cycles/year"

    Dependencies

    By default, the response uses the frequency units of the plotted linear system. You can override the default units by specifying toolbox preferences. For more information, see Specify Toolbox Preferences for Linear Analysis Plots.

    Magnitude units, specified as one of the following:

    • "dB" — Decibels

    • "abs" — Absolute value

    Dependencies

    The default magnitude units depend on the toolbox preferences. For more information, see Specify Toolbox Preferences for Linear Analysis Plots.

    Phase units, specified as one of the following:

    • "deg" — Degrees

    • "rad" — Radians

    Dependencies

    The default phase units depend on the toolbox preferences. For more information, see Specify Toolbox Preferences for Linear Analysis Plots.

    Chart visibility, specified as one of the following logical on/off values:

    • "on", 1, or true — Display the chart.

    • "off", 0, or false — Hide the chart without deleting it. You still can access the properties of chart when it is not visible.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

    Grouping of inputs and outputs pairs, specified as one of the following:

    • "none" — Do not group inputs or outputs.

    • "inputs" — Group only inputs.

    • "outputs" — Group only outputs.

    • "all" — Group all input-output pairs.

    Option to display inputs, specified as one of the following logical on/off values or an array of such values:

    • "on", 1, or true — Display the corresponding input.

    • "off", 0, or false — Hide the corresponding input.

    InputVisible is an array when the plotted system has multiple inputs. By default, all inputs are visible in the plot.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState or an array of such values.

    Option to display outputs, specified as one of the following logical on/off values or an array of such values:

    • "on", 1, or true — Display the corresponding output.

    • "off", 0, or false — Hide the corresponding output.

    OutputVisible is an array when the plotted system has multiple outputs. By default, all outputs are visible in the plot.

    The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState or an array of such values.

    Object Functions

    addResponseAdd dynamic system response to existing response plot
    showConfidence (System Identification Toolbox)Display confidence regions on response plots for identified models
    zoomcpZoom Nyquist plot to region around critical point

    Examples

    collapse all

    For this example, use the plot handle to change the phase units to radians and to turn the grid on.

    Generate a random state-space model with 5 states and create the Nyquist diagram with chart object np.

    rng("default")
    sys = rss(5);
    np = nyquistplot(sys);

    MATLAB figure

    Change the phase units to radians and turn on the grid. To do so, edit properties of the chart object.

    np.PhaseUnit = "rad";
    grid on;

    MATLAB figure

    The Nyquist plot automatically updates when you modify the chart object.

    Alternatively, you can also use the nyquistoptions command to specify the required plot options. First, create an options set based on the toolbox preferences.

    plotoptions = nyquistoptions("cstprefs");

    Change properties of the options set by setting the phase units to radians and enabling the grid.

    plotoptions.PhaseUnits = "rad";
    plotoptions.Grid = "on";
    nyquistplot(sys,plotoptions);

    MATLAB figure

    Depending on your own toolbox preferences, the plot you obtain might look different from this plot. Only the properties that you set explicitly, in this example PhaseUnits and Grid, override the toolbox preferences.

    Create a Nyquist plot of a dynamic system model and create the corresponding chart object.

    sys = tf(100,[1,2,1]);
    np = nyquistplot(sys);

    MATLAB figure

    Change the text of the plot title..

    np.Title.String = "Nyquist Plot of sys";

    MATLAB figure

    Plot the Nyquist frequency response of a dynamic system. Assign a variable name to the plot handle so that you can access it for further manipulation.

    sys = tf(100,[1,2,1]);
    h = nyquistplot(sys);

    MATLAB figure

    Zoom in on the critical point, (–1,0). You can do so interactively by right-clicking on the plot and selecting Zoom on (-1,0). Alternatively, use the zoomcp command on the plot handle h.

    zoomcp(h)

    MATLAB figure

    Compare the frequency responses of identified state-space models of order 2 and 6 along with their 1-std confidence regions rendered at every 50th frequency sample.

    Load the identified model data and estimate the state-space models using n4sid. Then, plot the Nyquist diagram.

    load iddata1
    sys1 = n4sid(z1,2); 
    sys2 = n4sid(z1,6);
    w = linspace(10,10*pi,256);
    np = nyquistplot(sys1,sys2,w);

    MATLAB figure

    Both models produce about 76% fit to data. However, sys2 shows higher uncertainty in its frequency response, especially close to Nyquist frequency as shown by the plot. To see this, show the confidence region at a subset of the points at which the Nyquist response is displayed.

    np.ShowNegativeFrequencies = "off";
    np.Characteristics.ConfidenceRegion.DisplaySampling = 50;
    np.Characteristics.ConfidenceRegion.Visible = "on";

    MATLAB figure

    Alternatively, to turn on the confidence region display, right-click the plot and select Characteristics > Confidence Region.

    For this example, consider a MIMO state-space model with 3 inputs, 3 outputs and 3 states. Create a Nyquist plot, display only the partial contour.

    Create the MIMO state-space model sys_mimo.

    J = [8 -3 -3; -3 8 -3; -3 -3 8];
    F = 0.2*eye(3);
    A = -J\F;
    B = inv(J);
    C = eye(3);
    D = 0;
    sys_mimo = ss(A,B,C,D);
    size(sys_mimo)
    State-space model with 3 outputs, 3 inputs, and 3 states.
    

    Create a Nyquist plot with chart object np.

    np = nyquistplot(sys_mimo);

    MATLAB figure

    Suppress the negative frequency data from the plot.

    np.ShowNegativeFrequencies = "off";

    MATLAB figure

    The Nyquist plot automatically updates when you modify the chart object. For MIMO models, nyquistplot produces an array of Nyquist diagrams, each plot displaying the frequency response of one I/O pair.

    Tips

    • There are two zoom options available from the right-click menu that apply specifically to Nyquist plots:

      • Full View — Clips unbounded branches of the Nyquist plot, but still includes the critical point (–1, 0).

      • Zoom on (-1,0) — Zooms around the critical point (–1,0). To access critical-point zoom programmatically, use the zoomcp command

    Version History

    Introduced before R2006a

    expand all