What do the (high) values in a controllability matrix mean?

In a linear state space system, I used the function
Co = ctrb(A,B)
To check the controllability of the system. I get a full rank matrix and thus, the system is controllable.
However, the matrix Co has values that range from -8.0220e+05 until 1.0672e+06, which seems quite extreme, as my x values lie in the range of 0-100.
My question is then:
What do these high values in a controllability matrix mean, and should I worry about these values being this far from the range of x values?

9 Comments

DB
DB on 11 Aug 2022
Edited: DB on 11 Aug 2022
@Paul x is a vector of state variables in a general system $ \dot{x} = Ax + B$
It likely depends on the size of ‘A’ however the behaviour is certainly reproducable (although with only positive numbers here) —
N = 4;
A = randi([0 100], N)
A = 4×4
35 34 62 31 14 71 79 90 15 36 50 84 53 100 21 85
B = randi(10,N);
Co = ctrb(A,B)
Co = 4×16
8 5 3 9 1519 767 867 845 317514 153876 174639 162365 71836162 33474631 39134051 35978253 10 1 6 1 2422 1155 1381 1132 546282 255118 297142 272557 125373385 58158833 68392413 62494952 10 6 7 5 1736 915 947 925 398293 182919 214735 199805 91642064 42516222 50080679 45651097 9 6 4 6 2399 1001 1246 1192 563078 260451 309848 278730 127682225 59646862 69816582 63749000
format shortE
minC0 = min(Co(:))
minC0 =
1
maxC0 = max(Co(:))
maxC0 =
127682225
.
@Star Strider That is a nice insight, thanks. Indeed the higher order of A would result in the controllability matrix having high values on its far-right values. So would you say the controllability matrix does not give any information on the system, except for its controllability?
So would you say the controllability matrix does not give any information on the system, except for its controllability?
Yes. That’s all it’s designed to do.
I don't understand how one can compare the elements of Co to the "x values." Co is just a matrix a numbers. The x values will be whatever they are for a given input and initial condition. In fact, if the system is unstable the at leastt on x value will migrate off to infinity. So I'm still not clear on how to compare the entries of Co to the "x values."
Well someone pointed out that the controllability matrix has hugely varying values, and therefore it may invalidate my system. I wanted to check if that was correct, and it seems that isn't so! Thanks @Star Strider
My pleasure!
Check the rank of the controllabililty matrix with respect to the size (in one dimension) of ‘A’. If they¹re essentially equal, there are no problems. If the controllability matrix drops rank, the system is likely not controllable.
Not sure what that someone meant by "invalidate my system?" How can a system be invalidated?
Offhand, the only thing I can think of related to the actual values in Co is the difference between the theoretical rank and the computed rank. For example, consider a second order system with
format short e
A = [0 0;1e-20 0];
B = [1e20; 1];
C = [1 1];
D = 0;
sys = ss(A,B,C,D);
The controllability matrix is
Co = ctrb(sys)
Co = 2×2
1.0e+00 * 1.0000e+20 0 1.0000e+00 1.0000e+00
Clearly full rank and therefore controllable. But
rank(Co)
ans =
1
In this case, the numerical rank test (with the default tolerances) yields a wrong conclusion.
Maybe that was the concern?
Or maybe they were referring to a wide range in the entries of the state space matrices themselves? That actually can be a problem.

Sign in to comment.

Answers (0)

Categories

Asked:

DB
on 11 Aug 2022

Commented:

on 11 Aug 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!