我有两个对象列表;我想对给定的列表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