Calculating efficiently the euclidean distance

2 views (last 30 days)
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?

Accepted Answer

Matt J
Matt J on 19 Jul 2021
Edited: Matt J on 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))

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by