4D 数据插值

Interpolation on 4D data

我正在尝试对 4D 数据执行 interpolation/fit(最好是非线性的,但线性的也应该没问题)。我的数据具有以下形式:

[a,b,c] = func(input)

显然,func 是未知的,最终数据看起来像 (input, a, b, c):

0 -0.1253   0.0341  0.01060

35 -0.0985  0.0176  0.02060

50 -0.0315  -0.0533 0.1118

60 -0.0518  -0.0327 0.03020

80 0.2939   -0.0713 0.05670

100 0.3684  -0.0765 0.06740

我在例如input = [0, 35, 50, 60, 80, 100](0 是最小值,100 是最大值;我在最小值和最大值之间取了 6 个样本)然后我得到相应的 a、b 和 c 值(我知道 6样本点是一个糟糕的实验设计,所以我会在未来扩展它)。

  1. 我正在尝试猜测输入 = 19 时 a、b 和 c 的值?有什么指点吗?
  2. 如何估计这种情况下的拟合优度?

这不是4D插值,这是3倍1D插值。您只需对 interp1([0 35],[-0.1253 -0.0985],19) 进行插值,对 bc 进行插值。 (interp1(intput,a,19))

请注意,对于网格中最基本的一维插值 (不是您拥有的),通常需要 2 个数据点。对于最基本的 2D 插值,您需要 4 个数据点。对于3D插值,8最小,4D,16....(一般2^d)。

另请注意,一维插值使用 2 "dims"。因为你用一个引导插值,另一个插值。一般而言,对于 [v,a,b,c] 数据,您将使用 3D 插值。

综上所述,在这种情况下你做不到。你有分散的数据,而不是网格,因此问题变得相当复杂。

如果您可以生成更多的点(不一定是 16 个),您可以使用函数 griddatan 对分散的数据进行插值。请注意,您不能只说“给我 [a,b,c] for input=19,可能有无限数量的 a,b,c 具有该条件。无论如何,您总是需要给出 dim-1 样本点的数量,并得到最后一个插值。只是一个建议:这个函数在计算和内存方面非常昂贵。不要用于大数据点,因为它会使您的 PC 崩溃。

如果您想找到一组使 input=19 成为可能的参数,那么您将进入更复杂的领域。您想要最小化函数 f(x),其中 x=[a,b,c] for f(x)=input

用数学术语来说:

argmin_x |f(x)-input|^2= \vec{input}

这是一个更难的问题,可以说比编程问题更数学。也许您的数据的 ND bspline 拟合会很好 f