Documentation

# tf2zpk

Convert transfer function filter parameters to zero-pole-gain form

## Syntax

```[z,p,k] = tf2zpk(b,a) ```

## Description

`tf2zpk` finds the zeros, poles, and gains of a discrete-time transfer function.

### Note

You should use `tf2zpk` when working with transfer functions expressed in inverse powers (1 + z-1 + z-2), which is how transfer functions are usually expressed in DSP. A similar function, `tf2zp`, is more useful for working with positive powers (s2 + s + 1), such as in continuous-time transfer functions.

`[z,p,k] = tf2zpk(b,a)` finds the matrix of zeros `z`, the vector of poles `p`, and the associated vector of gains `k` from the transfer function parameters `b` and `a`:

• The numerator polynomials are represented as columns of the matrix `b`.

• The denominator polynomial is represented in the vector `a`.

Given a single-input, multiple output (SIMO) discrete-time system in polynomial transfer function form

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

you can use the output of `tf2zpk` to produce the single-input, multioutput (SIMO) factored transfer function form

`$H\left(z\right)=\frac{Z\left(z\right)}{P\left(z\right)}=k\frac{\left(z-{z}_{1}\right)\left(z-{z}_{2}\right)\cdots \left(z-{z}_{m}\right)}{\left(z-{p}_{1}\right)\left(z-{p}_{2}\right)\cdots \left(z-{p}_{n}\right)}$`

The following describes the input and output arguments for `tf2zpk`:

• The vector `a` specifies the coefficients of the denominator polynomial A(z) in descending powers of z.

• The ith row of the matrix `b` represents the coefficients of the `i`th numerator polynomial (the ith row of B(s) or B(z)). Specify as many rows of `b` as there are outputs.

• The zero locations are returned in the columns of the matrix `z`, with as many columns as there are rows in `b`.

• The pole locations are returned in the column vector `p` and the gains for each numerator transfer function in the vector `k`.

## Examples

collapse all

Design a 3rd-order Butterworth filter with normalized cutoff frequency $0.4\pi$ rad/sample. Find the poles, zeros, and gain of the filter. Plot them to verify that they are where expected.

```[b,a] = butter(3,.4); fvtool(b,a,'polezero') [z,p,k] = tf2zpk(b,a)```
```z = 3×1 complex -1.0000 + 0.0000i -1.0000 - 0.0000i -1.0000 + 0.0000i ```
```p = 3×1 complex 0.2094 + 0.5582i 0.2094 - 0.5582i 0.1584 + 0.0000i ```
```k = 0.0985 ```
```text(real(z)-0.1,imag(z)-0.1,'\bfZeros','color',[0 0.4 0]) text(real(p)-0.1,imag(p)-0.1,'\bfPoles','color',[0.6 0 0])```