(Not recommended) Canonical state-space realization
Convert State-Space Model to Companion Canonical Form
Suppose you have a state-space model 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
load('aircraftPitchSSModel.mat'); 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 = u1 x1 0.232 x2 0.0203 x3 0 C = x1 x2 x3 y1 0 0 1 D = u1 y1 0 Continuous-time state-space model.
Convert the resultant state-space model
sys to controllable
csys = canon(sys,'companion')
csys = A = x1 x2 x3 x1 0 0 1.914e-15 x2 1 0 -0.9215 x3 0 1 -0.739 B = u1 x1 1 x2 0 x3 0 C = x1 x2 x3 y1 0 1.151 -0.6732 D = u1 y1 0 Continuous-time state-space model.
csys is the controllable companion form of
Convert State-Space Model to Modal Form
Suppose you have a state-space model of an inverted pendulum on a
cart where the outputs are the cart displacement and the pendulum angle . The control input
u is the horizontal force on the
First, load the state-space model
sys to the workspace.
sys to modal form and extract the block sizes.
[csys,T] = canon(sys,'modal')
msys = A = x1 x2 x3 x4 x1 0 0 0 0 x2 0 -0.05 0 0 x3 0 0 -5.503 0 x4 0 0 0 5.453 B = u1 x1 1.875 x2 6.298 x3 12.8 x4 12.05 C = x1 x2 x3 x4 y1 16 -4.763 -0.003696 0.003652 y2 0 0.003969 -0.03663 0.03685 D = u1 y1 0 y2 0 Continuous-time state-space model.
T = 4×4 0.0625 1.2500 -0.0000 -0.1250 0 4.1986 0.0210 -0.4199 0 0.2285 -13.5873 2.4693 0 -0.2251 13.6287 2.4995
csys is the modal canonical form of
T represents the transformation between the state vectors of
sys — Dynamic system
dynamic system model
Dynamic system, specified as a SISO, or MIMO dynamic system model. Dynamic systems that you can use include:
The resulting canonical state-space model assumes
current values of the tunable components for tunable control design blocks.
nominal model values for uncertain control design blocks.
You cannot use frequency-response data models such as
frd (Control System Toolbox) models.
type — Transformation type
'modal' (default) |
Transformation type, specified as either
type is unspecified, then
canon converts the specified dynamic system model to modal
canonical form by default.
The companion canonical form is the same as the observable canonical form. For information on controllable and observable canonical forms, see State-Space Realizations.
In modal form, A is a block-diagonal matrix. The block size is typically 1-by-1 for real eigenvalues and 2-by-2 for complex eigenvalues. However, if there are repeated eigenvalues or clusters of nearby eigenvalues, the block size can be larger.
For example, for a system with eigenvalues , the modal A matrix is of the form
In the companion realization, the characteristic polynomial of the system appears explicitly in the rightmost column of the A matrix. For a system with characteristic polynomial
the corresponding companion A matrix is
The companion transformation requires that the system is controllable from the first input. The transformation to companion form is based on the controllability matrix which is almost always numerically singular for mid-range orders. Hence, avoid using it when possible.
The companion realization returned by
canonis sometimes known as controllable canonical form. For more information on observable and controllable canonical forms, see State-Space Realizations.
condt — Upper bound on the condition number of the block-diagonalizing transformation
1e4 (default) | positive scalar
Upper bound on the condition number of the block-diagonalizing transformation,
specified as a positive scalar. This argument is available only when
type is set to
condt to reduce the size of the eigenvalue clusters in
the A matrix of
Inf diagonalizes matrix A.
T — Transformation matrix
You cannot use frequency-response data models to convert to canonical state-space form.
The companion form is poorly conditioned for most state-space computations, that is, the transformation to companion form is based on the controllability matrix which is almost always numerically singular for mid-range orders. Hence, avoid using it when possible.
canon command uses the
bdschur (Control System Toolbox) command to convert
sys into modal form and to
compute the transformation
sys is not a
canon first converts it to state space using
The reduction to companion form uses a state similarity transformation based on the controllability matrix .
 Kailath, T. Linear Systems, Prentice-Hall, 1980.
Version HistoryIntroduced before R2006a
R2023b: Not recommended
canon command is not recommended. Use the functionality
described in this table instead.
|Realization||Old Command||New Command|
R2022a: Default value of
condt input argument changed
The default value of
condt input argument is now
1e4. Previously, the default value was
condt reduces the size of the eigenvalue clusters in the
transformed model but also decreases the accuracy of the transformation. The new default
value balances conditioning and transformation accuracy. If you have code that relies on the
default value of
1e8, update your code to
explicitly set this input argument.
ctrb (Control System Toolbox) |
ctrbf (Control System Toolbox) |
ss2ss (Control System Toolbox) |
tf (Control System Toolbox) |
zpk (Control System Toolbox) |
ss (Control System Toolbox) |
pid (Control System Toolbox) |
genss (Control System Toolbox) |
uss (Robust Control Toolbox) |