如何在 MATLAB 中找到两个凸包之间的最近点?

How to find closest points between two convex hull in MATLAB?

在人工神经网络 matlab 代码的一部分中,我想找到两个凸多边形的最近点。

我看到了

dsearchn(X,T,XI)

命令的描述 here,但它会找到两组点之间最近的点,并且多边形(如凸面)有无穷多个点。

那么你能提出任何建议吗way/idea?

注意:我使用的是 MATLAB 2014a。我有每个凸面顶点的坐标。

如果您对 dsearchn 提供的内容不满意,那么,如果我是您,我会执行以下两项操作之一:

  • 在顶点上找到最近的邻居(例如哪个顶点 多边形 A 是多边形 B 的给定顶点的 NN)。
  • 在多边形 A 内选取一个随机点(您可能想要计算 A 的凸包,但你可以跳过它,只考虑 你已经知道的顶点)。那个随机点就是查询。寻找 来自多边形 B.
  • 顶点的那个点的 NN

您可能想在 Software recommendation 秒后询问更多信息。


编辑:

另一种方法是这样的:

创建多边形 A 的代表性数据集。自己设置数据集的大小,并用位于多边形内部的点样本填充它。在多边形内均匀随机选择。

然后取多边形 B 的一个点(多边形 B 内的顶点或随机点),这就是查询点,您将在多边形 A 的代表性数据集中为其寻找最近邻点。

当然这只是一个近似值,但我现在想不出别的东西了。

请注意,您当然可以对多边形 B 执行相同的操作。

通过文件交换中的 This File,我找到了解决方案。

通过稍微修改代码,我绘制了一条我想要的垂直平分线。当然,这种方式比较费时间。