Zero-pole plot for discrete-time systems

collapse all in page

## Syntax

`zplane(z,p)`

`zplane(b,a)`

`[hz,hp,ht] = zplane(___)`

`zplane(d)`

`[vz,vp,vk] = zplane(d)`

## Description

example

`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 matrices, then `zplane`

plots the poles and zeros in the columns of `z`

and `p`

in different colors.

example

`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 the numerator coefficients `b`

and the denominator coefficients `a`

.

`[hz,hp,ht] = zplane(___)`

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.

`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.

`[vz,vp,vk] = zplane(d)`

returns the zeros `vz`

, poles `vp`

, and gain `vk`

corresponding to the digital filter `d`

.

## Examples

collapse all

### Poles and Zeros of Elliptic Lowpass Filter

Open Live Script

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)gridtitle('4th-Order Elliptic Lowpass Digital Filter')`

Create the same filter using `designfilt`

. Use `zplane`

to plot the poles and zeros.

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

### Zeros and Poles of Transfer Function

Open Live Script

Design an 8th-order Chebyshev Type II bandpass filter with a stopband attenuation of 20 dB. Specify the stopband edge frequencies as $$\pi /8$$ rad/sample and $$5\pi /8$$ rad/sample.

[b,a] = cheby2(8/2,20,[1 5]/8);

Use `zplane`

to plot the poles and zeros of the transfer function.

zplane(b,a)

Visualize the zero-phase response of the filter. Overlay the unit circle and the pole and zero locations.

[hw,fw] = zerophase(b,a,1024,"whole");z = roots(b);p = roots(a);plot3(cos(fw),sin(fw),hw)hold onplot3(cos(fw),sin(fw),zeros(size(fw)),'--')plot3(real(z),imag(z),zeros(size(z)),'o')plot3(real(p),imag(p),zeros(size(p)),'x')hold offxlabel("Real")ylabel("Imaginary")view(35,40)grid

## Input Arguments

collapse all

`z`

, `p`

— Zeros and poles

column vectors | matrices

Zeros and poles, specified as column vectors or matrices. If `z`

and `p`

are matrices, then `zplane`

plots the poles and zeros in the columns of `z`

and `p`

in different colors.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

`b`

, `a`

— Transfer function coefficients

row vectors

Transfer function coefficients, specified as row vectors. The transfer function is defined in terms of *z*^{–1}:

$$H(z)=\frac{B(z)}{A(z)}=\frac{b(1)+b(2){z}^{-1}+\cdots +b(n+1){z}^{-n}}{a(1)+a(2){z}^{-1}+\cdots +a(m+1){z}^{-m}}$$

**Example: **`b = [1 3 3 1]/6`

and `a = [3 0 1 0]/3`

specify a third-order Butterworth filter with normalized 3-dB frequency 0.5π rad/sample.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

`d`

— Digital filter

`digitalFilter`

object

Digital filter, specified as a digitalFilter object. Use designfilt to generate a digital filter based on frequency-response specifications.

**Example: **`d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)`

specifies a third-order Butterworth filter with normalized 3-dB frequency 0.5π rad/sample.

## Output Arguments

collapse all

`hz`

, `hp`

, `ht`

— Vectors of handles

vectors

Vectors of handles to the zero lines, `hz`

, and the pole lines, `hp`

, of the pole-zero plot. `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, `[]`

.

`vz`

, `vp`

, `vk`

— Zeros, poles, and gain

column vectors and scalar

Zeros, poles, and gain of a digital filter, d, returned as column vectors and a scalar.

## Tips

You can override the automatic scaling of

`zplane`

usingaxis([xmin xmax ymin ymax])

after calling

`zplane`

. This scaling is useful when one or more zeros or poles have such a large magnitude that the others are grouped tightly around the origin and are hard to distinguish.

## Version History

**Introduced before R2006a**

expand all

### R2023a: Visualize function outputs using Create Plot Live Editor task

You can now use the Create Plot Live Editor task to visualize the output of `zplane`

interactively. You can select different chart types and set optional parameters. The task also automatically generates code that becomes part of your live script.

## See Also

### Apps

- Filter Analyzer | Filter Designer

### Functions

- designfilt | digitalFilter | freqz

### Topics

- Speaker Crossover Filters

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français

- United Kingdom (English)

Contact your local office