我正在开展内插示例数据{(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
的表格,它对应于空间(e,f,g,h)
中的一个Y
。可能有多个选择,但我们只需要一个。 (对不起,如果有符号混淆的话)
解决这个问题的一种可能方法:由于我已经建立了Y->X
的平滑映射,我可以使用牛顿方法或任何其他方法来反向搜索点y
任何给定的x
。但它不够准确,而且耗时。因为我需要搜索表中的每个点,错误是模型错误与搜索错误的总和。
所以我想知道可以直接找到一个映射来插入样本数据,而不是在3中进行这种搜索。
答案 0 :(得分:2)
您正在寻找投影/映射
正如您所提到的,您的投影X(3D) -> Y(4D)
在您的案例中并非一对一,那么(1 X -> n Y)
或(n X -> 1 Y)
或(n X -> m Y)
是什么情况?
您想使用查找表
我假设您只想为给定的X
生成所有Y
非(1 to 1)
映射的问题是您只能使用查找表
X
和Y
空间中的点之间的距离相似,并且映射是连续的)你不能在通用映射点之间进行插值,所以问题是你想要的是什么样的映射/投影?
首先是1> 1投影/映射插值
如果您的X->Y
投影映射适合插值
然后3D->4D
使用三线插值。查找距离最近的8
点(每个点在其轴上以形成网格超立方体)并在所有4
维度中进行插值
如果您的X<-Y
投影映射适合插值
然后4D->3D
使用四线性插值。找到最接近的16
点(每个点在其轴上以形成网格超立方体)并在所有3
维度中进行插值。
现在1->n
或n->m
投影/映射
这完全取决于我不知道的投影/映射属性。尝试提供数据集的示例,添加一些图像将是最好的。
[edit1] 1 X&lt; - n Y
我仍然会使用四线性插值。您仍然需要搜索Y
表,但如果将其分组为4D
网格,那么它应该很容易。
在16
- 表中找到Y
最近的点到您的输入Y
点
这些点应该是所有轴的每个Y
方向上与+/-
最近的点。在3D中它看起来像这样:
Y
点请不要让我画出4D
有意义的例子:)(至少对于清醒的头脑)
<强>插值强>
找到相应的X
点。如果每个点有一个以上,那么选择更接近的一个......现在你应该有16 X
分和16+1 Y
分。然后从Y
点开始,您只需要计算输入Y
点的直线距离。这些距离用作线性插值的参数。将它们标准化为<0,1>
其中
每个Y
- 域维度都需要此标量距离。现在只需计算线性插值中的所有X
点,直到获得X
- 域中的相应红点。
使用三线插值(3D
),有4+2+1=7
个线性插值(如图像所示)。对于四线性插值(4D
),有8+4+2+1=15
线性插值。
线性插值
X = X0 + (X1-X0)*t
X
是插值点X0,X1
是'左','右'点t
是距离参数<0,1>