[英]How to determine which points (x,y) out of million data points lie inside the area described by a rectangle (x1, x2, y1, y2)?
[英]minimum distance between two set of 2D points (x1,y1) , (x2,y2)
我遇到了標題中描述的問題,我正在使用 MATLAB 2020。
我有 2 組 2D 點,我想找到與所有其他點的距離最小的兩個點(每個點來自不同的集合) min(distance(pi,pj))
我做了一些研究(谷歌)並在此 web 頁面中找到了這篇文章:“計算兩個有限平面集之間最小距離的最佳算法”:
我嘗試使用 MATLAB 和 Garbriel 圖的代碼(我在 google 中找到)來實現該算法:
http://matgeom.sourceforge.net/doc/api/matGeom/graphs/gabrielGraph.html
問題是當我運行代碼時,假設是算法與“蠻力算法”(兩個循環),蠻力總是更快......無論我使用了多少點,而且速度更快...這與邏輯(我的)和上面提到的文章相反。
當我檢查代碼行的執行時間時,我發現該行
dist = dist + (repmat(p1(:,i), [1 n2])-repmat(p2(:,i)', [n1 1])).^2;
在:
minDistancePoints(p1, varargin)
是“問題”和建議? 謝謝你
ps讓
set1=random(100,2)
set2=random(100,2)
我想找到 set1 中的 point1 和 set2 中的 point2 與所有其他點的距離最小。
使用隱式展開,我們可以一次計算所有可能的組合,然后在p1
中找到使距離之和最小的點:
p1 = [0 -1;
2 3;
8 8]
p2 = [1 1;
2 3;
3 5;
3 3]
[~,closest_p1] = min(sum(sum((permute(p1,[3,2,1])-p2).^2,2).^0.5))
我向p1
添加了一個維度: permute(p1,[3,2,1])
,所以現在我們可以計算這個新的第三維度中的所有組合。
最近的closest_p1
給出最小化p2
中每個點之間的歐幾里得距離之和的點的索引。 在此示例closest_p1 = 2
。
還注意到您使用的算法似乎也計算了所有可能的組合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.