可能重复:
对一个(或两个)数组进行插值
我有一组包含 2D 函数点的 CSV 文件……换句话说,我有四个 CSV 文件,每个文件都是在不同 y 值下评估函数 f(x, y) 的结果。我需要在这些数据之间进行插值,以便可以为某个 x 和 y 计算任意 f。CSV 文件具有不同的长度和 x 值。有谁知道用于此任务的 Java 库或算法?线性插值可以,样条插值也可以。
谢谢,
塔克托
可能重复:
对一个(或两个)数组进行插值
我有一组包含 2D 函数点的 CSV 文件……换句话说,我有四个 CSV 文件,每个文件都是在不同 y 值下评估函数 f(x, y) 的结果。我需要在这些数据之间进行插值,以便可以为某个 x 和 y 计算任意 f。CSV 文件具有不同的长度和 x 值。有谁知道用于此任务的 Java 库或算法?线性插值可以,样条插值也可以。
谢谢,
塔克托
最简单的功能是找到最近的点并使用线性插值。例如,选择三个最近点中的两个并对其进行插值。
或者您可以根据距离进行加权平均。或者您可以选择一个接近点,然后在最近点的“另一侧”找到点以改进插值。
好的,首先我假设“CSV”位无关紧要,假设您已将它们读入内存并将它们合并在一起(它们是同一函数的值,对吧?)。现在,您有一组f(x,y)
不同对的值,(x,y)
并希望在它们之间进行插值。到目前为止还好吗?
如果您坚持线性插值,仍然存在要考虑多少点的问题,这取决于测量中的噪声水平。在最简单的情况下,我们将只使用三个最近的点来识别它们所在的平面,并使用它来找到相关点的值。除了向量加法、减法、叉积和点积之外,此选项既不需要库也不需要算法。
更复杂的解决方案通常需要某种拟合,例如(加权)最小二乘法。
拉格朗日插值将简单而准确。