ctrb

Controllability matrix

Syntax

Co = ctrb(A,B)
Co = ctrb(sys)

Description

Co = ctrb(A,B) returns the controllability matrix:

Co=[BABA2BAn1B]

where A is an n-by-n matrix, B is an n-by-m matrix, and Co has n rows and nm columns.

Co = ctrb(sys) calculates the controllability matrix of the state-space LTI object sys. This syntax is equivalent to:

Co = ctrb(sys.A,sys.B);

The system is controllable if Co has full rank n.

Examples

collapse all

Define A and B matrices.

A = [1  1;
     4 -2];
B = [1 -1;
     1 -1];

Compute controllability matrix.

Co = ctrb(A,B);

Determine the number of uncontrollable states.

unco = length(A) - rank(Co)
unco = 1

The uncontrollable state indicates that Co does not have full rank 2. Therefore the system is not controllable.

Limitations

Estimating the rank of the controllability matrix is ill-conditioned; that is, it is very sensitive to roundoff errors and errors in the data. An indication of this can be seen from this simple example.

A=[1δ01],B=[1δ]

This pair is controllable if δ0 but if δ<eps, where eps is the relative machine precision. ctrb(A,B) returns

[BAB]=[11δδ]

which is not full rank. For cases like these, it is better to determine the controllability of a system using ctrbf.

See Also

|

Introduced before R2006a