Why does this code output all values as 1?
Mostrar comentarios más antiguos
Hi there, I'm trying to program a piecewise geometric function into matlab:

I have written the code as follows. If anybody can explain why the output (Sij) always equals 1 when I run this it would be helpful. The input "rrup" is just a bunch of random distance values ranging from 0 to 1000 (km).
decay0 = 1.0;
decay1 = 0.0;
decay2 = 2.22;
r0 = 50;
r1 = 50;
r2 = 150;
r = rrup;
for i = 1:length(r)
if r(i)<r0
Sij = (r0/r(i)).^decay0
elseif r1<=r(i)<=r2
Sij=(r1/r(i)).^decay1
elseif r(i)>r2
Sij =(r2/r(i)).^decay2
end
end
Respuesta aceptada
Más respuestas (1)
John D'Errico
el 6 de Jun. de 2019
A significant problem with your code is in your assumption that this line does what you rthink it does:
elseif r1<=r(i)<=r2
It is NOT equivalent to the line
elseif (r1<=r(i)) && (r(i)<=r2)
Yes. It is common mathematical shorthand for the two tests. But it is NOT what you think it is when used in MATLAB.
Categorías
Más información sobre Creating and Concatenating Matrices 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!