找到最接近给定点的曲线上的点

时间:2016-02-18 10:05:39

标签: matlab distance point

enter image description here

我在2D中有一条曲线穿过我的网格。随着时间的推移,它正在向前迈进。我在这条曲线(前面)和网格上的节点上有一组点。在每个时间步骤我需要找到曲线上的哪个点(前面)最接近我的网格上的节点。换句话说,对于我的网格中的每个节点,我想知道曲线上的哪个点最接近它。是否有内置的MATLAB函数来搜索它? (我正在使用MATLAB环境)

在图中,问题是哪一个是与任何黄色方块最接近的黑色圆圈。

1 个答案:

答案 0 :(得分:2)

Here是计算成对距离的有效函数:

function D = sqDistance(X, Y)
    D = bsxfun(@plus,dot(X,X,1)',dot(Y,Y,1))-2*(X'*Y);
end

假设circles是黑色圆圈的坐标,squares是您描述的黄色方块的坐标,您可以执行以下操作:

% example matrices
circles = rand(5,2);
squares = rand(8,2);

D = sqDistance(squares', circles');    
[~,idx] = sort(D, 2)

closest_points = circles(idx(:,1),:)

closest_pointssquares具有相同的尺寸,并存储每个黄色方块的最近圆的坐标。