2013-03-31 35 views
0

我有2個矩陣AB都是大小Rows X 2其中Rows = m , n分別爲A和B.這些m和n表示歐幾里得空間中的點。2D空間中的匹配點

我希望執行的任務是匹配來自A和B點的最大數量(假定A具有以下點比B的數目)中給出的條件,即距離小於一個閾值d和每對是獨特的。

我已經看到了這nearest point pairs但由於在每一個點就選擇留在B.最小這不會對我的工作的問題。然而,可能會發生第一對,我從A和B挑錯導致匹配對的數量更少。

我找的,因爲A和B都快速的解決方案包括各約1000點。再次,有些點將被留下,我知道這會以某種方式導致徹底的搜索。

我正在尋找一種解決方案,在matlab中有某種內置函數或使用可以幫助其matlab代碼可用的數據結構,如kd-trees。如上所述,我必須找到從B到A的唯一最近匹配點。

回答

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,另一方面。將得到的集將從組成整個組具有上述d距離矩陣A(或B)的元件的另一矩陣B的任何元件(或A)。

還可以推廣到多於2個維度或不同的距離度量。

+0

我有一個關於你寫的代碼無疑.... A的配對和B將是獨一無二的,即,一旦一個點會從B中在進一步點它一點兒也不重複選擇? – user2230369

+0

@ user2230369不,它不會給出唯一的匹配。這會給你兩組之間的全部匹配,重複點數。你沒有在OP中指定匹配的唯一性,儘管你在kd-trees上的引用意味着沿着這個方向。考慮修改帖子以包含該內容。 – gevang

+0

不好意思......修改了這個問題 – user2230369