Calculating efficiently the euclidean distance

Hi guys I would like to calculate the euclidean distance without a for loop to speed up my running time.
I have a timetable A as input with m-rows and 4 columns:
1st column: X point 1
2nd column: Y point 1
3rd column: X point 2
4th column: Y point2
Now I loop over each row of the timetable and I use norm( A(i, 1:2) - A(i, 3:4)). Of course the output should be mx1.
Is there a more efficient way to compute this operation?

 Akzeptierte Antwort

Matt J
Matt J am 19 Jul. 2021
Bearbeitet: Matt J am 19 Jul. 2021
In recent Matlab, you can just do,
vecnorm(A(:, 1:2) - A(:, 3:4),2,2);
In less recent Matlab, you can do,
sqrt(sum( (A(:, 1:2) - A(:, 3:4)).^2,2))

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-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