# nichols

Nichols response of dynamic system

## Syntax

``````[mag,phase,wout] = nichols(sys)``````
``````[mag,phase,wout] = nichols(sys,w)``````
``nichols(___)``

## Description

``````[mag,phase,wout] = nichols(sys)``` computes the frequency response of dynamic system model `sys` and returns the magnitude and phase of the response at each frequency in the vector `wout`. The function automatically determines frequencies in `wout` based on system dynamics.```

example

``````[mag,phase,wout] = nichols(sys,w)``` returns the response data at the frequencies specified by `w`. You can specify a frequency range or a vector of frequencies.```

example

````nichols(___)` plots a Nichols chart of the frequency response of `sys`. The plot displays the magnitude (in dB) and phase (in degrees) of the system response as a function of frequency. Use `ngrid` to superimpose Nichols chart grid lines on an existing SISO Nichols chart. For more plot customization options, use `nicholsplot`.To plot responses for multiple dynamic systems on the same plot, you can specify `sys` as a comma-separated list of models. For example, `nichols(sys1,sys2,sys3)` plots the responses for three models on the same plot.To specify a color, line style, and marker for each system in the plot, specify a `LineSpec` value for each system. For example, `nichols(sys1,LineSpec1,sys2,LineSpec2)` plots two models and specifies their plot style. For more information on specifying a `LineSpec` value, see `nicholsplot`.```

## Examples

collapse all

Plot the Nichols response with Nichols grid lines for the following system:

`$H\left(s\right)=\frac{-4{s}^{4}+48{s}^{3}-18{s}^{2}+250s+600}{{s}^{4}+30{s}^{3}+282{s}^{2}+525s+60}.$`

```H = tf([-4 48 -18 250 600],[1 30 282 525 60]); nichols(H) ngrid```

Create a Nichols plot over a specified frequency range. Use this approach when you want to focus on the dynamics in a particular range of frequencies.

```H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600]); nichols(H,{1,100})```

The cell array `{1,100}` specifies the minimum and maximum frequency values in the Nichols plot. When you provide frequency bounds in this way, the function selects intermediate points for frequency response data.

Alternatively, specify a vector of frequency points to use for evaluating and plotting the frequency response.

```w = 1:0.5:100; nichols(H,w,'.-')```

`nichols` plots the frequency response at the specified frequencies only.

Compare the frequency response of a continuous-time system to an equivalent discretized system on the same Nichols plot.

Create continuous-time and discrete-time dynamic systems.

```H = tf([1 0.1 7.5],[1 0.12 9 0 0]); Hd = c2d(H,0.5,'zoh');```

Create a Nichols plot that displays both systems.

`nichols(H,Hd)`

Specify the line style, color, or marker for each system in a Nichols plot using the `LineSpec` input argument.

```H = tf([1 0.1 7.5],[1 0.12 9 0 0]); Hd = c2d(H,0.5,'zoh'); nichols(H,'r',Hd,'b--')```

The first `LineSpec`, `'r'`, specifies a solid red line for the response of `H`. The second `LineSpec`, `'b--'`, specifies a dashed blue line for the response of `Hd`.

Compute the magnitude and phase of the frequency response of a SISO system.

If you do not specify frequencies, `nichols` chooses frequencies based on the system dynamics and returns them in the third output argument.

```H = tf([1 0.1 7.5],[1 0.12 9 0 0]); [mag,phase,wout] = nichols(H);```

Because `H` is a SISO model, the first two dimensions of `mag` and `phase` are both 1. The third dimension is the number of frequencies in `wout`.

`size(mag)`
```ans = 1×3 1 1 110 ```
`length(wout)`
```ans = 110 ```

Thus, each entry along the third dimension of `mag` gives the magnitude of the response at the corresponding frequency in `wout`.

For this example, create a 2-output, 3-input system.

```rng(0,'twister'); H = rss(4,2,3);```

For this system, `nichols` plots the frequency responses of each I/O channel in a separate plot in a single figure.

`nichols(H)`

Compute the magnitude and phase of these responses at 20 frequencies between 1 and 10 radians.

```w = logspace(0,1,20); [mag,phase] = nichols(H,w);```

`mag` and `phase` are three-dimensional arrays, in which the first two dimensions correspond to the output and input dimensions of `H`, and the third dimension is the number of frequencies. For instance, examine the dimensions of `mag`.

`size(mag)`
```ans = 1×3 2 3 20 ```

Thus, for example, `mag(1,3,10)` is the magnitude of the response from the third input to the first output, computed at the 10th frequency in `w`. Similarly, `phase(1,3,10)` contains the phase of the same response.

Create a Nichols plot of a model with complex coefficients and a model with real coefficients on the same plot.

```rng(0) A = [-3.50,-1.25-0.25i;2,0]; B = [1;0]; C = [-0.75-0.5i,0.625-0.125i]; D = 0.5; Gc = ss(A,B,C,D); Gr = rss(7); nichols(Gc,Gr) legend('Complex-coefficient model','Real-coefficient model','Location','southwest')```

```ans = Legend (Complex-coefficient model, Real-coefficient model) with properties: String: {'Complex-coefficient model' 'Real-coefficient model'} Location: 'southwest' Orientation: 'vertical' FontSize: 9 Position: [0.1491 0.1564 0.3785 0.0789] Units: 'normalized' Use GET to show all properties ```

For models with complex coefficients, `nichols` shows a contour comprised of both positive and negative frequencies. For models with real coefficients, the plot shows only positive frequencies, even when complex-coefficient models are present. You can click the curve to further examine which section and values correspond to positive and negative frequencies.

## Input Arguments

collapse 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. Frequency grid `w` must be specified for sparse 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.

• Frequency-response data models such as `frd` models. For such models, the function plots the response at the frequencies defined in 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.

Frequencies at which to compute and plot frequency response, specified as the cell array `{wmin,wmax}` or as a vector of frequency values.

• If `w` is a cell array of the form `{wmin,wmax}`, then the function computes the response at frequencies ranging between `wmin` and `wmax`.

• If `w` is a vector of frequencies, then the function computes 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.

For models with complex coefficients, if you specify a frequency range of [wmin,wmax] for your plot, then the plot shows a contour comprised of both positive frequencies [wmin,wmax] and negative frequencies [–wmax,–wmin].

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

## Output Arguments

collapse all

Magnitude of the system response in absolute units, returned as a 3-D array. The dimensions of this array are (number of system outputs) × (number of system inputs) × (number of frequency points).

To convert the magnitude from absolute units to decibels, use:

```magdb = 20*log10(mag) ```

Phase of the system response in degrees, returned as a 3-D array. The dimensions of this array are (number of outputs)-by-(number of inputs)-by-(number of frequency points).

Frequencies at which the function returns the system response, returned as a column vector. The function chooses the frequency values based on the model dynamics, unless you specify frequencies using the input argument `w`.

`wout` also contains negative frequency values for models with complex coefficients.

Frequency values are in radians/`TimeUnit`, where `TimeUnit` is the value of the `TimeUnit` property of `sys`.

## Version History

Introduced before R2006a