How to read a Bode plot

A Bode plot shows how a system answers at every frequency, using two charts read together: the magnitude of H(jω) in decibels and its phase in degrees, both over a logarithmic frequency axis. The log scale is not a drawing convenience — it is what turns the product of H's factors into a sum, and so each pole and zero into a straight segment that adds to the others. That is why a Bode plot can be sketched by hand from nothing but the break frequencies.

Each pole adds −20 dB per decade to the magnitude slope and −90° to the phase; each zero does the same with the opposite sign; and the change happens around the break frequency, which is the magnitude of that pole or zero. At a simple pole's break frequency the magnitude is already 3 dB below the asymptote and the phase is at −45°, exactly halfway through its swing: those are the two numbers a hand-drawn plot is checked against.

The two numbers that really matter are the margins. The phase margin is how far the phase stays above −180° at the frequency where the magnitude crosses 0 dB; the gain margin is how far the magnitude sits below 0 dB at the frequency where the phase crosses −180°. They are the distance from the point where feedback stops correcting the error and starts reinforcing it: positive margins mean a stable closed loop, and wide margins mean one that does not ring.

Common mistakes

  • Reading the phase margin at the wrong frequency. It is read where the magnitude crosses 0 dB, not where the phase crosses −180°: that second point is where the gain margin is read.
  • Forgetting that the phase has to be unwrapped. Past −180° the arctangent jumps back to +180°, and a phase margin read off that jump comes out positive while the system is unstable. Here the phase is unwrapped, which is why it descends continuously.
  • Plotting the magnitude against a linear frequency axis. The asymptotes stop being straight, the decades pile up against the left edge, and the plot loses the very property it exists for.

Frequently asked questions

What is the phase margin?

It is the distance between the phase and −180° at the frequency where the magnitude is 0 dB. A margin of 45° or 60° is the usual compromise: below 30° the closed-loop response rings badly, above 70° bandwidth is being given away.

What is the gain margin?

It is how many decibels the gain can be raised before the closed loop goes unstable. It is read at the frequency where the phase crosses −180°, by measuring how far the magnitude sits below 0 dB there.

Why is the frequency axis logarithmic?

Because the magnitude of a product of factors is the sum of their magnitudes in decibels, and on a log scale each pole's and zero's contribution becomes a straight segment. On a linear scale those lines become curves and the plot stops being something you can assemble by hand.

What is the slope at high frequency?

−20 dB per decade for every pole in excess of the zeros — that is, −20 times the relative degree. The phase tends at the same time towards −90° for each of those excess poles.

What is a break frequency?

The magnitude of a pole or a zero. Around it the magnitude slope changes by 20 dB per decade and the phase swings by 90°, spread over roughly a decade either side.

How this calculation works

H(jω) is evaluated by substituting s = jω. Magnitude in decibels: 20·log₁₀|H(jω)|. Phase: arg H(jω), unwrapped so it does not jump by 360° on passing ±180°. The gain crossover frequency ω_c is where the magnitude is 0 dB; the phase margin is arg H(jω_c) + 180°. The phase crossover frequency ω_π is where the phase is −180°; the gain margin is −20·log₁₀|H(jω_π)|. The break frequencies are the magnitudes of the poles and zeros, and the window drawn runs from two decades below the lowest to two decades above the highest, so the plot follows the system instead of always showing the same range. Final magnitude slope: −20·(relative degree) dB per decade; final phase: −90°·(relative degree). The crossings are found by linear interpolation between the two samples that straddle them, in log frequency and in decibels — the same coordinates the plot is drawn in.