Co = ctrb(sys)
ctrb computes the controllability matrix for state-space systems. For an n-by-n matrix A and an n-by-m matrix B, ctrb(A,B) returns the controllability matrix
where 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 executing
Co = ctrb(sys.A,sys.B)
The system is controllable if Co has full rank n.
Check if the system with the following data
A = 1 1 4 -2 B = 1 -1 1 -1
is controllable. Type
Co=ctrb(A,B); % Number of uncontrollable states unco=length(A)-rank(Co)
These commands produce the following result.
unco = 1
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. ctrb(A,B) returns
which is not full rank. For cases like these, it is better to determine the controllability of a system using ctrbf.