Impulse Invariance is a method for creating discrete-time (digital) IIR filters from continuous-time impulse responses:
$$ H(s) \xrightarrow[\text{Invariance}]{\text{Impulse}} H(z) $$
It involves the following steps:
- 1: Define a frequency response in the Laplace domain.
- 2: Transform to time domain (inverse Laplace).
- 3: Sample the continuous-time impulse response.
- 4: Apply z-transform.
- 5: Get filter coefficients.
With the sampling period $T = \frac{1}{f_s}$, the continuous-time impulse response $h_C(t)$ is sampled as follows to produce the discrete-time impulse response $h_D[n]$:
$$ h_D[n] = h_C(nT) $$
For the transfer function, the sampling of the continuous-time transfer function $H_C(j\omega)$ can be expressed as follows:
$$\begin{eqnarray} H_D(e^{j\omega}) &=& \frac{1}{T} \sum_{k=-\infty}^{\infty} H_C \left( \frac{\omega}{T} - \frac{2\pi k}{T} \right) \end{eqnarray}$$
$$ \omega = \Omega T = \frac{2 \pi}{f_s} $$
This sampling can be interpreted as mapping the s plane to the z-plane:
$$ z = e^{sT} = e^{σT} e^{jΩT} $$
with
$$ ω = ΩT = \frac{2πf}{f_s} $$
The following plot visualizes the repitition of $H_D(e^{j\omega})$:
We see that the repeating spectra overlap, if the signal is not band-limited This is referred to as spectrum aliasing - and has the following consequences:
- The impulse invariance method is not useful for high-pass filters.
- It is more suitable for Butterworth and Chebyshev I - they have no ripples in the stop-band.
Example: Integrator¶
A simple example is the integrator - a system with low-pass behavior. Its transfer function has one pole at $s=0$ and is given by:
$$ H_C(s) = \frac{1}{s-a} $$
The inverse Laplace transform is an eponential function (look up these transform pairs in any table):
$$ h_C(t) = e^{at} u(t) $$
This continuous-time transfer function can be digitized by substituting $t$ with $nT$:
$$ h_D[n] = e^{aTn} u[n] $$
The following plot shows this for $T=0.005$:
Next, we apply the z-transform to this impulse response. We can again refer to a table of z-transform pairs or go back to our z-transform example to get the following relation:
$\alpha^n u[n] \Rightarrow \frac{1}{1-\alpha z^{-1}}$, with: $\alpha = e^{aT}$
Using this relation, the discrete-time transfer function results in:
$$ \boxed{H_D(z) = \frac{1}{1 -e^{aT} z^{-1}}} $$
We can directly get our single coefficient from the transfer function:
$$ a_0 = -e^{aT} $$
And create the difference equation:
$$ y[n] = x[n] -e^{aT} y[n-1] $$
$H_D(z)$ has one pole at:
$$ |z| = e^{aT} $$
And the ROC is:
$$ |z| > e^{aT} $$
We can now investigate the system behavior for different values of a with a fixed $T=1$: