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

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

`tf2zpk`

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

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 (s^{2} + 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(z)=\frac{B(z)}{A(z)}=\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(z)=\frac{Z(z)}{P(z)}=k\frac{(z-{z}_{1})(z-{z}_{2})\cdots (z-{z}_{m})}{(z-{p}_{1})(z-{p}_{2})\cdots (z-{p}_{n})}$$

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`

.