Calculating efficiently the euclidean distance

3 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)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!