Bode Plots

Bode Plot Basics

  1. Bode form
    1. Type 1: K0(jω)nK_0(j\omega)^n
    2. Type 2: jωτ+1j\omega\tau + 1
    3. Type 2: (jωτ+1)1(j\omega\tau+1)^{-1}
    4. Type 3: (jωωn)2+2ζjωωn+1\left(\frac{j\omega}{\omega_n}\right)^2 + 2\zeta \frac{j\omega}{\omega_n} + 1
    5. Type 3: [(jωωn)2+2ζjωωn+1]1\left[\left(\frac{j\omega}{\omega_n}\right)^2 + 2\zeta \frac{j\omega}{\omega_n} + 1 \right]^{-1}
    6. Second order systems
  2. Bode plot examples
    1. Example 1
      1. Type 1 factor
    2. Type 2 factor
    3. Type 3 factor
    4. Combining plots
    5. Example 2
      1. Type 1 term
    6. Type 2 terms
    7. Example 3
  3. Bode plots using software
    1. Example 1 - MATLAB
    2. Example 2 - MATLAB
    3. Example 3 - MATLAB

Bode form

Definition: (Bode form) The bode form of a transfer function is a factored form where the constant term in each factor is unity:
G(jω)=K(1+jwτ1)((jωωn1)2+2ζjωωn1+1)jw(1+jwτ2)((jωωn2)2+2ζjωωn2+1) G(j \omega) = K \cdot \dfrac{(1+jw\tau_1) \left(\left(\dfrac{j\omega}{\omega_{n_1}}\right)^2 + 2\zeta \dfrac{j\omega}{\omega_{n_1}} + 1\right) \dots }{jw (1+jw\tau_2) \left(\left(\dfrac{j\omega}{\omega_{n_2}}\right)^2 + 2\zeta \dfrac{j\omega}{\omega_{n_2}} + 1\right) \dots}
It is necessary to examine each of these factors above and learn how they contribute to the shape of the system spectrum. We now begin this activity in earnest. The three types of factors are:

For example consider for some constant KK the transfer function,

KG(s)=Ks+3s(s2+2s+4), K \cdot G(s) = K\frac{s+\color{red}{3}}{s(s^2 + 2s + \color{blue}{4})},
where ss is the complex frequency variable jωj\omega. It can be written as
KG(s)=3K(s3+1)4s((s2)2+s2+1)s=jω=3K4jω3+1jω((jω2)2+jω2+1). \begin{align*} KG(s) =& \frac{\color{red}{3}K \left(\frac{s}{3}+1\right)}{\color{blue}{4}s \left( \big(\frac{s}{2}\big)^2 + \frac{s}{2} + 1 \right)}\Bigg|_{s=j\omega} \\ =& \frac{\color{red}{3}K}{\color{blue}{4}} \frac{\frac{j\omega}{3}+1}{j\omega \left(\big(\frac{j\omega}{2}\big)^2 + \frac{j\omega}{2} + 1\right)}. \end{align*}
It can then be expanded as:
KG(jω)=3K4jω3+1jω[(jω2)2+jω2+1]=3K4(jω)1Type 1(jω3+1)Type 2[(jω2)2+jω2+1]1Type 3. \begin{align*} KG(j\omega) &= \frac{3K}{4} \frac{\frac{j\omega}{3}+1}{j\omega \left[\Big(\frac{j\omega}{2}\Big)^2 + \frac{j\omega}{2} + 1\right]} \\ &= \underbrace{\frac{3K}{4}(j\omega)^{-1}}_{\text{Type 1}} \cdot \underbrace{\left(\frac{j\omega}{3}+1\right)}_{\text{Type 2}} \cdot \underbrace{\left[\Big(\frac{j\omega}{2}\Big)^2 + \frac{j\omega}{2} + 1\right]^{-1}}_{\text{Type 3}}. \end{align*}

Type 1: K0(jω)nK_0(j\omega)^n

Its magnitude is

logM=logK0(jω)n=logK0+nlogω. \begin{align*} \log M &= \log |K_0 (j\omega)^n| \\ &= \log |K_0| + n \log \omega. \end{align*}

It is a linear function of logω\log \omega; hence it gives a line of slope nn passing through the value logK0\log |K_0| at ω=1\omega = 1. This line is called a low-frequency asymptote.

In our example above, we had K0(jω)1K_0(j\omega)^{-1}. Its magnitude plot is shown in the figure below.

For Type 1 factor, its phase is

K0(jω)n=(jω)n=njω=n90. \begin{align*} \angle K_0(j\omega)^n &= \angle (j\omega)^n \\ &= n \angle j\omega \\ &= n \cdot 90^\circ. \end{align*}
The phase is therefore a constant independent of ω\omega.

In our example above, we had K0(jω)1K_0(j\omega)^{-1} . Its phase plot is shown above. In this example the phase is 90-90^\circ for all ω\omega.

Type 2: jωτ+1j\omega\tau + 1

To study jωτ+1|j\omega\tau+1| and (jωτ+1)\angle(j\omega\tau+1) as a function of ω\omega, we will look at different cases as below:

For the magnitude plot,

logMlogjωτ=logωτ=logτ+logω. \begin{align*} \log M &\approx \log |j\omega\tau| \\ &= \log \omega\tau \\ &= \log \tau + \log \omega. \end{align*}

This gives a line of slope 11 passing through the point (1/τ,1)(1/\tau,1) on a plot of log-log scale. Note these are just asymptotes; the actual value of MM at ω=1/τ\omega = 1/\tau is 2\sqrt{2} The figure below shows the magnitude slope "steps up" by 11 at the breakpoint.

As for the phase plot,

ϕ(jωτ)=90. \begin{align*} \phi &\approx \angle(j\omega\tau) \\ &= 90^\circ. \end{align*}
ϕ=(j+1)=45. \begin{align*} \phi &= \angle(j+1) \\ &= 45^\circ. \end{align*}

The figure above shows that the phase "steps up" by 9090^\circ as we go past the breakpoint.

Type 2: (jωτ+1)1(j\omega\tau+1)^{-1}

Since this type of factor is the inverse of the one we just discussed, the magnitude and phase plots are reflections of the corresponding plots for the stable real zero with respect to the horizontal axis,

Type 3: (jωωn)2+2ζjωωn+1\left(\frac{j\omega}{\omega_n}\right)^2 + 2\zeta \frac{j\omega}{\omega_n} + 1

Finally we get to the second order term. Here, we start by writing out the complex number in its Cartesian form:

(jωωn)2+2ζjωωn+1=(1(ωωn)2)real part+2ζωωnimag. partj\begin{aligned} \left(\frac{j\omega}{\omega_n}\right)^2 + 2\zeta \frac{j\omega}{\omega_n} + 1 = \underbrace{\left(1- \left(\frac{\omega}{\omega_n}\right)^2\right)}_{\text{real part}} + \underbrace{2\zeta\frac{\omega}{\omega_n}}_{\text{imag. part}}j \end{aligned}

Note that ωn\omega_n in the form of this term is what is called the "natural frequency". As before we will consider different cases: ωωn\omega \ll \omega_n and ωωn\omega \gg \omega_n.

For the magnitude plot we have the following:

Therefore, for factor of Type 3 above the magnitude slope “steps up” by 2 as we go through the breakpoint.

For the phase plot we have:

The magnitude and phase plots are shown below:

Note that the extremal value (peak or trough) does not happen at ω=ωn\omega = \omega_n but rather at a different frequency called the resonant frequency.

Type 3: [(jωωn)2+2ζjωωn+1]1\left[\left(\frac{j\omega}{\omega_n}\right)^2 + 2\zeta \frac{j\omega}{\omega_n} + 1 \right]^{-1}

Similar to the type 2 case, now the phase and magnitude plots are reflected about the xx axis as shown in the plot below.

This brings us to the end of our discussion on creating phase/magnitude plots for the Bode primitives. Next lecture we will do a full fledged example but before that we wrap up the current one with a discussion of resonant frequency.

Second order systems

Systems that are of Type 3, i.e. having the form

[(jωωn)2+2ζ(jωωn)+1]1ωn2s2+2ζωns+ωn2 \left[ \left(\dfrac{j\omega}{\omega_n}\right)^2 + 2\zeta \left(\dfrac{j\omega}{\omega_n}\right) + 1 \right]^{-1} \qquad \Leftrightarrow \qquad \dfrac{\omega_n^2}{s^2+2\zeta\omega_ns + \omega_n^2}

are called second-order systems since they are associated with second order ODE's of the form

f(t)+2ζωnf(t)+ωn2f(t)=x(t) f''(t) + 2\zeta \omega_n f'(t) + \omega_n^2 f(t) = x(t)
where x(t)x(t) is the input to the system. In the above:

For a system with a G(jω)G(j\omega) as above, we can derive the magnitude response as:

M(ω)=G(jω)=ωn2ω2+2jζωnω+ωn2=11(ωωn)2+2ζωωnj=1[1(ωωn)2]2+4ζ2(ωωn)2=11+(4ζ22)(ωωn)2+(ωωn)4\begin{aligned} M(\omega) = |G(j\omega)| &= \left| \frac{\omega^2_n}{-\omega^2 + 2j\zeta\omega_n \omega + \omega^2_n}\right| = \left| \frac{1}{1 - \big(\frac{\omega}{\omega_n}\big)^2 + 2\zeta \frac{\omega}{\omega_n}j} \right| \\ &= \frac{1}{\sqrt{\left[1-\big(\frac{\omega}{\omega_n}\big)^2\right]^2 + 4\zeta^2\big(\frac{\omega}{\omega_n}\big)^2}} \\ &= \frac{1}{\sqrt{1 + (4\zeta^2-2)\big(\frac{\omega}{\omega_n}\big)^2 + \big(\frac{\omega}{\omega_n}\big)^4}} \end{aligned}

if we set z:=ωωnz:= \frac{\omega}{\omega_n} as a new variable we can examine the new function M(z)M(z). As a function of zz, the function M(z)M(z) attains a maximum when z=±12ζ2z = \pm \sqrt{1-2 \zeta ^2}.

This means

ω=ωn12ζ2 \omega = \omega_n \sqrt{1-2\zeta^2}
since ωn\omega_n cannot be negative. Furthermore, we see that there is an extremum for real valued ω\omega only for ζ[0,21/2]\zeta \in \left[0, 2^{-1/2}\right]. This
ωr:=ωn12ζ2\omega_r := \omega_n \sqrt{1-2\zeta^2}
is called the resonant frequency defined above - a frequency at which bad things can happen.

Finally, second order systems are bi-parametric - i.e. while the general shape of the magnitude/phase plots are as discussed above, the exact nature depends on both ωn\omega_n as well as ζ\zeta.

This link allows one to change these parameters to visualize how the plots change.

Bode plot examples

Let us consider a few examples of plotting Bode diagrams (i.e. the magnitude/phase plots) for a few system transfer functions.

Example 1

Let us start with the example we considered in the last lecture. Namely,

G(s)=s+3s(s2+2s+4) G(s) = \frac{s+3}{s(s^2 + 2s + 4)}

Recall that in Bode form it had was written as:

34(jω)1(jω3+1)[(jω2)2+jω2+1]1 \frac{3}{4}(j\omega)^{-1} \cdot \left(\frac{j\omega}{3}+1\right) \cdot \left[\left(\frac{j\omega}{2}\right)^2 + \frac{j\omega}{2} + 1\right]^{-1}

Type 1 factor

The Type 1 factor here is 3/4(jω)13/4 \left(j \omega \right) ^{-1}. It has a negative unity exponent and K=3/4K=3/4. We already showed in the previous lecture what the Type 1 factor for this transfer function will contribute to the Bode plot. These figures are reproduced here for consistency.

Type 2 factor

For the Type 2 factor in this transfer function, that is,

(jω3+1) \left( \dfrac{j \omega}{3} + 1 \right)
we see that it has a positive unity as exponent and τ=1/3\tau = 1/3. Thus the magnitude and phase plot for this term are as follows:

The magnitude plot is horizontal until near the breakpoint and then proceeds upwards with slope 1 while the phase plot climbs from 00 to 9090^\circ by hitting 4545^\circ at the breakpoint.

Type 3 factor

The type 3 factor in this case is

[(jω2)2+jω2+1]1 \left[ \left( \dfrac{j\omega}{2} \right)^2 + \dfrac{j \omega}{2} + 1 \right]^{-1}
which has negative unity as exponent, ωn=2\omega_n = 2 and ζ=12\zeta = \dfrac{1}{2}. Therefore for the magnitude plot, the graph is horizontal until it reaches near the natural frequency whereupon it descends downwards with slope 2. Similarly the phase plot goes from 0 to 180-180 ^\circ passing through 90-90 ^\circ at the natural frequency.

Combining plots

The final plot is a pointwise addition of all the graphs above. For example we know the phase plot will start at 90=90+0+0-90 = -90 + 0 + 0 where the terms on the right of the equality are contributions from the Type 1, Type 2 and Type 3 factors. Similarly, we know it will end at 180=90+90180-180 = -90 + 90 -180. If the breakpoint frequency 1/τ1/\tau of the Type 2 term and the natural frequency ωn\omega_n of the Type 3 term where the same, we could have expected the phase plot to cross 135=90+4590-135^\circ = -90^\circ +45^\circ -90^\circ at this joint frequency. However, ωn<1/τ\omega_n < 1/\tau and so the phase plot crosses 135-135^\circ much earlier.

In the same way we can reason about the magnitude plot. We know it will start out with a slope of negative unity. But once the frequency passes beyond the breakpoint/natural frequency, the Type 2 term will add a slope of positive unity; at the same time the Type 3 term will contribute 2-2 to the slope. So the slope of the graph beyond the breakpoint will be 1+12=2-1 + 1 - 2 = -2. Therefore the overall plot is two segments of slope -1 and -2 joined around the the breakpoint/natural frequency with a small kink.

Example 2

Consider the following transfer function:

G(s)=2000(s+0.5)s(s+10)(s+50) G(s) = \dfrac{2000\left(s + 0.5\right)}{s \left(s+10\right)\left(s+50\right)}

This function has one factor of Type 1 and three factors of Type 2.

Type 1 term

This term is 2jω \dfrac{2}{j \omega}. Here K=2K=2 and n=1n=-1. This factor contributes a line of slope 1-1 passing through (ω,M)=(1,2)(\omega, M) = (1, 2). Since n=1n=-1 its phase plot starts at 90-90^\circ.

Type 2 terms

These terms are:

a=(jω0.5+1)b=(jω10+1)1c=(jω50+1)1 a=\left( \dfrac{j \omega}{0.5} + 1\right) \qquad b=\left( \dfrac{j\omega}{10} + 1\right)^{-1} \qquad c=\left(\dfrac{j\omega}{50} +1 \right)^{-1}
with τa=2,τb=1/10\tau_a = 2, \tau_b = 1/10 and τc=1/50\tau_c = 1/50. We can consider their contributions to the magnitude plots as follows:

We can similarly reason about the phase plots:

Example 3

Consider the following transfer function which is already in Bode form:

G(s)=0.01(s2+0.01s+1)s2(s264+0.02s8+1). G(s) = \dfrac{0.01 \left(s^2 + 0.01s + 1\right)}{s^2 \left(\dfrac{s^2}{64} + 0.02 \dfrac{s}{8} + 1 \right)}.

This transfer function has a single Type 1 factor and two Type 3 factors.

For its magnitude plot we have that,

For its phase plot we have that,

Bode plots using software

Note: Some of the following commands/code require the use of the Control System Toolbox in MATLAB; so you might have to use the Engineering Workstations made available by the Grainger College of Engineering.

One can solve for the above examples in MATLAB using the following code.

If you would rather not use MATLAB, then this link points to a notebook that generated the above figures. There is an experimental feature saying it should be runnable in the cloud (click "Run in Binder"); but it is not guaranteed to work.

Example 1 - MATLAB

In this example we make use of the Control System Toolbox in MATLAB while in the next example we will make plots without relying on the toolbox. Recall that the transfer function (2) is:

G(s)=s+3s(s2+2s+4) G(s) = \frac{s+3}{s(s^2 + 2s + 4)}

The below code generates the final Bode plot.

num=[1, 3];         % Numerator coefficients
den=[1, 2, 4, 0];   % Denominator coefficients
sys = tf(num, den); % Transfer function model
bodeplot(sys);      % Generate bodeplot
title("Final Bode Plot - Example 1")
grid on;

The below code also shows the term by term contributions.

typ1 = tf(3,[4, 0]);		%TF from just Type 1 term
typ2 = tf([1/3, 1], 1);		%TF from just Type 2 term
typ3 = tf(1, [1/4, 1/2, 1]); 	%TF from just Type 3 term

bodeplot(typ1);
hold on
bodeplot(typ2);
bodeplot(typ3);
legend('Type 1', 'Type 2', 'Type 3')

Example 2 - MATLAB

In this example (i.e. transfer function of (3)),

G(s)=2000(s+0.5)s(s+10)(s+50) G(s) = \dfrac{2000\left(s + 0.5\right)}{s \left(s+10\right)\left(s+50\right)}
we generate the magnitude/phase plots without using any toolboxes.

den = @(w) (w.*j).*(w.*j+10).*(w.*j+50);
num = @(w) 2000.*(w.*j + 0.5);
tf = @(w) num(w)./den(w);


w = logspace(-2,3, 1000);
subplot(1, 2, 1)
loglog(w, abs(tf(w)));
xlabel("Frequency [rad/s]")
ylabel("Magnitude")
title("Magnitude plot")
grid on

subplot(1, 2, 2)
semilogx(w, angle(tf(w))*180/pi);
grid on
xlabel("Frequency [rad/s]")
ylabel("Phase angle")
title("Phase plot")
sgtitle("Magnitude/phase plot for Example 2 above")

Example 3 - MATLAB

Left as an exercise. Plot in MATLAB the transfer function of (4).

CC BY-SA 4.0 Ivan Abraham. Last modified: March 10, 2026. Website built with Franklin.jl and the Julia programming language.