Operate on Successive Values Without Loops

Say I have a vector of x values, and a vector of y values. I would like to write a function to calculate the distance between successive points. I know how to do this in a loop, like the snippet given below.
for i = 1:1:size(x) - 1
distance(i) = sqrt((x(i) - x(i + 1)) ^ 2 + (y(i) - y(i + 1)) ^ 2)
end
Is there a way to do this without the loop?

 Réponse acceptée

Kye Taylor
Kye Taylor le 1 Mai 2012
Totally... first arrange your vectors as column vectors, then try
distance = sum(sqrt((x(1:end-1)-x(2:end)).^2 + (y(1:end-1)-y(2:end)).^2),2);

2 commentaires

David
David le 1 Mai 2012
Great! Except for the sum(), this was exactly what I needed.
Kye Taylor
Kye Taylor le 1 Mai 2012
Haha, right... no sum :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Interactive Control and Callbacks dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by