Operate on Successive Values Without Loops

10 Ansichten (letzte 30 Tage)
David
David am 1 Mai 2012
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?

Akzeptierte Antwort

Kye Taylor
Kye Taylor am 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 Kommentare
David
David am 1 Mai 2012
Great! Except for the sum(), this was exactly what I needed.
Kye Taylor
Kye Taylor am 1 Mai 2012
Haha, right... no sum :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Interactive Control and Callbacks finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by