2013-01-22 144 views
1

我有一個由m屬性組成的n元素數組。 ID1 X1 Y1 ID2 X2 Y2 ... IDN XN YNMatlab從座標列表中查找鄰居

我有一個座標(x,y)和我想找到這對眼前的左元素的所有ID,向上,底部和(x,y),這意味着 (x-1,y),(x,y + 1),(x + 1,y),(x,y-1)。

我該如何快速做到這一點?

+0

你嘗試過這麼遠嗎?請張貼一些代碼,如果你能。此外,你假設你的數組是「週期性」?我換句話說,爲(x, (x,xn)? – RussH

+0

你想要做什麼?(存儲值,查找最大值,做一些計算等),有幾種方法可以處理元素中最近鄰元素一個有效的矩陣... – bla

回答

0

說,座標(除了所關注的一個)位於X(1×n)和Y(1×n)個。

1 - 計算至所有座標的歐幾里德距離:

D = sqrt((X - x).^2 + (Y - y).^2)); 

2 - 排序的距離向量d找到4個座標,其歐幾里得距離爲最小

[M idx] = sort(D); 

3-獲取的座標最近點數

X(idx(1:4)) 
Y(idx(1:4)) 

檢查是否有效...

0

@奧利弗: 我相信它不會工作,因爲你MAG得到周圍有趣的點圓的同季所有的鄰居。

在我看來,更好的解決方案應該是將每個有趣點周圍的區域劃分爲4個區域(它們在dX正值,dX負值,dY正值和dY負值(dX,dY對的4種組合)中有所不同。每個區域是需要找到最小歐幾里德差異。