Plot Bode frequency response with additional plot customization options

`h = bodeplot(sys)`

bodeplot(sys)

bodeplot(sys1,sys2,...)

bodeplot(AX,...)

bodeplot(..., plotoptions)

bodeplot(sys,w)

`h = bodeplot(sys)`

plot the Bode magnitude
and phase of the dynamic
system model `sys`

and returns the
plot handle `h`

to the plot. You can use this handle
to customize the plot with the `getoptions`

and `setoptions`

commands.

`bodeplot(sys)`

draws the Bode plot of the
model `sys`

. The frequency range and number of points
are chosen automatically.

`bodeplot(sys1,sys2,...)`

graphs the Bode
response of multiple models `sys1`

,`sys2`

,...
on a single plot. You can specify a color, line style, and marker
for each model, as in

bodeplot(sys1,'r',sys2,'y--',sys3,'gx')

`bodeplot(AX,...)`

plots into the axes with
handle `AX`

.

`bodeplot(..., plotoptions)`

plots the Bode
response with the options specified in `plotoptions`

.
Type

help bodeoptions

for a list of available plot options. See Match Phase at Specified Frequency. for an example of phase matching
using the `PhaseMatchingFreq`

and `PhaseMatchingValue`

options.

`bodeplot(sys,w)`

draws the Bode plot for
frequencies specified by `w`

. When `w = {wmin,wmax}`

,
the Bode plot is drawn for frequencies between `wmin`

and `wmax`

(in `rad/TimeUnit`

,
where `TimeUnit`

is the time units of the input dynamic
system, specified in the `TimeUnit`

property
of `sys`

.). When `w`

is a user-supplied
vector `w`

of frequencies, in rad/TimeUnit, the Bode
response is drawn for the specified frequencies.

See `logspace`

to generate
logarithmically spaced frequency vectors.

Generate a Bode plot.

sys = rss(5); h = bodeplot(sys);

Change the units to Hz and suppress the phase plot. To do so, edit properties of the plot handle, `h`

.

setoptions(h,'FreqUnits','Hz','PhaseVisible','off');

The plot automatically updates when you call `setoptions`

.

Create a Bode plot of a dynamic system.

sys = tf(1,[1 1]); h = bodeplot(sys);

Fix the phase at 1 rad/s to 750 degrees. To do so, get the plot properties. Then alter the properties `PhaseMatchingFreq`

and `PhaseMatchingValue`

to match a phase to a specified frequency.

```
p = getoptions(h);
p.PhaseMatching = 'on';
p.PhaseMatchingFreq = 1;
p.PhaseMatchingValue = 750;
```

Update the plot.

setoptions(h,p);

The first bode plot has a phase of -45 degrees at a frequency of 1 rad/s. Setting the phase matching options so that at 1 rad/s the phase is near 750 degrees yields the second Bode plot. Note that, however, the phase can only be -45 + N*360, where N is an integer, and so the plot is set to the nearest allowable phase, namely 675 degrees (or 2*360 - 45 = 675).

Compare the frequency responses of identified state-space models of order 2 and 6 along with their 2 σ confidence regions.

load iddata1 sys1 = n4sid(z1, 2) % discrete-time IDSS model of order 2 sys2 = n4sid(z1, 6) % discrete-time IDSS model of order 6

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:

w = linspace(8,10*pi,256); h = bodeplot(sys1,sys2,w); setoptions(h, 'PhaseMatching', 'on', 'ConfidenceRegionNumberSD', 2);

Use the context menu by right-clicking **Characteristics** > **Confidence
Region** to turn on the confidence region characteristic.

Compare the frequency response of a parametric model, identified from input/output data, to a nonparametric model identified using the same data.

Identify parametric and non-parametric models based on data.

load iddata2 z2; w = linspace(0,10*pi,128); sys_np = spa(z2,[],w); sys_p = tfest(z2,2);

`spa`

and`tfest`

require System Identification Toolbox™ software.`sys_np`

is a nonparametric identified model.`sys_p`

is a parametric identified model.Create a Bode plot that includes both systems.

opt = bodeoptions; opt.PhaseMatching = 'on'; bodeplot(sys_np,sys_p,w, opt);

`bode`

| `bodeoptions`

| `getoptions`

| `setoptions`

| `showConfidence`

Was this topic helpful?