Co = ctrb(A,B)
Co = ctrb(sys)
Co = ctrb(A,B) returns the controllability
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
syntax is equivalent to:
Co = ctrb(sys.A,sys.B);
The system is controllable if
Co has full
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.
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.
This pair is controllable if but
if , where eps is
the relative machine precision.
which is not full rank. For cases like these, it is better to
determine the controllability of a system using