Why can the use of "ctrb" function not prove the controllability of a system that can be controlled with "hinfsyn"?
7 views (last 30 days)
Show older comments
MathWorks Support Team
on 10 May 2023
Edited: MathWorks Support Team
on 10 Nov 2025
I am working on control of a flexible, dynamic system. I used the "hinfsyn" function to find a controller, and it worked. However, when I checked the controllability of the system, I observed that the rank of the "ctrb" output is too low, which does not justify a controllable system. To find the rank of the controllability matrix, I use the code below:
rank(ctrb(a,b))
Where "a" and "b" are the respective matrices of my state-space system.
Why is this happening?
Is it expected behavior?
Accepted Answer
MathWorks Support Team
on 10 Nov 2025
Edited: MathWorks Support Team
on 10 Nov 2025
Yes, this is expected behavior. Based on finite-precision arithmetic, the "rank(ctrb(a,b))" method may provide inaccurate results for a considerable number of "(a,b)" values. Please notice that some algorithms may be mathematically correct, but they may not be numerically reliable. Therefore, it is crucial to use algorithms proven to be numerically reliable for accurate results. In this frame, the "rank(ctrb(a,b))" or the respective "crtbf" method to test the controllability for a significant number of "(a,b)" values are not recommended.
On the other hand, the "hinfsyn" function is more efficient and accurate, and if it finds a controller, the system is stabilizable. In case the system is not, you will encounter an "error" message.
An alternative way to test the controllability of a system without the use of the "hinfsyn" function is to apply a random state feedback K as shown below:
K = randn(nu,nx);
AA = a+b*K;
The system is controllable if the random state feedback can move the eigenvalues of "a". The "nu", and "nx" arrays affect the random state feedback and should be customized regarding the size of the "a", and "b" matrices.
To find additional information regarding the "randn" function, you can click on the documentation link below:
0 Comments
More Answers (0)
See Also
Categories
Find more on Matrix Computations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!