In the last article I introduced the Z-Transform and outlined the motivations for its use. It is a fundamental tool for filter design as we shall see. I also deconstructed the Z-Transform into it’s basic mathematical components. I showed you how the procedure worked and identified some key ideas. However, that article ended rather abruptly and so we will continue where we left off.


The Unilateral Z-Transform is written as follows:

x[n] is some discrete signal and z^-n is some complex signal and can be written as either of the following:

A Brute Force Approach…

As an engineer, I do not typically have an intuitive sense for the implications of a mathematical formula until I start experimenting with values and finding relationships (I was never good at math). However, as I stated in the end of the last article, we can take the real and imaginary parts of the number z and plot them. This page on Euler’s Formula is a good explanation on what we are plotting. As you can see, we can expect our values of z to be constrained to a unit circle while A=1. However, A is a variable and will not always be 1.

Displaying the Real and Imaginary components of z for varying values of A

There will be 3 sets of graphs which consist of 3 subplots. The first two subplots will illustrate the cosine (real) and sine (imaginary) terms over time in samples (n). Another subplot shows where the real and imaginary parts of z fall on a Cartesian coordinate system. For the sake of simplicity we are not combining z with any sequence x[n]. You can also interpret these graphs as what happens if we assume x[n]=[1, … , 1

The plot above shows what happens when our gain term A < 1. This system is clearly unstable for this value of z. Our real and imaginary values of z exponentially increase over time. The dots on the third subplot correspond with various values of z. If you are looking for the particular value of z used in the time domain graphs for the real and imaginary plots, it is located at approximately [0.5,0.5

The plot above shows what happens when A = 1 and the value of z lies on the unit circle. This system is technically stable. You can interpret this as a steady state oscillation or resonance. The real and imaginary terms do not exponentially increase or decrease.

This final plot shows what happens when A > 1. This system is stable as our real and imaginary terms for z decrease over time.

As stated in Part 1, the Z-Transform allows us to perform a correlation between some signal x[n] and some other signal z^-n. Essentially, the Z-Transform allows us to examine the correlation between these three plots above (stability, steady state, and instability) depending on the value of z.

About that Circle Plot…

The plot with a unit circle is known as an Argand Diagram or Z-Plot in some engineering groups. In this section, I want to guide you through understanding this plot. Hopefully, you will begin to understand why this plot helps you understand almost all aspects of a digital Linear Time Invariant system.

All code used to generate these plots are available on my GitHub. Feel free to mess around with those scripts in order to get a better understanding of this plot.

As you can see, the graph above has replaced the traditional x and y axis with real and imaginary. The green circle is the unit circle and it represents |z| = 1. The dots represent various points for some value of z. Remember that z has a complex term and can be expressed as the exponential form (left hand side below) or with the real and imaginary terms separated (right hand side below):

On the left hand side, the term ω is the phase angle of z. This means that ω is responsible for the angle of z around the unit circle.

The right hand side of the equation is an equivalent form and sometimes easier to understand. The cosine term is the real axis and the sine term is the imaginary axis. The value ω is now angular frequency and is defined as ω = 2πf. f is some frequency in Hz.

The interesting thing is that as we increase the value ω, we are going around the unit circle, effectively a frequency sweep. Starting from [Real = 1 , Imaginary = 0] and going counter clockwise to [Real = -1 , Imaginary = 0] we can explore the top half of the arc of the unit circle. Note that this is going from 0→π. The bottom half of the circle is π→2π and each quadrant of the circle is π/2.

Another more tangible way to think about it as an audio developer is as follows. Imagine our system has a sample rate of 48 kHz. If we were to write a list of values from 0→2π this would be the same as writing a list of Hz values from 0→48kHz. The top half of our unit circle is our usable frequency range (below Nyquist) and the bottom half is where we exhibit aliasing. This also means that if we use a lower sample rate then there will be less points to map to around the unit circle. Feel free to play with this using the Python Script on my GitHub.


  1. The value A is the magnitude of z and is the distance to the origin on the Z-Plot. A = |z|
  2. ω is the angle of z on the Z-Plot and represents angular frequency. The value of z travels counter clockwise, following the unit circle.

By manipulating these values we can test a system for different values of z. Over the next few articles we will look at the Z-Plot for a few example systems and explore the complicated and nuanced relationship between sequences of z^-n and x[n]. Until then:

Be good to each other and take it easy…

-Will ☜(゚ヮ゚☜)

Will Fehlhaber is an Acoustics Engineer and Audio Programmer from the UK and Bay Area.


[1] The z-transform and Analysis of LTI Systems 

[2] Schaums Outline of Digital Signal Processing, 2nd Edition (Schaum’s Outlines)


Liked it? Take a second to support William Fehlhaber on Patreon!

Shopping cart

Shipping and discount codes are added at checkout.

Sign up here to learn about our premium courses and more!


Thank you for being a part of The Audio Programmer Community!