Compute controllability staircase form

`[Abar,Bbar,Cbar,T,k] = ctrbf(A,B,C)`

ctrbf(A,B,C,tol)

If the controllability matrix of
(*A*, *B*) has rank *r* ≤ *n*,
where *n* is the size of *A*, then
there exists a similarity transformation such that

$$\begin{array}{ccc}\overline{A}=TA{T}^{T},& \overline{B}=TB,& \overline{C}=C{T}^{T}\end{array}$$

where *T* is unitary, and the transformed system
has a *staircase* form, in which the uncontrollable
modes, if there are any, are in the upper left corner.

$$\begin{array}{ccc}\overline{A}=\left[\begin{array}{cc}{A}_{uc}& 0\\ {A}_{21}& {A}_{c}\end{array}\right],& \overline{B}=\left[\begin{array}{l}0\\ {B}_{c}\end{array}\right],& \overline{C}=\left[{C}_{nc}{C}_{c}\right]\end{array}$$

where (*A _{c}*,

`[Abar,Bbar,Cbar,T,k] = ctrbf(A,B,C)`

decomposes
the state-space system represented by `A`

, `B`

,
and `C`

into the controllability staircase form, `Abar`

, `Bbar`

,
and `Cbar`

, described above. `T`

is
the similarity transformation matrix and `k`

is a
vector of length *n*, where *n* is
the order of the system represented by `A`

. Each
entry of `k`

represents the number of controllable
states factored out during each step of the transformation matrix
calculation. The number of nonzero elements in `k`

indicates
how many iterations were necessary to calculate `T`

,
and `sum(k)`

is the number of states in *A _{c}*,
the controllable portion of

`Abar`

.`ctrbf(A,B,C,tol)`

uses the tolerance `tol`

when
calculating the controllable/uncontrollable subspaces. When the tolerance
is not specified, it defaults to `10*n*norm(A,1)*eps`

.

Compute the controllability staircase form for

A = 1 1 4 -2 B = 1 -1 1 -1 C = 1 0 0 1

and locate the uncontrollable mode.

[Abar,Bbar,Cbar,T,k]=ctrbf(A,B,C) Abar = -3.0000 0 -3.0000 2.0000 Bbar = 0.0000 0.0000 1.4142 -1.4142 Cbar = -0.7071 0.7071 0.7071 0.7071 T = -0.7071 0.7071 0.7071 0.7071 k = 1 0

The decomposed system `Abar`

shows an uncontrollable
mode located at -3 and a controllable mode located at 2.

`ctrbf`

implements the Staircase Algorithm
of [1].

[1] Rosenbrock, M.M., *State-Space
and Multivariable Theory*, John Wiley, 1970.