以最小距离匹配两点
matching two points with minimum distance
我正在解决这个问题:
有一个3d二进制矩阵,我在matlab中用kmeans算法聚类;
之后我得到一个值C,它包含数组中这些簇的质心坐标,例如:
C= 30.0000 15.0000 48.5000
100.2676 57.7382 80.7489
57.5000 85.0000 35.0000
27.5000 50.0000 69.5000
(4 个质心:第一个坐标为 (30,15,48,5
))
其中行代表每个质心的 x,y
和 z
坐标。
当我聚类另一个矩阵时,我得到第二个值,它也包含第二个质心的坐标。
现在我必须匹配来自具有最小距离的第一和第二聚类的质心,并创建一个输出,我可以在其中看到哪些质心属于一起。
我已经用 pdist(X)
试过了,我得到了成对的坐标距离,但我无法将它们匹配在一起..
如何解决这个问题?
你应该使用 pdist2
instead of pdist
.
pdist2
计算两组观察值之间的成对距离,而 pdist
计算单个矩阵中所有观察值之间的成对距离。
pdist2
的文档指定了输出距离矩阵的正确语法和含义:
D = pdist2(X,Y)
returns a matrix D containing the Euclidean distances
between each pair of observations in the mx-by-n data matrix X and
my-by-n data matrix Y. Rows of X and Y correspond to observations,
columns correspond to variables. D is an mx-by-my matrix, with the
(i,j) entry equal to distance between observation i in X and
observation j in Y.
因此,您应该按如下方式使用它:
D = pdist2(C1, C2);
注 1: 如果您找到了一个功能几乎可以满足您的需求(即 pdist
),那么查看 See Also
部分并检查其中一项是否有帮助。
你应该更准确地定义什么是"matching":应该是一对一还是一对多?
如果是一对多(C1 的多个质心可以匹配到 C2 的同一个质心),那么使用最近邻可以提供帮助,see knnsearch
。
如果它是 1 对 1,那么你必须使用一些贪心算法首先映射最近的质心(循环 pdist2
的结果)。
至于比赛的绘制,这实际上取决于数据的性质。
但是一种方便的方法是进行 PCA 从 3D 到 2D,然后简单地绘制质心之间的线。
我正在解决这个问题:
有一个3d二进制矩阵,我在matlab中用kmeans算法聚类;
之后我得到一个值C,它包含数组中这些簇的质心坐标,例如:
C= 30.0000 15.0000 48.5000
100.2676 57.7382 80.7489
57.5000 85.0000 35.0000
27.5000 50.0000 69.5000
(4 个质心:第一个坐标为 (30,15,48,5
))
其中行代表每个质心的 x,y
和 z
坐标。
当我聚类另一个矩阵时,我得到第二个值,它也包含第二个质心的坐标。 现在我必须匹配来自具有最小距离的第一和第二聚类的质心,并创建一个输出,我可以在其中看到哪些质心属于一起。
我已经用 pdist(X)
试过了,我得到了成对的坐标距离,但我无法将它们匹配在一起..
如何解决这个问题?
你应该使用 pdist2
instead of pdist
.
pdist2
计算两组观察值之间的成对距离,而 pdist
计算单个矩阵中所有观察值之间的成对距离。
pdist2
的文档指定了输出距离矩阵的正确语法和含义:
D = pdist2(X,Y)
returns a matrix D containing the Euclidean distances between each pair of observations in the mx-by-n data matrix X and my-by-n data matrix Y. Rows of X and Y correspond to observations, columns correspond to variables. D is an mx-by-my matrix, with the (i,j) entry equal to distance between observation i in X and observation j in Y.
因此,您应该按如下方式使用它:
D = pdist2(C1, C2);
注 1: 如果您找到了一个功能几乎可以满足您的需求(即 pdist
),那么查看 See Also
部分并检查其中一项是否有帮助。
你应该更准确地定义什么是"matching":应该是一对一还是一对多?
如果是一对多(C1 的多个质心可以匹配到 C2 的同一个质心),那么使用最近邻可以提供帮助,see knnsearch
。
如果它是 1 对 1,那么你必须使用一些贪心算法首先映射最近的质心(循环 pdist2
的结果)。
至于比赛的绘制,这实际上取决于数据的性质。 但是一种方便的方法是进行 PCA 从 3D 到 2D,然后简单地绘制质心之间的线。