the mysterious for loop

2 visualizaciones (últimos 30 días)
peter karlsson
peter karlsson el 23 de Nov. de 2019
Comentada: Rena Berman el 12 de Dic. de 2019
okey, I am going to create a program that will find a specifit value in a graf
the distance:km i a 1:1000 vector. the y axis
spped_kmph is the same. the x axis
in this program i can put in a single value like 5 and i will find how fast the car was at that point
THE PROBLEM: i Want to put in a vector so i can find the speed at more than 1 point at the time but when i put in a vector i get the message ( Operands to the || and && operators must be convertible to logical scalar values. )
Can someone figure out the for loop i need to put in?
So if i put in a vecor x = [4:10] it will go throuh all those values one by one and in the end sopt out 6 values for ''v''
function v=velocity_(x, route)
load(route);
index = findpos(distance_km', x);
%i need to put in a for loop here
x1 = distance_km(index-1);
x2 = distance_km(index);
y1 = speed_kmph(index-1);
y2 = speed_kmph(index);
v = y1 * (x-x2)./(x1-x2)+y2*(x-x1)./(x2-x1)
end
------
findpos is this function
------
function index = findpos(vector,val)
vMAX = length(vector);
x=1
if val < vector(1) || val > vector(vMAX)
index = -1;
elseif val == vector(1)
index = 2;
else
while val > vector (x)
x = x+1;
end
index = x;
end
  1 comentario
Rena Berman
Rena Berman el 12 de Dic. de 2019
(Answers Dev) Restored edit

Iniciar sesión para comentar.

Respuesta aceptada

Star Strider
Star Strider el 23 de Nov. de 2019
The doubled logical operators are for scalar logical comparisons. Use single logical operators for vector comparisons. The any and all functions are also useful in this context.
  4 comentarios
peter karlsson
peter karlsson el 24 de Nov. de 2019
thanks again. I see now that it doesnt matther what i put in
If i write index = findpos(distance_km, 20:23) it will just take the first number (20) I guess that it is because i have index = x; in the bottum of the second code. Can i change that to something els so my index can be a vector?
Star Strider
Star Strider el 24 de Nov. de 2019
As always, my pleasure.
I do not understand what you are doing.
I encourage you to experiment to see what works.

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 23 de Nov. de 2019
function index = findpos(vector, vals)
index = interp1(vector, 1:length(vector), vals, 'previous');
index(isnan(index)) = -1;
end

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by