Main Content

ctrbf

Compute controllability staircase form

Syntax

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

Description

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

A¯=TATT,B¯=TB,C¯=CTT

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.

A¯=[Auc0A21Ac],B¯=[0Bc],C¯=[CncCc]

where (Ac, Bc) is controllable, all eigenvalues of Auc are uncontrollable, and Cc(sIAc)1Bc=C(sIA)1B.

[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 Ac, 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.

Examples

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.

Algorithms

ctrbf implements the Staircase Algorithm of [1].

References

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

Version History

Introduced before R2006a

See Also

|