# Pole–zero plot
A **pole–zero plot** marks, in the complex plane, the values at which a system's rational transfer function is infinite (its poles, drawn X) and the values at which it is zero (its zeros, drawn O). The plot belongs to a controller, filter, sensor or channel wherever that system's behaviour can be written as one polynomial divided by another, and reading it takes the place of reading the polynomials themselves: where the poles sit relative to a single reference curve says whether the system is stable, whether it is being read as causal or anticausal, and whether it is the gentlest-phase member of every system sharing its magnitude response.
Continuous-time systems are plotted in the [[Laplace_transform|s-plane]] and discrete-time systems in the [[Z-transform|z-plane]]; the two sketches this article carries take one plane each. Minimum phase lets a reader drag a zero across the unit circle of a z-plane plot and shows that reflecting it to the mirror point on the other side leaves the system's magnitude response untouched while stripping away everything but the least possible phase lag. Matched Z-transform method lets a reader drag an analogue pole around the s-plane and follow its image on the z-plane through `z = e^{sT}`, watching a continuous-time pole map onto a discrete-time one and seeing exactly where that map starts to alias.
## Continuous-time systems
A continuous-time system's transfer function is a ratio of polynomials in the [[Laplace_transform|Laplace variable]] `s = sigma + j*omega`. Its poles are the roots of the denominator and its zeros the roots of the numerator; plotting both against the real axis (sigma) and the imaginary axis (omega) turns two lists of numbers into a single picture of the system's behaviour.
### Poles and zeros
A pole on the real axis at `s = -a` corresponds to a decaying exponential `e^{-a*t}` in the system's own response; a complex-conjugate pair of poles at `-a +/- j*b` corresponds instead to an oscillation at frequency `b` whose envelope decays at rate `a`, so the pole's distance from the imaginary axis is a decay rate and its angle off the negative real axis is a measure of how lightly damped the oscillation is. A zero does the reverse: it marks a frequency the system passes with zero gain, and a zero sitting close to a pole tends to cancel much of that pole's influence on the shape of the response. A repeated pole changes the picture further: a pole of multiplicity two at `s = -a` no longer contributes a plain `e^{-a*t}` but a term of the form `t*e^{-a*t}`, which still decays, since the exponential eventually overwhelms the growing `t`, but rises briefly before it does, a shape a first-order pole alone cannot produce.
### Region of convergence
The Laplace transform's defining integral converges only for some values of `s`, and that region of convergence (ROC) for a rational transfer function is always a vertical strip that touches no pole. The same pole layout admits more than one ROC, and which one applies is a choice, not a further fact about the poles: a strip to the right of the rightmost pole belongs to a causal (right-sided) system, and a strip to the left of the leftmost pole belongs to an anticausal (left-sided) one. A system is stable exactly when its ROC contains the imaginary axis, so a causal system is stable precisely when every one of its poles has a negative real part, sitting in the plot's left half. The same picture is where [[Root_locus_analysis|root locus analysis]] starts from: rather than reading the poles of one fixed system, it tracks how those poles slide around the plane as a single design parameter, typically a loop gain, is turned up from zero, and a design fails the moment the sliding path crosses into the right half.
### Example
For the transfer function `H(s) = (s + 2) / (s^2 + s + 1)`[^joh20], reading the numerator and denominator as coefficient vectors gives a single real zero at `s = -2` and, from the roots of `s^2 + s + 1 = 0`, a complex-conjugate pole pair at `s = -0.5 +/- j*0.866` (derived). Both poles sit left of the imaginary axis, so the causal ROC, `Re(s) > -0.5`, contains that axis and the system is stable; the poles' angle off the negative real axis, a little over 60 degrees, marks it as fairly lightly damped, a system that rings for a few cycles after a disturbance rather than settling in one smooth sweep.
## Discrete-time systems
A discrete-time system's transfer function is instead a ratio of polynomials in the [[Z-transform|z-transform variable]] `z`, and the reference curve is not an axis but the unit circle `|z| = 1`. Travelling once around that circle at angle `omega_hat`, from 0 to pi and back down to -pi, sweeps through the system's whole digital frequency response.
### Poles and zeros
The magnitude of the frequency response at a point on the unit circle is set by that point's distances to every zero and every pole: distance to a nearby zero pulls the response down toward a notch, and distance to a nearby pole pushes it up toward a peak[^sti77]. Not every discrete-time system has both kinds of singularity to place: a [[Finite_impulse_response|finite impulse response]] (FIR) filter's transfer function is a polynomial in `z^-1` alone, so it has zeros but no poles beyond the origin, while an [[Infinite_impulse_response|infinite impulse response]] (IIR) filter's feedback puts genuine poles away from the origin[^sti76]. An FIR design is consequently always stable, since it has nowhere but the origin for a pole to sit; an IIR design can be unstable, and its pole–zero plot is the fastest way to check.
### Region of convergence
For a right-sided (causal) sequence the region of convergence is everything outside a circle drawn through the outermost pole; for a left-sided sequence it is everything inside a circle through the innermost pole; a two-sided sequence's ROC is the annulus between two such circles. As in the continuous-time case, stability requires the ROC to contain the reference curve, here the unit circle itself, so a causal discrete-time system is stable exactly when every pole lies strictly inside it.
### Example
A two-tap filter defined by `y[n] = x[n] + x[n - 2]` has transfer function `H(z) = 1 + z^-2`, whose zeros solve `z^2 = -1`, placing them exactly on the unit circle at `z = +/-j`, an angle of pi/2. Fed a 5 Hz and a 25 Hz tone sampled at 100 Hz, this filter removes the 25 Hz component entirely[^sti84], because pi/2 in digital frequency is exactly one quarter of the sampling rate, 25 Hz (derived), and a zero placed exactly on the unit circle produces an exact null rather than merely a dip. The same filter's zero at `z = -1` (angle pi) would just as exactly null a tone at half the sampling rate, which is the ordinary comb-filter behaviour a pole–zero plot makes obvious at a glance.
## Microsims
Minimum phase fixes a conjugate pair of poles safely inside the unit circle and lets a reader drag a conjugate pair of zeros anywhere in the plane, with sliders for the zero's radius and angle and a button that reflects it from radius `r` to radius `1/r`. Because reflecting a zero across the unit circle this way leaves `|H|` exactly unchanged, the sketch can show two systems side by side that measure identically on a magnitude plot yet differ in every other respect: the one with the zero pulled inside the circle is the minimum-phase system, and it carries the least possible phase lag, the shortest group delay, and the most front-loaded impulse response of any system sharing that magnitude response, all three shown updating together as the zero moves.
Matched Z-transform method places a single pole on a draggable s-plane and computes its image on a neighbouring z-plane through `z = e^{s*T}`, with a slider for the sampling period `T`. Because a stable analogue pole always has a negative real part, its image always lands at `|z| = e^{sigma*T} < 1`, safely inside the unit circle, so the map carries stability across from one domain to the other automatically. The pole's imaginary part becomes a digital angle `omega*T` taken modulo `2*pi`, and dragging the pole up past `omega = pi/T` visibly wraps its image back around the circle, the sketch's picture of aliasing.
A three.js companion, a sibling of the [[Z-transform]] sim family, renders this same pole-and-zero geometry in depth, with the frequency response following as the poles and zeros move.
*Try:* In Minimum phase, drag the zero outside the unit circle, note the magnitude and phase curves, then press reflect and watch only the phase and group-delay curves change.
*Try:* In Matched Z-transform method, drag the pole's imaginary part past `pi/T` and watch its z-plane image cross back through the positive real axis instead of continuing around.
<!-- SIGSIM:BEGIN g35 — Signal Processing portal microsim (framework build, specs/sims/Pole–zero_plot.json); do not hand-edit inside -->
**Microsim — three.js (Wikitube framework), pending deploy:** *Pole-zero plot: read the filter off its map* will play here once `https://wikitube-3d-microsims.netlify.app/signal/Pole–zero_plot.html` is live.
<!-- pending: <div class="wt-sim" data-src="https://wikitube-3d-microsims.netlify.app/signal/Pole–zero_plot.html" data-title="Pole–zero plot"></div> -->
*Built from `MICROSIM_GUIDE/specs/sims/Pole–zero_plot.json`; part of the [[Signal_processing]] set ([[PORTAL_Signal_Processing]]).*
<!-- SIGSIM:END -->
## Wikipedia : Wikitube
**Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Pole–zero_plot) : [Wikitube](https://en.wikitube.io/wiki/Pole–zero_plot)
Skeleton mirrored at revision 1308009442. Prose, emphasis and the microsims are Wikitube's own.
## See also
- [[Z-transform]]
- [[Laplace_transform]]
- [[Transfer_function]]
- [[Finite_impulse_response]]
- [[Infinite_impulse_response]]
- [[Root_locus_analysis]]
- [[Control_theory]]
- [[Filter_(signal_processing)]]
- [[Linear_time-invariant_system]]
## Bibliography
- Michael Stiber; Bilin Stiber; Eric Larson. *Signal Computing: Digital Signals in the Software Domain*. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/signal-computing-digital-signals-in-the-software-domain
- Christian Tiberius; Max Mulder. *Engineering Signal Analysis: From Fourier to filtering: Theory*. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/engineering-signal-analysis-from-fourier-to-filtering-theory
- Don Johnson. *Fundamentals of Electrical Engineering I*. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/fundamentals-of-electrical-engineering-1
## References
Page numbers below are PDF pages of the open editions cited. Both sketches on this page restrict themselves, for legibility, to a single conjugate pole or zero pair rather than a general-order system; the geometry they show generalises directly to more poles and zeros, one factor at a time.
[^sti77]: Stiber, M.; Stiber, B.; Larson, E. *Signal Computing: Digital Signals in the Software Domain*. 2020, p. 77 (PDF page). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/signal-computing-digital-signals-in-the-software-domain . CC BY-SA.
[^sti76]: Stiber, M.; Stiber, B.; Larson, E. *Signal Computing: Digital Signals in the Software Domain*. 2020, p. 76 (PDF page). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/signal-computing-digital-signals-in-the-software-domain . CC BY-SA.
[^sti84]: Stiber, M.; Stiber, B.; Larson, E. *Signal Computing: Digital Signals in the Software Domain*. 2020, pp. 83-84 (PDF pages). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/signal-computing-digital-signals-in-the-software-domain . CC BY-SA.
[^joh20]: Johnson, D. *Fundamentals of Electrical Engineering I*. 2014, p. 20 (PDF page). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/fundamentals-of-electrical-engineering-1 . CC BY.
<!-- Hubs: Signal_processing. Portals: PORTAL_Signal_Processing. Signal Processing portal wave 1 · 2026-09-17 · drafted. -->