The Inverse Z-Transform

Scope and Background Reading

This session we will talk about the Inverse Z-Transform and illustrate its use through an examples class.

The material in this presentation and notes is based on Chapter 9 (Starting at Section 9.6) of Steven T. Karris, Signals and Systems: with Matlab Computation and Simulink Modelling, 5th Edition. from the Required Reading List.

Agenda

  • Inverse Z-Transform
  • Examples using PFE
  • Examples using Long Division
  • Analysis in Matlab

The Inverse Z-Transform

The inverse Z-Transform enables us to extract a sequence $f[n]$ from $F(z)$. It can be found by any of the following methods:

  • Partial fraction expansion
  • The inversion integral
  • Long division of polynomials

Partial fraction expansion

We expand $F(z)$ into a summation of terms whose inverse is known. These terms have the form:

$$k,\;\frac{r_1 z}{z - p_1},\;\frac{r_1 z}{(z - p_1)^2},\;\frac{r_3 z}{z - p_2},\ldots$$

where $k$ is a constant, and $r_i$ and $p_i$ represent the residues and poles respectively, and can be real or complex1.

Step 1: Make Fractions Proper

  • Before we expand $F(z)$ into partial fraction expansions, we must first express it as a proper rational function.
  • This is done by expanding $F(z)/z$ instead of $F(z)$
  • That is we expand

$$\frac{F(z)}{z} = \frac{k}{z} + \frac{r_1}{z-p_1} + \frac{r_2}{z-p_2} + \cdots$$

Step 2: Find residues

  • Find residues from

$$r_k = \lim_{z\to p_k}(z - p_k)\frac{F(z)}{z} = (z - p_k)\left.\frac{F(z)}{z}\right|_{z=p_k}$$

Step 3: Map back to transform tables form

  • Rewrite $F(z)/z$:

$$z\frac{F(z)}{z} = F(z) = k + \frac{r_1z}{s-p_1} + \frac{r_2z}{s-p_2} + \cdots$$

Example 1

Karris Example 9.4: use the partial fraction expansion to compute the inverse z-transform of

$$F(z) = \frac{1}{(1 - 0.5z^{-1})(1 - 0.75z^{-1})(1 - z^{-1})}$$

Matlab solution

See example1.mlx. (Also available as example1.m.)

In [15]:
syms z n

The denoninator of $F(z)$

In [16]:
Dz = (z - 0.5)*(z - 0.75)*(z - 1);

Multiply the three factors of Dz to obtain a polynomial

In [17]:
Dz_poly = collect(Dz)
 
Dz_poly =
 
z^3 - (9*z^2)/4 + (13*z)/8 - 3/8
 

Make into a rational polynomial

$z^2$

In [18]:
num = [0, 1, 0, 0];

$z^3 - 9/4 z^2 - 13/8 z - 3/8$

In [19]:
den = sym2poly(Dz_poly)
den =

    1.0000   -2.2500    1.6250   -0.3750

Compute residues and poles

In [20]:
[r,p,k] = residue(num,den);
  • fprintf works like the c-language function
In [21]:
fprintf('\n')
fprintf('r1 = %4.2f\t', r(1)); fprintf('p1 = %4.2f\n', p(1));...
fprintf('r2 = %4.2f\t', r(2)); fprintf('p2 = %4.2f\n', p(2));...
fprintf('r3 = %4.2f\t', r(3)); fprintf('p3 = %4.2f\n', p(3));
r1 = 8.00	p1 = 1.00
r2 = -9.00	p2 = 0.75
r3 = 2.00	p3 = 0.50

Symbolic proof

$$f[n] = 2\left(\frac{1}{2}\right)^n - 9\left(\frac{3}{4}\right)^n + 8$$

In [22]:
% z-transform
fn = 2*(1/2)^n-9*(3/4)^n + 8;
Fz = ztrans(fn)
 
Fz =
 
(8*z)/(z - 1) + (2*z)/(z - 1/2) - (9*z)/(z - 3/4)
 
In [23]:
% inverse z-transform
iztrans(Fz)
 
ans =
 
2*(1/2)^n - 9*(3/4)^n + 8
 

Sequence

In [24]:
n = 1:15;
sequence = subs(fn,n);
stem(n,sequence)
title('Discrete Time Sequence f[n] = 2*(1/2)^n-9*(3/4)^n + 8');
ylabel('f[n]')
xlabel('Sequence number n')

Example 2

Karris example 9.5: use the partial fraction expansion method to to compute the inverse z-transform of

$$F(z) = \frac{12z}{(z+1)(z - 1)^2}$$

Matlab solution

See example2.mlx. (Also available as example2.m.)

In [25]:
open example2

Example 3

Karris example 9.6: use the partial fraction expansion method to to compute the inverse z-transform of

$$F(z) = \frac{z + 1}{(z-1)(z^2 + 2z + 2)}$$

Matlab solution

See example3.mlx. (Also available as example3.m.)

In [26]:
open example3

Inverse Z-Transform by the Inversion Integral

The inversion integral states that:

$$f[n] = \frac{1}{{j2\pi }}\oint_C {F(z){z^{n - 1}}\,dz} $$

where $C$ is a closed curve that encloses all poles of the integrant.

This can (apparently) be solved by Cauchy's residue theorem!!

Fortunately (:-), this is beyond the scope of this module!

See Karris Section 9.6.2 (pp 9-29—9-33) if you want to find out more.

Inverse Z-Transform by the Long Division

To apply this method, $F(z)$ must be a rational polynomial function, and the numerator and denominator must be polynomials arranged in descending powers of $z$.

Example 4

Karris example 9.9: use the long division method to determine $f[n]$ for $n = 0,\,1,\,\mathrm{and}\,2$, given that

$$F(z) = \frac{1 + z^{-1} + 2z^{-2} + 3z^{-3}}{(1 - 0.25z^{-1})(1 - 0.5z^{-1})(1 - 0.75z^{-1})}$$

Matlab

See example4.mlx. (also available as example4.m.)

In [27]:
open example4

Methods of Evaluation of the Inverse Z-Transform

MethodAdvantagesDisadvantages
Partial Fraction Expansion
  • Most familiar.
  • Can use Matlab `residue` function.
  • Requires that $F(z)$ is a proper rational function.
Invsersion Integral
  • Can be used whether $F(z)$ is rational or not
  • Requires familiarity with the *Residues theorem* of complex variable analaysis.
Long Division
  • Practical when only a small sequence of numbers is desired.
  • Useful when z-transform has no closed-form solution.
  • Can use Matlab `dimpulse` function to compute a large sequence of numbers.
  • Requires that $F(z)$ is a proper rational function.
  • Division may be endless.

Summary

  • Inverse Z-Transform
  • Examples using PFE
  • Examples using Long Division
  • Analysis in Matlab

Next time

  • DT transfer functions, continuous system equivalents, and modelling DT systems in Matlab and Simulink.