Discrepancy between using function 'feedback()' and calculating manually
Afficher commentaires plus anciens
Hello,
I am working with MIMO systems and have made a comparison between the results obtained using the Matlab function 'feedback()' and computing the closed loop transfer function 'by hand'. There are differences between them I don't understand.
The code below illustrates the issue. I define a forward path array of transfer functions G and close the loop with K in the feedback path.
To compute the feedback manually I calculate CL = G/(I+K*G).
If you run this code fragment you will see that 'cl1' and 'cl2' do not agree. I don't understand why not. Can anyone enlighten me please?
Thanks,
Chris
g11 = tf(1,[1 0]);
g12 = tf(2,[1 0]);
g21 = tf(3,[1 0]);
g22 = tf(4,[1 0]);
G = [g11 g12;g21 g22];
k = 2;
K = [k 0;0 0];
cl1 = feedback(G,K,-1)
I = eye(2);
cl2 = G / (I + K*G)
Réponse acceptée
Plus de réponses (2)
Arnaud Miege
le 6 Avr 2011
Use minreal on both and you'll get the same answer:
g11 = tf(1,[1 0]);
g12 = tf(2,[1 0]);
g21 = tf(3,[1 0]);
g22 = tf(4,[1 0]);
G = [g11 g12;g21 g22];
k = 2;
K = [k 0;0 0];
I = eye(2);
cl1 = minreal(feedback(G,K,-1));
cl2 = minreal(G / (I + K*G));
bode(cl1,cl2)
HTH,
Arnaud
1 commentaire
Christopher
le 7 Avr 2011
Walter Roberson
le 5 Avr 2011
0 votes
I don't have whichever toolbox you are using, but if you were to indicate the outputs possibly I might have some ideas.
1 commentaire
Christopher
le 5 Avr 2011
Catégories
En savoir plus sur Classical Control Design dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!