Problem with ctrbf() and its answer
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi guys. I have this state-space system and I want to seprate the controllable and uncontrollable parts of this system hence I used ctrbf() my problem is the output doesn't define what is the Ac(Controllable part) and what is the Auc(Uncontrollable part) is..I have tried this code with the k but the problem is Ac and Bc controllablity matrix is not full rank this shows I didn't find Ac and Bc correctly.
%% Staircase controllability form by using ctrbf()
A=[-2 0 0;0 -2 0;0 0 4];
B=[0 0;0 1;1 0];
C = eye(size(A)); %Dummy C matrix :)
[A_bar, B_bar,C_bar,T,k] = ctrbf(A,B,C);
%Extract controllable and uncontrollable subspaces
nc = sum(k);
A_c = A_bar(1:nc, 1:nc); %Controllable part of A
B_c = B_bar(1:nc, :); %Controllable input
A_u = A_bar(nc+1:end, nc+1:end); %Uncontrollable part of A
disp("The controllable part of A is: ")
disp(A_c)
disp("The uncontrollable part of A is: ")
disp(A_u)
disp("The controllable B is: ")
disp(B_c)
Co_staircase = ctrb(A_c, B_c);
if rank(Co_staircase) == rank(A_c)
disp("The controllable sepration was correct")
else
disp("The controllable sepration is not correct")
end
Anyone can help me to correctly find A_c, A_u and B_c??
8 commentaires
naiva saeedia
le 8 Déc 2024
Modifié(e) : naiva saeedia
le 8 Déc 2024
Torsten
le 8 Déc 2024
My answer is based on the documentation of "cbrtf". If you think the answer from "cbrtf" is incorrect, you should contact MATLAB support. I have no background knowledge in control theory to answer this.
Réponses (1)
Voir également
Catégories
En savoir plus sur Matrix Computations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!