Bode plot basics
Bode plots let you see how a linear time-invariant (LTI) system responds to sinusoidal inputs across a range of frequencies. They're one of the most practical tools in control engineering because you can read stability margins, bandwidth, and steady-state behavior directly off the plots, and you can use them to shape a controller's frequency response during design.
A Bode plot is actually two plots stacked vertically, sharing the same frequency axis:
- Magnitude plot: shows the system's gain (output amplitude / input amplitude) in decibels (dB) versus frequency.
- Phase plot: shows the phase shift between input and output in degrees versus frequency.
Together, they give you a complete picture of the system's frequency-domain behavior.
Logarithmic frequency scale
Both plots use a logarithmic frequency axis, typically in rad/s. The log scale compresses a huge frequency range into a manageable width, so you can see low-frequency and high-frequency behavior on the same graph. Frequencies are usually labeled by decade: 0.1, 1, 10, 100, 1000 rad/s, and so on.
Decibel scale for magnitude
Magnitude is expressed in decibels using:
where is the ratio of output amplitude to input amplitude at frequency . The dB scale is useful for two reasons: it turns multiplication into addition (critical for combining subsystems), and it lets you use straight-line approximations to sketch plots by hand.
Bode plot construction
To build a Bode plot, you factor the transfer function into simple first-order and second-order terms, sketch each term's contribution separately, then add them together. This works because of the logarithmic scales: multiplying transfer functions in the frequency domain becomes adding their dB magnitudes and adding their phase angles.
First-order systems
A first-order system has the form:
where is the DC gain and is the time constant. The corner frequency (also called break frequency) is .
How to sketch the magnitude plot:
- For , the magnitude is flat at dB.
- At , the actual curve is about 3 dB below the flat portion.
- For , the magnitude drops at dB/decade.
How to sketch the phase plot:
- At low frequencies (roughly a decade below ), the phase is approximately .
- At , the phase is .
- At high frequencies (roughly a decade above ), the phase approaches .
A first-order zero (numerator term ) has the mirror-image behavior: dB/decade slope and phase going from to .
Second-order systems
A standard second-order system looks like:
where is the natural frequency and is the damping ratio.
- Magnitude: flat at low frequencies, then rolls off at dB/decade above . For underdamped systems (), there's a resonant peak near . The peak height depends on ; smaller means a taller peak. At , the peak just disappears.
- Phase: transitions from to , passing through at . The transition is sharper for lower damping ratios.
Higher-order systems
Any higher-order transfer function can be factored into a product of first-order and second-order terms (plus possibly a pure gain and integrators/differentiators). You plot each factor's magnitude and phase contribution, then sum them:
- Add the dB magnitudes at each frequency.
- Add the phase angles at each frequency.
Plotting straight-line approximations
Asymptotic (straight-line) approximations make hand-sketching feasible:
- Identify all corner frequencies from the poles and zeros of the transfer function.
- At each corner frequency for a pole, decrease the magnitude slope by 20 dB/decade; for a zero, increase it by 20 dB/decade. Second-order terms change the slope by 40 dB/decade.
- Draw the resulting piecewise-linear magnitude curve.
- For phase, use the rule that each first-order term transitions over roughly two decades centered on its corner frequency (one decade below to one decade above).
The straight-line approximation is exact at frequencies far from the corners. The maximum error for a first-order term is about 3 dB in magnitude and occurs right at the corner frequency.
Bode plot analysis
Once you have a Bode plot of the open-loop transfer function, you can extract several key performance and stability metrics directly from the graph.
Stability assessment using gain and phase margins
- Gain margin (GM): how much you could increase the system gain before the closed-loop system goes unstable. Measured in dB at the phase crossover frequency.
- Phase margin (PM): how much additional phase lag the system can tolerate before instability. Measured in degrees at the gain crossover frequency.
A stable system requires both GM > 0 dB and PM > 0°. Typical design targets are GM ≥ 6 dB and PM between 30° and 60°. Larger margins mean the system is more tolerant of modeling errors and parameter changes.

Gain crossover and phase crossover frequencies
- Gain crossover frequency (): where the magnitude plot crosses 0 dB. This is where you read the phase margin. Specifically, .
- Phase crossover frequency (): where the phase plot crosses . This is where you read the gain margin. Specifically, .
If the magnitude is below 0 dB when the phase hits , the system is stable (positive GM). If the phase is above when the magnitude hits 0 dB, the system is also stable (positive PM).
Bandwidth and peak resonance
Bandwidth is the frequency range from 0 up to the point where the closed-loop magnitude drops 3 dB below its DC value. It indicates how fast the system can respond: higher bandwidth means faster tracking of reference signals but also more sensitivity to high-frequency noise.
Peak resonance () is the maximum value of the closed-loop magnitude response. It's related to the damping ratio and overshoot in the time domain. A large (say, above 1.5 or about 3.5 dB) usually signals an underdamped, oscillatory response.
Steady-state error from low-frequency gain
The low-frequency portion of the open-loop Bode plot tells you about steady-state accuracy:
- Type 0 system (no integrators): the magnitude plot is flat at low frequencies. The DC gain gives you the position constant , and the steady-state error to a unit step is .
- Type 1 system (one integrator): the magnitude plot has a dB/decade slope at low frequencies. Extending this slope to rad/s gives the velocity constant , and the steady-state error to a unit ramp is .
- Type 2 system (two integrators): the low-frequency slope is dB/decade, and the acceleration constant can be read similarly.
Bode plot for design
Beyond analysis, Bode plots are a primary tool for designing controllers. The idea is to reshape the open-loop frequency response until the closed-loop system meets your specs.
Gain adjustment for desired crossover frequency
The simplest design move is adjusting the overall gain :
- Plot the Bode diagram of the uncompensated plant.
- Identify the frequency where you want the gain crossover to occur (based on bandwidth requirements).
- Read the current magnitude at that frequency.
- Set so the magnitude at that frequency becomes 0 dB.
Increasing gain raises the entire magnitude curve, pushing higher (faster response but reduced phase margin). Decreasing gain does the opposite. This is always a trade-off between speed and stability.
Phase lead and lag compensation
When gain adjustment alone can't meet both stability and performance specs, you add compensators:
- Lead compensator: adds positive phase near the crossover frequency. This boosts the phase margin without sacrificing bandwidth. The transfer function is with . The maximum phase lead occurs at .
- Lag compensator: increases low-frequency gain (reducing steady-state error) while leaving the crossover region mostly unchanged. It uses in the same form, placed well below .
- Lead-lag compensator: combines both effects when you need to improve both steady-state accuracy and phase margin.
PID controller design using Bode plots
A PID controller has the form:
Each term has a distinct effect on the Bode plot:
- Proportional (): shifts the magnitude curve up or down uniformly. Use it to set the crossover frequency.
- Integral (): adds a pole at the origin, giving dB/decade boost at low frequencies and phase. This eliminates steady-state error but reduces phase margin.
- Derivative (): adds a zero, giving dB/decade at high frequencies and phase. This improves phase margin but amplifies high-frequency noise.
A practical design approach is to tune iteratively: set for the right crossover, add to kill steady-state error, then add to recover the phase margin lost from the integral term.
Robustness and sensitivity considerations
A well-designed controller should tolerate uncertainty in the plant model. On the Bode plot, robustness shows up as adequate gain and phase margins. Some practical guidelines:
- Keep the magnitude slope at crossover near dB/decade. Steeper slopes ( or worse) at crossover indicate poor phase margin.
- Avoid resonant peaks in the closed-loop response that are too tall; they signal sensitivity to disturbances at those frequencies.
- The sensitivity function can be plotted on a Bode diagram. Keeping below a bound (commonly 6 dB) across all frequencies is a standard robustness requirement.
Bode plot applications

Stability analysis of feedback systems
For any feedback system, you plot the open-loop transfer function on a Bode diagram and read off the gain and phase margins. This is often the first check an engineer performs. If margins are too small, the system is redesigned with compensators.
The Nyquist stability criterion can also be interpreted from Bode data: if the magnitude is above 0 dB when the phase crosses , the system has a potential instability (depending on the number of open-loop unstable poles).
Frequency response of closed-loop systems
The closed-loop transfer function for unity feedback is:
You can compute and from the open-loop Bode data at each frequency. The closed-loop Bode plot reveals bandwidth, resonant peaks, and how well the system attenuates disturbances at various frequencies. Shaping the open-loop response to get a desired closed-loop response is the core of loop-shaping design.
System identification
When you don't have a mathematical model, you can build one experimentally:
- Drive the system with sinusoidal inputs at various frequencies.
- Measure the output amplitude and phase shift at each frequency.
- Plot the measured data as a Bode plot.
- Fit a transfer function (poles, zeros, gain) to match the experimental Bode plot.
This is a standard technique in practice. The Bode plot format makes it straightforward to visually compare the fitted model against measured data and refine the model where discrepancies appear.
Cascaded systems
When subsystems are connected in series, the overall transfer function is the product of the individual transfer functions. On a Bode plot, this means:
- Add the individual magnitude plots (in dB).
- Add the individual phase plots (in degrees).
This additive property is one of the biggest practical advantages of Bode plots. You can design each subsystem's frequency response independently, then combine them to verify the overall system meets specifications.
Bode plot limitations and alternatives
Limitations of straight-line approximations
Straight-line approximations are convenient but introduce errors, especially:
- Near corner frequencies (up to 3 dB error for first-order terms, potentially much more for lightly damped second-order terms).
- When poles and zeros are closely spaced, causing their transition regions to overlap.
For precise work, use exact calculations or software tools like MATLAB's bode() command. The asymptotic sketch is best used for quick intuition and initial design, not for final verification.
Bode plots vs. Nyquist plots
Bode plots display magnitude and phase on separate graphs with an explicit frequency axis. They make it easy to read gain/phase margins and to perform loop shaping.
Nyquist plots map the frequency response onto the complex plane (real vs. imaginary). They're better for applying the Nyquist stability criterion directly, especially for systems with open-loop unstable poles or transport delays.
In practice, engineers often use both: Bode plots for design and Nyquist plots for rigorous stability verification.
Bode plots vs. Nichols charts
Nichols charts plot magnitude (dB) on the vertical axis against phase (degrees) on the horizontal axis, with frequency as a parameter along the curve. Closed-loop magnitude and phase contours (M-circles and N-circles) are overlaid on the chart.
Advantage over Bode plots: you can see both open-loop and closed-loop behavior on a single graph, making loop shaping more direct.
Disadvantage: frequency isn't shown on an axis, so you lose the explicit frequency information that Bode plots provide.
Bode plots in discrete-time systems
Bode plots can be adapted for discrete-time (sampled-data) systems, but with key differences:
- The frequency response is periodic with period , where is the sampling period.
- The maximum meaningful frequency is the Nyquist frequency, rad/s.
- Plots are often shown using normalized frequency (0 to rad/sample) or physical frequency (0 to ).
Stability margins are interpreted the same way as in continuous time, but aliasing and the effects of zero-order hold reconstruction can alter the frequency response significantly compared to the underlying continuous-time plant. Always account for these effects when designing digital controllers.