zp = StateSpace.Conversion.toZerosAndPolesMIMO(ss)
Computes a matrix of ZerosAndPoles records
product(s + n1[i]) * product(s^2 + n2[i,1]*s + n2[i,2]) zp = k * --------------------------------------------------------- product(s + d1[i]) * product(s^2 + d2[i,1]*s + d2[i,2])
of a system from state space representation, i.e. isolating the uncontrollable and unobservable parts and the eigenvalues and invariant zeros of the controllable and observable sub systems are calculated. The algorithm applies the method described in [1] for each input-output pair.
Modelica_LinearSystems2.StateSpace ss=Modelica_LinearSystems2.StateSpace( A = [-1.0, 0.0, 0.0; 0.0,-2.0, 0.0; 0.0, 0.0,-3.0], B = [0.0, 1.0; 1.0, 1.0; -1.0, 0.0], C = [0.0, 1.0, 1.0; 1.0, 1.0, 1.0], D = [1.0, 0.0; 0.0, 1.0]); algorithm zp:=Modelica_LinearSystems2.StateSpace.Conversion.toZerosAndPoles(ss); // zp = [(s^2 + 5*s + 7)/( (s + 2)*(s + 3) ), 1/(s + 2); 1/( (s + 2)*(s + 3) ), 1*(s + 1.38197)*(s + 3.61803)/( (s + 1)*(s + 2) )]
i.e.
| | | (s^2+5*s+7) 1 | | ----------------- ----- | | (s + 2)*(s + 3) (s+2) | tf = | | | 1 (s + 1.38197)*(s + 3.61803) | | ------------- ----------------------------- | | (s + 2)*(s + 3) (s + 1)*(s + 2) | | |
encapsulated function toZerosAndPolesMIMO import Modelica; import Modelica_LinearSystems2.ZerosAndPoles; import Modelica_LinearSystems2.StateSpace; input StateSpace ss "State space system"; input Real tol = 1e-10 "Tolerance of reduction procedure, default tol = 1e-10"; output ZerosAndPoles zp[size(ss.C, 1), size(ss.B, 2)] "Matrix of zeros-and-poles objects"; end toZerosAndPolesMIMO;
Date | Author | Comment |
---|---|---|
2010-05-31 | Marcus Baur, DLR-RM | Realization |