For and Break Stuck
Mostrar comentarios más antiguos
Hi everybody. I wrote a code but something is going wrong, I need at that point.
I need to stop the code at the gain of 0.5 and I need to take the values that I need as P and D. But The code does not do what I need. It always work around i = 65 and j = 65. What is the error ?
clear all; clc;
Kp = -10:0.31:10;
Kd = -10:0.31:10;
% n = [Kd Kp];
% d = [(1+Kd) (Kp+1)];
%
% [r,p,k] = residue(n,d);
A = zeros(length(Kp), length(Kd));
for i = 1:length(Kp)
for j = 1:length(Kd)
n = [Kd(j) Kp(i)];
d = [(1+Kd(j)) (Kp(i)+1)];
[r,p,k] = residue(n,d);
S = sum(r);
TF = tf(n,d);
[z, gain] = zero(TF);
if gain == 0.5
break;
end
% if S<0.6 && S>0.4
% A(i,j) = 1;
% else
% A(i,j) = 0;
% end
end
end
Respuestas (1)
James Tursa
el 20 de Mzo. de 2018
It is often better to use tolerances for floating point comparisons, unless you wrote the underlying code and you know that the result must be exactly 0.5. So this test
if gain == 0.5
should probably look something like this instead
if abs(gain - 0.5) < tol % for some appropriate value of tol
5 comentarios
What do you mean ? What should I change ?
Berkcan Oz
el 21 de Mzo. de 2018
Stephen23
el 21 de Mzo. de 2018
You could start with tol=1e-5;
Berkcan Oz
el 21 de Mzo. de 2018
Editada: Walter Roberson
el 21 de Mzo. de 2018
Categorías
Más información sobre Simulink en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!