Unit 6: The Z-transform

ECE220 — Signal And Systems 7 min read

I. Orientation

The z-transform is the discrete-time counterpart of the Laplace transform: it maps a discrete sequence into a function of a complex variable z, converting difference equations into algebraic equations and revealing system behaviour through pole–zero geometry. It generalises the discrete-time Fourier transform (DTFT) by allowing exponentially growing or decaying test signals, so it can analyse systems the DTFT cannot.

  • Complex variable: z = r·e^{jω}, where r = |z| is a real radius and ω is angular frequency in radians/sample; the DTFT is the z-transform restricted to r = 1.
  • Two flavours: the bilateral transform sums over all n (system analysis); the unilateral transform sums over n ≥ 0 (solving difference equations with initial conditions).
  • Core objects: the algebraic expression X(z), its region of convergence (ROC), and the poles (roots of the denominator) and zeros (roots of the numerator).
  • Guiding principle: a rational X(z) plus its ROC together specify a unique sequence; neither alone is enough.

II. The z-transform

Definition and the transform pair

The bilateral z-transform expresses a sequence as a power series in z⁻¹, and every property of the sequence maps to an algebraic feature of that series.

  • Definition: the transform of x[n] is
    TEXT
      X(z) = Σ_{n=-∞}^{∞} x[n] z^{-n}

    where x[n] is the discrete input sample and z is complex.
  • Notation: the pair is written x[n] ⟷ X(z), ROC stated alongside.
  • Relation to Laplace: substituting z = e^{sT} (with T the sampling period) maps the Laplace s-plane to the z-plane; the jΩ axis maps to the unit circle, the left half-plane to the interior.
  • Canonical pairs:
    • Right-sided exponential: aⁿ u[n] ⟷ 1/(1 − a z⁻¹), ROC |z| > |a|.
    • Left-sided exponential: −aⁿ u[−n−1] ⟷ 1/(1 − a z⁻¹), ROC |z| < |a| — same algebra, different ROC.
    • Unit impulse: δ[n] ⟷ 1, ROC all z.

The two exponential pairs share one expression X(z) but describe opposite sequences: the ROC alone distinguishes them, which is why it is never optional.

III. The region of convergence for the z-transform

The set of z for which the series converges

The ROC is the annular region in the complex plane where the defining sum is finite, and its shape encodes causality and stability.

  • Definition: ROC = { z : Σ |x[n] z⁻ⁿ| < ∞ }; convergence depends only on |z| = r, so the ROC is always an annulus r₁ < |z| < r₂ centred at the origin.
  • No poles inside: the ROC never contains a pole, because X(z) is unbounded there.
  • Shape follows sidedness:
    • Right-sided (causal): ROC is the exterior of a circle, |z| > r_max, outside the outermost pole.
    • Left-sided (anti-causal): ROC is the interior of a circle, |z| < r_min.
    • Two-sided: ROC is an annulus between two poles.
  • Stability test: a system is BIBO-stable iff its ROC includes the unit circle |z| = 1.
  • Finite-length sequences: ROC is the entire plane, possibly excluding z = 0 and/or z = ∞.

IV. Properties of the z-transform

Operational rules that avoid re-summing the series

Each property is a mapping between an operation on x[n] and an operation on X(z), and each carries its own ROC rule; symbols X(z), Y(z) denote the transforms of x[n], y[n].

  • Linearity: a·x[n] + b·y[n] ⟷ a·X(z) + b·Y(z); ROC at least the intersection of the two ROCs.
  • Time shift: x[n − n₀] ⟷ z^{−n₀} X(z); ROC unchanged except possible z = 0 or ∞. This is the property that turns a difference equation into algebra.
  • Scaling in z (modulation): aⁿ x[n] ⟷ X(z/a); ROC scaled by |a|.
  • Time reversal: x[−n] ⟷ X(z⁻¹); ROC inverted to 1/r₂ < |z| < 1/r₁.
  • Differentiation in z: n·x[n] ⟷ −z · dX(z)/dz; ROC unchanged. Used to invert repeated poles.
  • Convolution: x[n] * y[n] ⟷ X(z)·Y(z); ROC at least the intersection. This converts the LTI convolution sum into a product — the property underpinning all system analysis.
  • Initial-value theorem (causal): x[0] = lim_{z→∞} X(z).

Worked example (convolution). For h[n] = δ[n] − 0.5 δ[n−1] and input x[n] = u[n]:

TEXT
H(z) = 1 − 0.5 z⁻¹      X(z) = 1/(1 − z⁻¹)
Y(z) = H(z)X(z) = (1 − 0.5 z⁻¹)/(1 − z⁻¹)


so y[n] is obtained by inverting Y(z) rather than summing a convolution directly.

V. The inverse z-transform

Recovering x[n] from X(z) and its ROC

Inversion returns the sequence, and for rational transforms the practical routes avoid the formal contour integral entirely.

  • Formal definition: x[n] = (1/2πj) ∮_C X(z) z^{n−1} dz, the contour C lying in the ROC — rarely computed directly.
  • Method 1 — Partial-fraction expansion (preferred for rational X(z)):
    1. Write X(z) as a sum of first-order terms A_k /(1 − p_k z⁻¹), p_k a pole, A_k a residue.
    2. Invert each term using the ROC to choose the right-sided form A_k p_k^n u[n] (if |z| > |p_k|) or the left-sided form −A_k p_k^n u[−n−1].
  • Method 2 — Power-series / long division: divide numerator by denominator in powers of z⁻¹; the coefficient of z⁻ⁿ is x[n]. Gives samples directly but no closed form.
  • ROC decides the answer: the same X(z) yields different sequences depending on which annulus is specified, so inversion is impossible without the ROC.

Worked example. For X(z) = 1/[(1 − 0.5 z⁻¹)(1 − 2 z⁻¹)], ROC 0.5 < |z| < 2:

TEXT
X(z) = (−1/3)/(1 − 0.5z⁻¹) + (... )   → poles at 0.5 and 2


The pole at 0.5 is inside the ROC → right-sided term p=0.5; the pole at 2 is outside → left-sided term p=2, giving a two-sided x[n].

VI. Analysis and characterisation of LTI systems using z-transforms

The transfer function and what its poles and zeros mean

An LTI system is characterised by H(z), the transform of its impulse response, and the placement of its poles and zeros fixes stability, causality and frequency shape.

  • Transfer function: H(z) = Y(z)/X(z) = z-transform of the impulse response h[n].
  • From difference equation: applying the time-shift property to
    TEXT
      Σ_{k=0}^{N} a_k y[n−k] = Σ_{m=0}^{M} b_m x[n−m]

    gives the rational form
    TEXT
      H(z) = (Σ b_m z^{−m}) / (Σ a_k z^{−k})

    with a_k, b_m the constant coefficients.
  • Poles and zeros: zeros are roots of the numerator (nulls in response); poles are roots of the denominator (resonances) and set the natural modes p_k^n.
  • Causality: h[n] is causal iff the ROC is the exterior of the outermost pole and H(z) is proper.
  • Stability: the system is BIBO-stable iff all poles lie strictly inside the unit circle (for a causal system).
  • Frequency response: evaluate on the unit circle, H(e^{jω}) = H(z)|_{z=e^{jω}}; a pole near the circle produces a peak, a zero near it produces a notch.

VII. Software simulation of system representation and pole-zero analysis

Numerical tools that build, plot and test H(z)

Software represents H(z) by its coefficient vectors and computes the ROC-independent quantities — poles, zeros, response — automatically.

  • Coefficient representation: numerator b = [b₀ … b_M] and denominator a = [a₀ … a_N] fully specify H(z).
  • Pole–zero computation (Python / SciPy):
    PYTHON
      import scipy.signal as sig
      b = [1, -0.5]          # numerator coefficients
      a = [1, -0.9]          # denominator coefficients
      z, p, k = sig.tf2zpk(b, a)   # zeros, poles, gain
      w, H = sig.freqz(b, a)       # frequency response on unit circle
  • Pole–zero plot: zeros as ○, poles as ×, drawn against the unit circle; visual stability check is "all × inside the circle."
  • Representation conversions: transfer-function ↔ zero-pole-gain ↔ state-space (tf2zpk, zpk2tf, tf2ss) let the same system be simulated or realised differently.
  • Simulation: sig.dlsim or sig.lfilter(b, a, x) computes the output sample-by-sample, verifying the analytical y[n] obtained from H(z)X(z).
  • Design feedback loop: move a pole radially toward the unit circle and re-plot freqz to watch a resonant peak sharpen — a direct link between geometry and spectrum.