Convert state-space filter parameters to zero-pole-gain form


[z,p,k] = ss2zp(A,B,C,D,i)


ss2zp converts a state-space representation of a given system to an equivalent zero-pole-gain representation. The zeros, poles, and gains of state-space systems represent the transfer function in factored form.

[z,p,k] = ss2zp(A,B,C,D,i) calculates the transfer function in factored form


of the continuous-time system


from the ith input (using the ith columns of B and D). The column vector p contains the pole locations of the denominator coefficients of the transfer function. The matrix z contains the numerator zeros in its columns, with as many columns as there are outputs y (rows in C). The column vector k contains the gains for each numerator transfer function.

ss2zp also works for discrete time systems. The input state-space system must be real.

The ss2zp function is part of the standard MATLAB® language.


collapse all

Zeros, Poles, and Gain of a Discrete-Time System

Consider a discrete-time system defined by the transfer function

$$ H(z) = \frac{2+3z^{-1}}{1+0.4z^{-1}+z^{-2}}. $$

Determine its zeros, poles, and gain directly from the transfer function. Pad the numerator with zeros so it has the same length as the denominator.

b = [2 3 0];
a = [1 0.4 1];
[z,p,k] = tf2zp(b,a)
z =


p =

  -0.2000 + 0.9798i
  -0.2000 - 0.9798i

k =


Express the system in state-space form and determine the zeros, poles, and gain using ss2zp.

[A,B,C,D] = tf2ss(b,a);
[z,p,k] = ss2zp(A,B,C,D,1)
z =


p =

  -0.2000 + 0.9798i
  -0.2000 - 0.9798i

k =


More About

expand all


ss2zp finds the poles from the eigenvalues of the A array. The zeros are the finite solutions to a generalized eigenvalue problem:

z = eig([A B;C D], diag([ones(1,n) 0]);

In many situations this algorithm produces spurious large, but finite, zeros. ss2zp interprets these large zeros as infinite.

ss2zp finds the gains by solving for the first nonzero Markov parameters.


[1] Laub, A. J., and B. C. Moore. "Calculation of Transmission Zeros Using QZ Techniques." Automatica. Vol. 14, 1978, p. 557.

See Also

| | | | |

Introduced before R2006a

Was this topic helpful?