# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# ss2zp

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

## Syntax

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

## Description

`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

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

of the continuous-time system

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

from the `i`th input (using the `i`th 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.

## Examples

collapse all

Consider a discrete-time system defined by the transfer function

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 = 0 -1.5000 ```
```p = -0.2000 + 0.9798i -0.2000 - 0.9798i ```
```k = 2 ```

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 = 0 -1.5000 ```
```p = -0.2000 + 0.9798i -0.2000 - 0.9798i ```
```k = 2 ```

## Algorithms

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

## References

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