Z-Transform Pole-Zero Plot and ROC Calculator

Type the numerator and denominator coefficients, pick a region of convergence, and see the z-plane, the poles and zeros, stability and the frequency response.

H(z) = (b0 + b1 z⁻¹ + b2 z⁻² + ...) / (a0 + a1 z⁻¹ + a2 z⁻² + ...)

Region of convergence
z-plane: × poles, ○ zeros, shaded ROC, dashed unit circle
ReIm
  • Poles: 2, 0.5
  • Zeros: 0, 0
  • This ROC misses the unit circle. The stable choice is 0.5 < |z| < 2.
|H(e^jω)| for the stable ROC
00.511.5200.20.40.60.81ω / π|H|

The formulas

H(z)=b0+b1z−1+⋯+bMz−Ma0+a1z−1+⋯+aNz−NH(z) = \dfrac{b_0 + b_1 z^{-1} + \dots + b_M z^{-M}}{a_0 + a_1 z^{-1} + \dots + a_N z^{-N}}

Multiplying top and bottom by z^max(M, N) turns both into polynomials in z; their roots are the zeros and poles.

ROC: ri<∣z∣<ri+1\text{ROC: } r_i < |z| < r_{i+1}

The ROC is a ring between pole radii and never contains a pole. |z| > largest pole radius is right-sided (causal); |z| < smallest is left-sided.

stable  ⟺  the ROC contains ∣z∣=1\text{stable} \iff \text{the ROC contains } |z| = 1

So a causal system is stable when every pole is inside the unit circle.

Worked example: poles at 0.5 and 2

  1. H(z) = 1 / (1 − 2.5z⁻¹ + z⁻²). Multiply by z²: z² / (z² − 2.5z + 1) = z² / ((z − 0.5)(z − 2)).
  2. Two zeros at z = 0, poles at z = 0.5 and z = 2.
  3. Three possible ROCs: |z| < 0.5 (left-sided), 0.5 < |z| < 2 (two-sided) and |z| > 2 (right-sided, causal).
  4. Only 0.5 < |z| < 2 contains the unit circle, so only the two-sided sequence is stable. The causal one grows like 2ⁿ.
  5. For 1 / (1 − 0.9z⁻¹): one pole at 0.9, so the causal ROC |z| > 0.9 contains |z| = 1 and is stable, with |H| = 10 at ω = 0 and 1/1.9 at ω = π.
  • The same H(z) with different ROCs belongs to different sequences, which is why a z-transform without its ROC is incomplete.
  • Roots are found numerically (Durand-Kerner) and rounded to 4 significant figures; repeated roots may show tiny differences.

Sources