在 c++ 中对插值的坐标进行排序和搜索

Sorting and searching coordinates for interpolation in c++

本文关键字:排序 搜索 坐标 c++ 插值      更新时间:2023-10-16

我需要制作一个最近邻插值程序。

我的输入是一个点的 x、y 和 y 坐标,例如 x=.5、y=.3、z=.1

输出将在最近的可用点测量的速度。由于我有四个向量 x、y、z 和 V,程序将查找最近的节点,假设它是x[5239], y[5239], z[5239](对应于 x=.501 y=.299 z=.1),并输出V[5239].

我正在考虑设置几个参考点(我们称它们为 p 和 q)。我的想法是计算所有节点相对于p和q的距离。然后根据节点到 p 和 q 的距离对向量进行排序(为此,我需要保留原始索引的引用,以便能够找到V[i])。之后,我可以使用二叉搜索,使用给定点相对于 p 和 q 的距离来找到最近的节点。

我发现可能有用的另一件事是哈希表。如果我的向量中的元素数量为 ~96,000,并且我必须执行的插值数量也可能如此之多,那么哪一个会更有效。

我将如何关注索引(如 matlab 排序函数)。在这种情况下,您会推荐哪种排序算法?

谢谢

最近邻搜索是一个标准问题。您可能正在寻找一棵覆盖树。维基百科文章本身的细节很短,但它链接到原始论文和GitHub上的实现。