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

时间:2016-07-02 15:26:42

标签: matlab nearest-neighbor

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

我看到了

dsearchn(X,T,XI)

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

你能提出任何方式/想法吗?

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

2 个答案:

答案 0 :(得分:2)

如果您对dsearchn提供的内容不满意,那么,如果我是您,我会做以下两种情况之一:

  • 在顶点上找到最近的邻居(例如,哪个顶点) polygon A是多边形B)的给定顶点的NN。
  • 在多边形A中选择一个随机点(您可能想要计算 A的凸包,但您可以跳过它并仅考虑 你已经知道的顶点)。随机点是查询。找 从多边形B的顶点开始的那个点的NN。

您可以在Software recommendation中询问更多内容。

编辑:

另一种方法是:

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

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

当然这只是一个近似值,但我现在无法想到别的东西。

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

答案 1 :(得分:1)

在文件交换中使用This File,我找到了解决方案。

通过一些代码修改,我绘制了一个我想要的垂直平分线。当然,这种方式很耗时。

enter image description here