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

`[`

converts a state-space representation`z`

,`p`

,`k`

] = ss2zp(`A`

,`B`

,`C`

,`D`

)

$$\begin{array}{l}\dot{x}=Ax+Bu\\ y=Cx+Du\end{array}$$

of a given continuous-time or discrete-time system to an equivalent zero-pole-gain representation

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

whose zeros, poles, and gains represent the transfer function in factored form.

`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.