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) | | |
function toZerosAndPolesMIMO import Modelica; import Modelica_LinearSystems2; import Modelica_LinearSystems2.ZerosAndPoles; import Modelica_LinearSystems2.StateSpace; import Modelica_LinearSystems2.WorkInProgress; input StateSpace ss "StateSpace object"; output ZerosAndPoles zp[size(ss.C, 1), size(ss.B, 2)]; end toZerosAndPolesMIMO;
Date | Author | Comment |
---|---|---|
2010-05-31 | Marcus Baur, DLR-RM | Realization |