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.

## Recap

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.

## Conclusion

- The value
*A*is the magnitude of*z*and is the distance to the origin on the Z-Plot.*A*= |*z*| *ω*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.

## Bibliography/Citations/Resources:

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

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

## Recent Comments