zplane

Zero-pole plot

Syntax

zplane(z,p)
zplane(b,a)
zplane(d)
[hz,hp,ht] = zplane(z,p)

Description

This function displays the poles and zeros of discrete-time systems.

zplane(z,p) plots the zeros specified in column vector z and the poles specified in column vector p in the current figure window. The symbol 'o' represents a zero and the symbol 'x' represents a pole. The plot includes the unit circle for reference. If z and p are arrays, zplane plots the poles and zeros in the columns of z and p in different colors.

zplane(b,a) where b and a are row vectors, first uses roots to find the zeros and poles of the transfer function represented by numerator coefficients b and denominator coefficients a. The transfer function is defined in terms of z-1:

H(z)=B(z)A(z)=b(1)+b(2)z1++b(n+1)zna(1)+a(2)z1++a(m+1)zm

zplane(d) finds the zeros and poles of the transfer function represented by the digital filter, d. Use designfilt to generate d based on frequency-response specifications. The pole-zero plot is displayed in fvtool.

[hz,hp,ht] = zplane(z,p) returns vectors of handles to the zero lines, hz, and the pole lines, hp. ht is a vector of handles to the axes/unit circle line and to text objects, which are present when there are multiple zeros or poles. If there are no zeros or no poles, hz or hp is the empty matrix [].

Examples

expand all

Poles and Zeros of an Elliptic Lowpass Filter

For data sampled at 1000 Hz, plot the poles and zeros of a 4th-order elliptic lowpass digital filter with cutoff frequency 200 Hz, 3 dB of ripple in the passband, and 30 dB of attenuation in the stopband.

[z,p,k] = ellip(4,3,30,200/500);
zplane(z,p)
grid
title('4th-Order Elliptic Lowpass Digital Filter')

Create the same filter using designfilt. Use fvtool to plot its poles and zeros.

d = designfilt('lowpassiir','FilterOrder',4,'PassbandFrequency',200, ...
               'PassbandRipple',3,'StopbandAttenuation',30, ...
               'DesignMethod','ellip','SampleRate',1000);
zplane(d)

More About

expand all

Tips

  • You can override the automatic scaling of zplane using

    axis([xmin xmax ymin ymax])

    after calling zplane. This is useful in cases where one or more of the zeros or poles have such a large magnitude that the others are grouped tightly around the origin and are hard to distinguish.

Was this topic helpful?