Bode Plot: Magnitude and Phase vs. Frequency
Learn how to read and sketch Bode plots — magnitude (dB) and phase vs. frequency, pole/zero contributions, and gain/phase margin for stability.
Contents & prerequisites
What a Bode Plot Is
A Bode plot is a graphical representation of a linear, time-invariant (LTI) system's frequency response. It splits the complex transfer function H(jω) into two separate plots, both against frequency on a logarithmic axis:
- Magnitude plot — |H(jω)| in decibels (dB) vs. frequency (log scale)
- Phase plot — ∠H(jω) in degrees vs. frequency (log scale)
Named after Hendrik Bode, who developed the technique at Bell Labs in the 1930s, this format turns multiplication of transfer function terms into addition of their log-magnitude and phase contributions — which is what makes hand-sketching and intuitive analysis possible.
Why Logarithmic Scales
- Frequency (x-axis): Real systems span many decades (Hz to GHz). A log axis compresses this range and turns multiplicative frequency relationships (like decade or octave spacing between poles) into equal linear distances.
- Magnitude (y-axis, dB): Converting to decibels —
dB = 20·log₁₀|H(jω)|— turns the product of multiple transfer function terms into a sum. This means the total magnitude response is just the sum of each pole's and zero's individual contribution, which can be sketched with straight-line asymptotes.
Building the Magnitude Plot
For a transfer function in factored form:
H(jω) = K · (1 + jω/z₁)(1 + jω/z₂)... / [(1 + jω/p₁)(1 + jω/p₂)...]
Each term contributes independently to the total dB magnitude:
| Element | Asymptotic behavior | Slope |
|---|---|---|
| DC gain K | Flat line at 20·log₁₀(K) dB | 0 dB/decade |
| Real zero (1 + jω/z) | Flat below z, rises above z | +20 dB/decade |
| Real pole 1/(1 + jω/p) | Flat below p, falls above p | −20 dB/decade |
| Pole/zero at origin (jω)ⁿ | No corner — active at all frequencies | ±20n dB/decade |
Corner (break) frequency: at ω = p or ω = z, the actual curve deviates from the asymptote by about 3 dB (the true response is −3 dB relative to the flat asymptote at a pole, +3 dB at a zero). This is why a simple RC low-pass filter's −3 dB point equals its pole frequency, ω = 1/RC.
Sketching rule of thumb: start at the low-frequency asymptote, and at each pole or zero frequency, change the slope by −20 dB/decade (pole) or +20 dB/decade (zero). Poles and zeros at the same frequency cancel.
Building the Phase Plot
Phase also adds term by term. For a single real pole 1/(1 + jω/p):
- ω ≪ p: phase ≈ 0°
- ω = p: phase = −45°
- ω ≫ p: phase → −90°
A zero contributes the mirror image (+45° at its corner, approaching +90°). The transition isn't a sharp corner like magnitude — it's commonly approximated with straight lines from 0.1× to 10× the corner frequency (one decade before to one decade after), passing through the exact value at the corner itself.
For a system with multiple poles/zeros, total phase is the sum of each individual contribution at every frequency — same superposition principle as magnitude.
Example: First-Order RC Low-Pass Filter
Transfer function: H(jω) = 1 / (1 + jω/ω₀), where ω₀ = 1/RC
- Magnitude: 0 dB (flat) below ω₀, rolling off at −20 dB/decade above ω₀. At ω₀ itself, magnitude is −3 dB.
- Phase: starts near 0°, passes through −45° at ω₀, asymptotically approaches −90° at high frequency.
This single pole is the building block for reading any higher-order Bode plot — most real transfer functions decompose into a handful of these first-order (and second-order) sections.
Second-Order Systems and Resonance
A second-order pole pair introduces a damping ratio ζ and natural frequency ωₙ. Unlike two independent real poles, complex-conjugate poles can produce peaking near ωₙ if ζ is low (underdamped):
- ζ ≥ 0.707: monotonic rolloff, no peaking, −40 dB/decade asymptote above ωₙ
- ζ < 0.707: peak magnitude above the 0 dB asymptote, with the peak growing sharper as ζ → 0
- Phase transitions faster through the corner region than a single pole, going from 0° to −180° over a narrower frequency range as ζ decreases
This matters directly for filter design (Butterworth vs. Chebyshev vs. Bessel responses are distinguished by their damping/peaking behavior) and for control loop compensation.
Practical Uses
- Filter design: predicting cutoff frequency, rolloff rate, and passband flatness before simulation.
- Op-amp and amplifier stability: the open-loop gain Bode plot, combined with the feedback network, predicts closed-loop bandwidth and whether the loop is stable.
- Control loop stability — gain and phase margin:
- Gain margin: how much the loop gain could increase (in dB) before instability, measured at the frequency where phase crosses −180°.
- Phase margin: how much additional phase lag (in degrees) the loop can tolerate before instability, measured at the frequency where magnitude crosses 0 dB. A phase margin of 45–60° is a common design target for a well-damped, stable response.
- Power supply loop compensation: switching regulator control loops are almost always tuned by inspecting Bode plots of the loop gain to place crossover frequency and ensure adequate phase margin.
- Sensor and signal chain analysis: characterizing how noise, interference, or signal integrity is affected across the frequency range of interest.
Reading a Bode Plot in Practice
- Identify corner frequencies from the slope changes in the magnitude plot — each break is a pole (slope decreases) or zero (slope increases).
- Cross-check with the phase plot — each pole/zero should show a corresponding ~90° phase shift centered on its corner frequency.
- Read the DC/low-frequency gain from the flat starting asymptote.
- For stability analysis, locate the 0 dB crossover on the magnitude plot and read the corresponding phase (phase margin), and locate the −180° crossover on the phase plot and read the corresponding gain (gain margin).
Tools for Generating Bode Plots
- SPICE simulators (e.g., LTspice): AC analysis (
.ACdirective) directly outputs magnitude and phase vs. frequency for any node in a simulated circuit — the standard way to verify a real design against hand calculations. - MATLAB/Python (control systems toolboxes,
scipy.signal.bode): generate Bode plots analytically from a transfer function for control-loop design work. - Network/spectrum analyzers: measure actual magnitude and phase response of physical hardware, useful for validating compensation networks or filter designs on a bench.
Key Takeaways
- Bode plots decompose a system's frequency response into magnitude (dB) and phase (degrees), both plotted against log frequency.
- Because dB is logarithmic, each pole and zero contributes independently and additively — enabling fast asymptotic sketching without full computation.
- Every real pole gives −20 dB/decade rolloff and −90° phase shift; every real zero gives the mirror-image +20 dB/decade and +90° shift.
- Second-order (complex pole pair) sections can peak near resonance depending on damping ratio, which is central to filter response shaping.
- Gain and phase margins, read directly off the Bode plot, are the standard quantitative measures of closed-loop stability in control and feedback system design.
Learning
Sign in to track your progress.
Evidence
Public projects engineers linked to Bode Plot: Magnitude and Phase vs. Frequency.
No engineer has linked a project to this topic yet. Built something that proves it? Add the project and tag it with analog-electronics-bode-plot-magnitude-and-phase-vs-frequency — it then shows here and on your public profile.
