二维空间中的匹配点

时间:2013-03-31 23:25:01

标签: algorithm matlab distance nearest-neighbor

我有两个大小为A的{​​{1}}和B矩阵,其中Rows X 2分别为A和B.这些m和n表示欧几里德空间中的点。

  

我希望执行的任务是匹配A和B的最大点数(假设A的点数少于B),条件是距离小于阈值Rows = m , n并且每个对是独一无二的。

我已经看到了这个nearest point pairs但是这对我的问题不起作用,因为对于A中的每个点,它选择B中的最小值。但是,我从A和B中选择的第一对可能是错误导致匹配对的数量减少。

我正在寻找快速解决方案,因为A和B各占约1000个点。同样,一些观点将会留下,我知道这会以某种方式导致详尽的搜索。

我正在寻找一种解决方案,其中在matlab中存在某种内置函数或使用可帮助其matlab代码可用的数据结构,例如d。如上所述,我必须找到从B到A的唯一最近匹配点。

1 个答案:

答案 0 :(得分:0)

您可以使用pdist2来计算两对观察(不同大小)之间的成对距离。最终距离矩阵将是N x M矩阵,您可以探测高于所需阈值的所有值。

A = randn(1000, 2);
B = randn(500, 2);

D = pdist2(A, B, 'euclidean');  % euclidean distance

d = 0.5; % threshold
indexD = D > d;
pointsA = any(indexD, 2);
pointsB = any(indexD, 1);

这两个向量为AB中的点提供逻辑索引,这些点至少有一个匹配,由最小距离d定义,另一个。得到的集合将由来自矩阵A(或B)的整个元素集合组成,其中距离{em}的另一个矩阵B(或A)的任何元素的d以上。

您还可以推广到2个以上的维度或不同的距离指标。