tss = StateSpace.Transformation.toObservabilityForm(ss)
This function computes the observability form of a SISO state space system, i.e.
tss:
der(z) = inv(T)*A*T*z + inv(T)*B*u
y = C*inv(T)*z + D*u
with
T = [C; C*A; ...; C*A^(n-1)]
is the observability matrix of the original state space system. In comparison to the corresponding transfer function
b0 + b1*s + ... + bn*s^n
G(s) = --------------------------
a0 + a1*s + ... + an*s^n
the canonical observability form is
| 0 0 ... 0 -a0 | | b0 - a0*bn |
| 1 0 ... 0 -a1 | | b1 - a1*bn |
A = | 0 1 ... 0 -a2 |, B = | ... |
|... ... ... ... -a3 | | bn-2 - an-2*bn |
| 0 ... ... 1 -an-1 | | bn-1 - an-1*bn |
C = [0, 0, ..., 1], D = [bn]
Matrix T has to be invertible, i.e. the system has to be observable. The transformed system has the same eigenvalues.
Modelica_LinearSystems2.StateSpace ss=Modelica_LinearSystems2.StateSpace(
A=[-1, 1; 1, -2],
B=[1; 0],
C=[1, 1],
D=[2]);
algorithm
tss:=Modelica_LinearSystems2.StateSpace.Transformation.toObservabilityForm(ss);
// tss=StateSpace(
A=[0, -1; 1, -3],
B=[3; 1],
C=[0, 1],
D=[2])
toSimilarForm, toControllabilityForm
encapsulated function toObservabilityForm import Modelica; import Modelica_LinearSystems2.StateSpace; input StateSpace ss "State space system"; output StateSpace tss(redeclare Real A[size(ss.A, 1), size(ss.A, 2)], redeclare Real B[size(ss.B, 1), size(ss.B, 2)], redeclare Real C[size(ss.C, 1), size(ss.C, 2)], redeclare Real D[size(ss.D, 1), size(ss.D, 2)]) "Transformed state space system"; end toObservabilityForm;
| Date | Author | Comment |
|---|---|---|
| 2010-05-31 | Marcus Baur, DLR-RM | Realization |