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)
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
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:

More Answers (0)

Categories

Find more on Matrix Computations in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!