Distance Between a Set of Points
Show older comments
I have a list of X and Y values and I need to get the distance between each point. So basically, the distance between point 1 to the other 14 points, point 2 to the other 14 points, point 3 to the other 14 points, for example. How do I do this without manually plotting in every pair of coordinates???
Answers (3)
Joseph Cheng
on 18 Jun 2015
Edited: Joseph Cheng
on 18 Jun 2015
you can use the function nchoosek to generate the pairs:
xy= randi(10,15,2)
pairs = nchoosek(1:5,2)
p1 = xy(pairs(:,1),:);
p2 = xy(pairs(:,2),:);
distance = sqrt(sum((p1-p2).^2,2));
2 Comments
Suyapa Gonzalez
on 18 Jun 2015
Joseph Cheng
on 18 Jun 2015
it would be the xy points, since i do not have your data i created my own list of X and Y values.
Jacob Strang
on 17 Nov 2018
I believe that pdist does this automatically if you provide more than 2 points, as seen in the first example on the linked page:
% Compute the Euclidean distance between pairs of observations, and convert the distance vector to a matrix using squareform.
% Create a matrix with three observations and two variables.
rng('default') % For reproducibility
X = rand(3,2);
% Compute the Euclidean distance.
D = pdist(X)
% D = 1×3
% 0.2954 1.0670 0.9448
% The pairwise distances are arranged in the order (2,1), (3,1), (3,2). You can easily locate the distance between observations i and j by using squareform.
1 Comment
Walter Roberson
on 17 Nov 2018
You can use squareform() to convert the pdist() triangular matrix result to a symmetric square matrix.
Chad Greene
on 18 Jun 2015
0 votes
Categories
Find more on Interpolation 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!