I've been looking at how to plot zeros/poles based on a transfer function. I found a couple of Tutorials online.

In the first youtube tutorial, the author brilliantly explains how to plot the zeros/poles.

In the second tutorial, the author explains how to obtain the magnitude characteristics of the frequency response, which is also fantastic. In the second tutorial, under the Example in "3.2.3 Transfer function of discrete-time systems", we have the following transfer function

Transfer function

Based on the transfer function, the poles and zeros can be defined as,

a = [1 -2.2343 1.8758 -0.5713] b = [0.0088 0.0263 0.0263 0.0088]

This is where my confusion starts. based on the first tutorial, i'll have to plot all the zeros/poles along the x-axis (Or am I mistaken?).

But based on the MATLAB command to plot pole and zeros,


I get this plot

pole-zero plot

The plot for the poles and zeros are scattered all over. How can i plot the poles and zeros manually in the Z-plane given my poles and zeros and obtain a similar output to MATLAB ?

Thanks for your help.


1 Answer 1


What you have are not the poles and zeros, but simply the filter coefficients, i.e., the coefficients of the numerator and denominator polynomials.

The poles are the roots of the denominator polynomial, and the zeros are the roots of the numerator polynomial. In Matlab they can be found by using the roots command:

p = roots(a);
z = roots(b);

Note that in general, poles and zeros are complex numbers, that's why they are plotted in the complex plane.

Just a remark: you used the zplane command with numerator and denominator interchanged, that's why the plot shows the zeros as crosses on the unit circle, and the poles as 'O's inside the circle. The correct call is zplane(b,a).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.