Discrepancy between using function 'feedback()' and calculating manually
Show older comments
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)
Accepted Answer
More Answers (2)
Arnaud Miege
on 6 Apr 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 Comment
Christopher
on 7 Apr 2011
Walter Roberson
on 5 Apr 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 Comment
Christopher
on 5 Apr 2011
Categories
Find more on Classical Control Design in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!