我有兩個對象列表;我想對給定的列表2對象執行操作,只要它在當前列表1對象的邊界內。避免在距離比較中嵌套for循環
事情是這樣的:
for k=1:size(object_list1)
for l=1:size(object_list2)
if euclideanDstSqt(object_list1(k).centroid,object_list2(l).centroid) < toleranceRadius then
// do something ...
end
end
end
什麼是錯,是我將每一次檢查的距離,即使對於彼此很遠的物體。有算法更聰明的方法嗎?某種樹可能?
此算法可能會被轉換爲C++,因此我必須忘記所有面向矩陣的Matlab技巧。
k-d樹是一個非常有趣的算法,謝謝你的燒杯。我也將使用二次歐式距離(而不是取平方根)。 – CTZStef 2013-03-18 16:20:26
這應該可以正常工作。 – beaker 2013-03-19 15:53:56