多维插值

4
给定一个多维空间(在我的案例中是4D空间)的样本数据集,其中样本存在于4D立方体的所有角落,并且存在大量样本在该立方体内部但不是整齐的网格。每个样本都有一个输出值与其4D坐标相邻。该立方体具有坐标[0,0,0,0]..[1,1,1,1]。
给定一个新的坐标(4D),如何根据这些样本得出最佳插值值?例如,如何选择起始样本,如何进行插值。
作为第一次尝试,我猜测可以通过两个步骤来完成:
1. 找到最小的凸五面体(4D等价于3D四面体/2D三角形),围绕我们需要插值的坐标。 2. 在此四面体内进行插值。
特别是步骤1似乎相当复杂和缓慢。

一个四面体是三维的。你想要的四维形状是五胞胎:http://en.wikipedia.org/wiki/Pentachoron - TheBeardyMan
@TheBeardMan:问题已经进行了更正。感谢您的指引。 - Ritsaert Hornstra
1个回答

0

这是我会尝试的第一种方法。

步骤1

通过欧几里得距离找到该点的4个最近邻。这4个点的线性独立很重要,因为接下来它们将用于创建重心坐标系。这些4个点成为五维半正镶嵌体(也称为四维单纯形)的顶点。

如果最近邻检查太慢,请尝试将数据结构化为在四维空间中工作的空间查找树。

步骤2

现在我们需要将一个值与插值点X关联起来。首先,在这个新的重心坐标系中推导出X的表示。这个重心坐标由4个数字组成,共同描述了插值点与四维单纯形的每个顶点之间的相对距离。

Coordinate system conversion

将重心坐标规范化,使其组成部分之和为1。

Normalized Barycentric coordinate

这4个单纯形顶点都是数据点,并具有输出值。将这4个输出值组合成一个向量。

Vertex values

最后,通过计算归一化坐标与输出值向量的点积来进行插值。

Interpolated value

来源:这个想法实际上只是维基百科重心坐标系页面中这颗宝石的四维扩展。


第二步使用重心坐标进行插值。只要我们能够进入每个五面体的凸包内部,我们就不会有不连续性,在边界上我们将得到相同的插值。但是在第一步中使用欧几里得距离找到的4个点可能会产生最近的五面体,但不是包含该点的凸多面体。因此,当两个点位于p.A的凸包内时,一个使用来自p.A的坐标系,另一个使用来自p.B的坐标系,我们可能会得到不连续性。 - Ritsaert Hornstra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接