Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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

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

`tf2zp`

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

You should use `tf2zp`

when working with positive
powers (s^{2} + s + 1), such as in continuous-time transfer
functions. A similar function, `tf2zpk`

,
is more useful when working with transfer functions expressed in inverse
powers (1 + z^{-1} + z^{-2}), which
is how transfer functions are usually expressed in DSP.

`[z,p,k] = tf2zp(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 SIMO continuous-time system in polynomial transfer function form

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

you can use the output of `tf2zp`

to produce
the single-input, multi-output (SIMO) factored transfer function form

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

The following describes the input and output arguments for `tf2zp`

:

The vector

`a`

specifies the coefficients of the denominator polynomial*A*(*s*) (or*A*(*z*)) in descending powers of*s*(*z*).^{-1}The

*i*th row of the matrix`b`

represents the coefficients of the*i*th numerator polynomial (the*i*th row of*B*(*s*) or*B*(*z*)). Specify as many rows of`b`

as there are outputs.For continuous-time systems, choose the number

*nb*of columns of`b`

to be less than or equal to the length*na*of the vector`a`

.For discrete-time systems, choose the number

*nb*of columns of`b`

to be equal to the length*na*of the vector`a`

. You can use the function`eqtflength`

to provide equal length vectors in the case that`b`

and`a`

are vectors of unequal lengths. Otherwise, pad the numerators in the matrix`b`

(and, possibly, the denominator vector`a`

) with zeros.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`

.

The `tf2zp`

function is part of the standard MATLAB^{®} language.

Was this topic helpful?