functiontoDiscreteStateSpace

Convert a DiscreteTransferFunction into a DiscreteStateSpace representation

Information

Syntax

dss = DiscreteTransferFunction.ConversiontoDiscreteStateSpace(dtf)

Description

Transforms a discrete transfer function into discrete state space representation. There are an infinite number of possible realizations. Here, the transfer function is transformed into controller canonical form, i.e. the transfer function

     b4*z^4 + b3*z^3 + b2*z^2 + b1*z + b0
y = -------------------------------------- * u
     a4*z^4 + a3*z^3 + a2*z^2 + a1*z + a0

is transformed into:

x_k+1 = A*x_k + B*u_k;
 y_k  = C*x_k + D*u_k;
with
  A = [   0  ,    1  ,    0  ,    0;
          0  ,    0  ,    1  ,    0:
          0  ,    0  ,    0  ,    1;
       -a0/a4, -a1/a4, -a2/a4, -a3/a4];

  B = [  0;
         0;
         0;
        1/a4];
  C = [b0-b4*a0/a4, b1-b4*a1/a4, b2-b4*a2/a4, b3-b4*a3/a4];
  D = [b4/a4];

Example

  DiscreteTransferFunction z = Modelica_LinearSystems2.DiscreteTransferFunction.z();
  Modelica_LinearSystems2.DiscreteTransferFunction dtf=(z+1)/(z^3 + z^2 + z + 1);

algorithm
  dss := Modelica_LinearSystems2.DiscreteTransferFunction.Conversion.toDiscreteStateSpace(dtf);
// ss.A = [0, 1, 0; 0, 0, 1; -1, -1, -1],
// ss.B = [0; 0; 1],
// ss.C = [1, 1, 0],
// ss.D = [0],
// ss.B2 = [0; 0; 0],

Inputs

TypeNameDefaultDescription
DiscreteTransferFunctiondtfdiscrete transfer function of a system

Outputs

TypeNameDefaultDescription
DiscreteStateSpacedssDiscrete state space record