2014-09-03 64 views
1

我正在开发一个插值样本数据的项目{(x_i,y_i)},其中x_i的输入域位于4D空间中,而输出y_i位于3D空间中。我需要为两个方向生成两个查找表。我设法生成了4D -> 3D表。但是3D -> 4D是一个棘手的问题。样本数据不是常规网格点,它不是一对一映射。有没有已知的方法来处理这种情况?我在网上做了一些搜索,但是我发现只有3D -> 3D映射,这不适合这种情况。谢谢!多维网格的逆插值


要回答Spektre的问题:

X(3D) -> Y(4D)是这样1X -> nY

我要生成一个表,对于任何给定X,我们可以找到Y值。样本数据不占用X的所有域。但没关系,我们只需要样本数据域内的点的准确性。例如,我们有样品数据,如{(x1,x2,x3) ->(y1,y2,y3,y4)}。有可能我们也有一个样本数据{(x1,x2,x3) -> (y1_1,y2_1,y3_1,y4_1)}。但是没关系。我们需要一个空间为(a,b,c)的桌子X,它对应于空间Y中的一个(e,f,g,h)。可能有不止一个选择,但我们只需要一个。 (很抱歉的符号混淆如果有的话)

一种可能的方式来处理这样的:既然我已经从Y->X建立了流畅的映射,我可以用牛顿法或任何其他方法来扭转搜索点y对于任何给定x。但它不够准确,耗时。因为我需要搜索表中的每个点,并且错误是模型错误与搜索错误的总和。

所以我想知道这是可能直接找到映射到3

回答

2
  1. ,而不是插在做这样的搜索的样本数据您正在寻找预测/映射

    正如你所说你有投影X(3D) -> Y(4D)这是不是一对一在你的情况下,那么这是什么情况是(1 X -> n Y)(n X -> 1 Y)(n X -> m Y)

  2. 要使用查找表

    我以为你只是想为所有X给出Y与非(1 to 1)映射的问题是,你可以用查找表,只有当它有

    • 所有有效点
    • 或映射在X和一些几何或数学对称性(对点之间的距离例如空间相似,并且映射是连续的)

    您不能在通用映射点之间进行插值,所以问题是您想要的是哪种映射/投影?

  3. 首先1-> 1突起/映射插值

    1. 如果X->Y投影映射是适用于内插

      然后3D->4D使用三线性插值。找到最接近8点(每个在其轴线以形成网格超立方体),并在所有4尺寸在它们之间内插

    2. 如果X<-Y投影映射是适用于内插

      然后4D->3D使用夸线性插值。找到最接近的16点(每个点在它的轴上形成网格超立方体),并在所有3维度之间插入它们。

  4. 现在来谈谈1->nn->m预测/映射

    这完全取决于我什么都不知道的投影/映射属性。尝试提供一个数据集的例子,并添加一些图像将是最好的。

[EDIT1] 1 X < - n个Y

我仍然会用夸线性插值。你仍然需要搜索你的Y表,但如果你将它分组为4D网格,那么它应该很容易。

  1. 找到Y - 表16最近点到你的输入Y

    这些点应该是最近点到你Y在所有轴系每个+/-方向。在3D它看起来像这样:

    tri-linear

    • 红点是你输入Y
    • 蓝点是找到最接近的点(网格),他们并不需要如此对称的图像。

    请不要我画4D例子意义:)(至少对于清醒的头脑)

  2. 插值

    找到相应X点。如果每个点有多个选择,则选择离他们更近的一个......现在你应该有16 X点和16+1 Y点。然后从Y点,你只需要计算从你的输入Y点沿线的距离。这些距离被用作线性插值的参数。他们正常化<0,1>其中

    • 0表示“左”,1分表示“右”一点
    • 0.5表示正中间

    您将需要在每个Y -domain尺寸的这个标量距离。现在只需计算沿线性插值的所有X点,直到获得X域中的相应红色点。

    With tri-linear interpolation(3D)有4+2+1=7线性插值(如图像)。对于四元线性插值(4D)有8+4+2+1=15线性插值。

  3. 线性插值

    X = X0 + (X1-X0)*t 
    
    • X被内插点
    • X0,X1是 '左', '右' 指向
    • t是距离参数<0,1>
+0

我将上一部分移到我的问题部分。要从X→Y得到表格,如果我们使用三线性插值,我们需要X空间中的一组常规样本数据。但在这种情况下,样本数据不在常规网格点上。因此,对于X空间中的任意数据点x,我们可以找到最接近的样本数据对{(xi,yi)},但是xi的位置不能保证在x附近。另一个困难是,即使xi彼此接近,yi也可能很远,这归因于nY-> 1X的性质。 – ohmygoddess 2014-09-05 21:25:56

+0

@ohmygoddess你不需要经常网格点!!!当你使用泛型点时,你只需要适当的点距离(不仅仅是单轴),接近点的发现稍微复杂一些,但其余部分与常规网格点相同。 – Spektre 2014-09-06 08:24:17