pole-zero diagrams


introduction | demonstration | investigate | reading | credits | downloading | home

Introduction

This tutorial tool allows users to create linear systems via a pole-zero diagram. The magnitude response of the linear system is displayed and updated as the user drags individual poles or zeroes . The linear system can be applied to signals and the filtered and unfiltered signals can be played back. Tones, uniform noise and impulse trains can be generated. In addition, preset pole-zero diagrams (in fact, all-pole systems) for vowels can be loaded.

Note: this demonstration requires the Matlab Signal Processing Toolbox.

The tool

Type 'polezero' to launch the demo. You will be presented with a display dominated by the unit circle. Initially, it contains no poles or zeroes. Use the add pole or add zero buttons (1) to add new poles or zeroes to the figure (2, 3). They appear in conjugate pairs. You can move them by selecting and dragging, and delete them by selecting and hitting the delete (or similar) key. Dragging either one of a pair does the appropriate thing to its partner.

As they move, the magnitude response display (4) is updated to show the response evaluated on the unit circle. [At present, no phase response is shown, but it could be easily added]. The response of the system is normalised with a maximum of 0 dB.

To plug a signal into the linear system, use the file menu (5). From here, you can load sound files, or generate tones, uniform noise or impulse trains. Once an input signal is available, the playback controls (6) are enabled, allowing playback of the input and output of the linear system. Note that the sampling frequency reflects that of the most recently loaded signal, and the interpretation of the unit circle and magnitude response axis changes accordingly.

Signals can either replace those already loaded, or by added in. To accomplish the latter, click the accumulate checkbox (8). If a generated signal is loaded after a soundfile, it will have a duration to match the soundfile.

Preset pole configurations can be loaded using the presets menu (9). Currently, presets for selected vowel sounds are available.

Things to investigate

  1. Using a single pole pair, observe the effect on the frequency response as you drag it. What happens as it nears the unit circle? What is the relationship between the peak in the frequency response and the location of the pole pair?
  2. Add a further pole pair and experiment with its position.
  3. Now add a zero pair. Again, what happens when the zero nears the unit circle?
  4. Load in a speech signal, then tick the 'accumulate' checkbox and load a tone. Listen to the signal you obtain. The tone should be quite loud in relation to the speech signal. Now attempt to build a linear system which reduces (or removes completely) the effect of the tone.
  5. Load one of the vowel presets. Move one of the poles and observe the effect on the spectrum. Note how the bandwidth of each 'formant' is related to the associated pole's distance from the unit circle. To listen to the vowel, you need to load a suitable excitation signal. Start with a noise signal and listen to the filtered response. Does it sound like the specified vowel? Load a different preset vowel to hear the difference. Now load an impulse series. The filtered vowel should now sound more like a voiced sound. You can experiment with the impulse repetition rate to change the fundamental frequency of the vowel.
  6. Load in a sentence and use the pole-zero editor to create a frquency response with a high-pass shape (that is, one rising from low to high frequencies). What effect does this have on the speech signal? Now produce one with a low-pass shape (falling from low to high frequencies).
  7. Simulate telephone bandwidth speech.

Further reading


Credits etc

Produced by: Martin Cooke, based loosely on Perry Cook's (no relation :-) Resolab application on the NeXT.

Release date: October 17th 1998

Permissions: This demonstration may be used and modified freely by anyone. It may be distributed in unmodified form.