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

Matlab 在曲线上找到最接近给定点的点,matlab,distance,point,Matlab,Distance,Point,我有一条在2D中穿过网格的曲线。这是一个随着时间向前移动的过程。我在这条曲线上有一组点(前面)和网格上的节点。在每个时间步中,我都需要找到曲线(前面)上最靠近网格上节点的点。换句话说,对于网格中的每个节点,我想知道曲线上哪个点离它最近。是否有一个内置的MATLAB函数来搜索这个?(我正在使用MATLAB环境) 在图中,问题是哪个黑色圆圈最接近任何黄色正方形。是计算成对距离的有效函数: function D = sqDistance(X, Y) D = bsxfun(@plus,dot(X

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

在图中,问题是哪个黑色圆圈最接近任何黄色正方形。

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

function D = sqDistance(X, Y)
    D = bsxfun(@plus,dot(X,X,1)',dot(Y,Y,1))-2*(X'*Y);
end
假设
圆圈
是黑色圆圈的坐标,
正方形
是黄色正方形的坐标,如您所述,您可以执行以下操作:

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

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

closest_points = circles(idx(:,1),:)
最近的_点
的尺寸与
正方形
相同,并存储每个黄色正方形的最近圆坐标。

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

function D = sqDistance(X, Y)
    D = bsxfun(@plus,dot(X,X,1)',dot(Y,Y,1))-2*(X'*Y);
end
假设
圆圈
是黑色圆圈的坐标,
正方形
是黄色正方形的坐标,如您所述,您可以执行以下操作:

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

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

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

最近的_点
的尺寸与
正方形
相同,并为每个黄色正方形存储最近圆的坐标。

你能给出一些示例代码,让我们知道你的变量是什么样的吗?@Lisa,我基本上有黑色圆圈的坐标(nX2)矩阵和黄色正方形的坐标(mX2)矩阵。最后,我希望得到一个大小为(mX2)的矩阵,其中每个黄色正方形(m个)包含最近的黑色圆圈(1X2)的坐标。你能给出一些示例代码,让我们知道你的变量是什么样子吗?@Lisa,我基本上有黑色圆圈的坐标(nX2)矩阵和黄色正方形的坐标(mX2)矩阵。最后,我希望得到一个大小为(mX2)的矩阵,其中每个黄色正方形(m个)包含最近的黑色圆圈(1X2)的坐标。非常感谢,工作得非常好。我还在MATLAB中发现了这个内置函数**[k,d]=dsearchn(PInterface,X)**它给出了距离d和最近圆k的索引:),这要感谢大量的工作。我还在MATLAB中发现了这个内置函数**[k,d]=dsearchn(PInterface,X)**它给出了距离d和最近圆k的索引:)