Main Content


Compute companion state-space realization

Since R2023b



    csys = compreal(sys) returns the controllable companion realization of the single-input LTI model sys.


    csys = compreal(sys,type) returns the realization of the model sys depending on type. Specify type as "c" for controllable companion form or "o" for observable companion form.

    • "c" — Computes the controllable companion realization for a single-input LTI model sys. This is the same as the first syntax.

    • "o" — Computes the observable companion realization for a single-output LTI model sys.


    [csys,T] = compreal(___) also returns the transformation matrix T for explicit models with matrices A, B, C such that

    • The controllable companion form is T-1AT, T-1B, CT.

    • The observable companion form is TAT-1, TB, CT-1.


    collapse all

    aircraftPitchSSModel.mat contains the state-space matrices of an aircraft where the input is elevator deflection angle δ and the output is the aircraft pitch angle θ.


    Load the model data to the workspace and create the state-space model sys.

    sys = ss(A,B,C,D)
    sys =
      A = 
                x1       x2       x3
       x1   -0.313     56.7        0
       x2  -0.0139   -0.426        0
       x3        0     56.7        0
      B = 
       x1   0.232
       x2  0.0203
       x3       0
      C = 
           x1  x2  x3
       y1   0   0   1
      D = 
       y1   0
    Continuous-time state-space model.

    Convert the resultant state-space model sys to controllable companion form.

    csys = compreal(sys)
    csys =
      A = 
                  x1         x2         x3
       x1          0          0  1.914e-15
       x2          1          0    -0.9215
       x3          0          1     -0.739
      B = 
       x1   1
       x2   0
       x3   0
      C = 
                x1       x2       x3
       y1        0    1.151  -0.6732
      D = 
       y1   0
    Continuous-time state-space model.

    csys is the controllable companion form of sys.

    The file icEngine.mat contains one data set with 1500 input-output samples collected at a sampling rate of 0.04 seconds. The input u(t) is the voltage (V) controlling the By-Pass Idle Air Valve (BPAV), and the output y(t) is the engine speed (RPM/100).

    Use the data in icEngine.mat to create a state-space model with identifiable parameters.

    load icEngine.mat
    z = iddata(y,u,0.04);
    sys = n4sid(z,4,'InputDelay',2);

    Convert the identified state-space model sys to observable companion form.

    [osys,T] = compreal(sys,"o");

    Compare frequency response confidence bounds of sys to osys.

    h = bodeplot(sys,osys,'r.');

    The frequency response confidence bounds are identical.

    Additionally, compreal returns a transformation matrix T such that the observable companion form is Ao=TAT-1, Bo=TB, Co=CT-1.

    Input Arguments

    collapse all

    Dynamic system, specified as a SISO, or MIMO dynamic system model. Dynamic systems that you can use include:

    • Continuous-time or discrete-time numeric LTI models, such as tf, zpk, ss, or pid models.

    • Generalized or uncertain LTI models such as genss or uss (Robust Control Toolbox) models. (Using uncertain models requires Robust Control Toolbox™ software.)

    • Identified LTI models, such as idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox), and idgrey (System Identification Toolbox) models. (Using identified models requires System Identification Toolbox™ software.)

    You cannot use frequency-response data models such as frd models.

    Companion realization type, specified as "c" (controllable companion form) or "o" (observable companion form).

    For a system with characteristic polynomial


    the function returns the companion forms as follows.

    • Controllable Companion Form

      In the controllable companion realization, the characteristic polynomial of the system appears explicitly in the rightmost column of the A matrix.

      Accom=[01000001000001000001α0α1α2α3  αn1],Bccom=[100].

    • Observable Companion Form

      In the observable companion realization, the characteristic polynomial of the system appears explicitly in the last row of the A matrix.


    For more information, see State-Space Realizations.

    Output Arguments

    collapse all

    Companion state-space form of the dynamic model, returned as an ss model object. csys is a state-space realization of sys in the companion form specified by type (controllable or observable).

    Transformation matrix, returned as an n-by-n matrix, where n is the number of states.

    • For explicit state-space models with matrices A, B, C, the function returns T such that

      • The controllable companion form is T-1AT, T-1B, CT.

      • The observable companion form is TAT-1, TB, CT-1.

    • For descriptor state-space models, the function always returns an empty value [].


    Computing companion realizations often involves ill-conditioned transformations and loss of accuracy. Use modalreal or balreal as numerically stable alternatives.

    Version History

    Introduced in R2023b