How to measure the distance between 2 sets of points.

6 Ansichten (letzte 30 Tage)
I was wondering how I measure the distance between 2 sets of coordinates.
I have 2 matrices where each matrix (X and Y) have the same number of rows (m x 2). I calculated out the distance from every point in X to every point in Y using the pdist2 tool. This gave me a m x m matrix of distances.
I want the minimum distance between X and Y where each coordinate is in a 1-to-1 ratio between X and Y. I am not sure how to separate the distances out of the pdist2 tool to discrete sets.
Does anyone know how to do this or where I can find the answer?
  2 Kommentare
Matt J
Matt J am 4 Mär. 2013
Clarify what you mean by "is in a 1-to-1 ratio between X and Y".
Jim Lehane
Jim Lehane am 4 Mär. 2013
Bearbeitet: Jim Lehane am 4 Mär. 2013
Every point in X corresponds with 1 point in Y. So that there are no duplicates. (ie X1 to Y3; X2 to Y1; X3 to Y2...)

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 4 Mär. 2013
Bearbeitet: Matt J am 4 Mär. 2013
m=3;
Q=perms(1:m).';
P=repmat((1:m).',1,size(Q,2));
idx=sub2ind([m,m],P,Q);
result = min(sum(DistMatrix(idx)))
  5 Kommentare
Jim Lehane
Jim Lehane am 4 Mär. 2013
You make it seem so simple :-). Thanks again.
udara darshana panamulle arachchige
Bearbeitet: udara darshana panamulle arachchige am 10 Dez. 2018
I have a same qustion but data set size is bit larger A(15,3) and B(105,3)
using this method gives a error due to exceeding maximum array size.
Is there any other way to do this Matt J??
Q=perms(1:15).'; %% here I get the error
P=repmat((1:103).',1,size(Q,2));
idx=sub2ind([15,103],P,Q);
result = min(sum(DistMatrix(idx)));
ps: my qustion is same with Jim Lehane

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 4 Mär. 2013
Bearbeitet: Azzi Abdelmalek am 4 Mär. 2013
M1 & M2 are your two matrices
M1=rand(10,2);
M2=rand(10,2)
dist=sqrt((M2(:,1)-M1(:,1)).^2+(M2(:,2)-M1(:,2)).^2)
min_dist=min(dist)
  13 Kommentare
Jim Lehane
Jim Lehane am 4 Mär. 2013
For example, say I have 2 matrices X and Y with 3 coordinates each. The matrix below represents the pdist2 result of those with the distances.
Y1 Y2 Y3
X1 2 5 7
X2 4 1 6
X3 3 8 9
I want the minimum combined distance of each unique combination of distance:
X1,Y1 + X2,Y2 + X3,Y3 =
X1,Y1 + X2,Y3 + X3,Y2 =
X1,Y2 + X2,Y1 + X3,Y3 =
X1,Y2 + X2,Y3 + X3,Y1 =
X1,Y3 + X2,Y1 + X3,Y2 =
X1,Y3 + X2,Y3 + X3,Y1 =
In this instance there are a total of 6 possible combination of coordinates (3!).
Matt J
Matt J am 4 Mär. 2013
See my Answer.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by