Get zero, poles and gain from state space model?

10.9k Views Asked by At

I'm going to transform a state space model:

$$\dot{x} = Ax + Bu \\ y = Cx + Du$$

Into a transfer function: $$G(s) = \frac{Y(s)}{U(s)}$$

What I need is to find the zeros, poles and gain. Finding poles are really easy. I just find the eigenvalues of the matrix $A$.

$$det(sI-A) = 0$$

Then I get the poles $$s_i = a\Re_i + b\Im_i$$

But how about the gain and zeros? How do I find them?

3

There are 3 best solutions below

10
On BEST ANSWER

Static gain is simply $C(- A)^{-1}B+D$ directly from the transfer function definition. To compute zeros, it is more involved as it depends on your definition of a zero (invariant or transfer?).

There are some references in MATLABs help https://se.mathworks.com/help/control/ref/tzero.html

8
On

This is a standard problem of finding the transfer function from a state-space model of a linear system. In particular, $\dot{x}=Ax+Bu \implies X(s)=(sI-A)^{-1}B U(s)$, and $y=Cx+Du \implies Y(s)=CX(s)+DU(s)$. Consequently, $$Y(s) = CX(s) + D U(s) = (C(sI-A)^{-1}B +D)U(s) \implies G(s) = C(sI-A)^{-1}B +D.$$ Once you have $G(s)$, you can compute the poles, zeros etc. of the transfer function.

5
On

I found the answer!

The zeros can be computed by

$$(z\begin{bmatrix} I &0 \\ 0 & 0 \end{bmatrix}-\begin{bmatrix} A & B\\ C & D \end{bmatrix}) = 0$$

MATLAB / Octave command:

>> zero = qz(A, B) 

Which computes the generalized eigenvalues lambda of (sB-A)