How to speed up a euclidean distance calculation between one pixel and many others
2 views (last 30 days)
Show older comments
I am calculating the euclidean distance between a pixel (x,y) and many other pixels in a matrix. I identify the x and y coordinates of the pixels beforehand, and save their x and y values in two column vectors x2 and y2, respectively I currently use the following:
distance = (sqrt((x2-x).^2 + (y2-y).^2))
This works, but is very slow. How can I speed this up?
1 Comment
Guillaume
on 14 Nov 2018
This works, but is very slow.
How did you establish that it is slow?
>> coord = rand(1e6, 2);
>> tic; distance = sqrt((coord(:, 1) - coord(1, 1)).^2 + (coord(:, 2) - coord(1, 2)).^2); toc
Elapsed time is 0.029055 seconds.
As you can see it takes around 30 milliseconds on my computer to process a million coordinates.
Most likely, it's another part of your program that is slow, so show us your code.
distance = hypot(x2-x, y2-y);
Answers (1)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!