【发布时间】:2013-02-12 04:32:48
【问题描述】:
如何找到两组 3D 点的最近点(数量不同,set1 包括 400 个点,set2 包括 2000 个点),然后找到 set1 与问题第一部分结果之间的欧几里德距离?
【问题讨论】:
-
分享你的代码...提示使用
knnsearch和pdist2
标签: matlab nearest-neighbor euclidean-distance
如何找到两组 3D 点的最近点(数量不同,set1 包括 400 个点,set2 包括 2000 个点),然后找到 set1 与问题第一部分结果之间的欧几里德距离?
【问题讨论】:
knnsearch和pdist2
标签: matlab nearest-neighbor euclidean-distance
您可以使用pdist2 计算所有距离,然后选择最小距离。
allDist = squareform( pdist2( set1, set2 ) );
[minDist nni] = min( allDist, [], 2 );
现在minDist 保存set1 中每个点到其最近邻点 (set2(nni)) 的最小距离。
编辑:
对于低维点(本例中为 3),按照my other answer 中的建议,查看 k-NN 算法应该更有效。
【讨论】:
您是否考虑过使用k-Nearest Neighbors (kNN) 搜索?
【讨论】: