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 (s2 + s + 1), such as in continuous-time transfer
functions. A similar function,
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
and the associated vector of gains
k from the transfer
The numerator polynomials are represented as columns
of the matrix
The denominator polynomial is represented in the vector
Given a SIMO continuous-time system in polynomial transfer function form
you can use the output of
tf2zp to produce
the single-input, multi-output (SIMO) factored transfer function form
The following describes the input and output arguments for
a specifies the coefficients
of the denominator polynomial A(s)
(or A(z)) in
descending powers of s (z-1).
The ith row of the matrix
the coefficients of the ith numerator polynomial
(the ith row of B(s)
or B(z)). Specify as many rows
b as there are outputs.
For continuous-time systems, choose the number nb of
b to be less than or equal to the length na of
For discrete-time systems, choose the number nb of
b to be equal to the length na of
a. You can use the function
eqtflength to provide equal length vectors
in the case that
vectors of unequal lengths. Otherwise, pad the numerators in the matrix
possibly, the denominator vector
a) with zeros.
The zero locations are returned in the columns of
z, with as many columns as there are
The pole locations are returned in the column vector
the gains for each numerator transfer function in the vector
tf2zp function is part of the standard MATLAB® language.
Generate a system with the following transfer function.
Find the zeros, poles, and gain of the system. Use
eqtflength to ensure the numerator and denominator have the same length. Plot the poles and zeros to verify that they are in the expected locations.
b = [2 3]; a = [1 1/sqrt(2) 1/4]; fvtool(b,a,'polezero') [b,a] = eqtflength(b,a); [z,p,k] = tf2zp(b,a)
z = 0 -1.5000
p = -0.3536 + 0.3536i -0.3536 - 0.3536i
k = 2