我有一组包含2D功能点的CSV文件...换句话说,我有四个CSV文件,每个文件都是在不同y值下评估函数f(x,y)的结果。我需要在这些数据之间插值,以便我可以计算某个x和y的任意f。 CSV文件具有不同的长度和x值。有没有人知道Java中的库或算法用于此任务?线性插值是可以的,因为样条插值也是如此。
谢谢,
taktoa
答案 0 :(得分:1)
最简单的功能是找到最近的点并使用线性插值。例如选择三个最近点中的两个并插入它们。
或者您可以根据距离采取加权平均值。或者您可以选择一个接近点,然后在最近点的“另一侧”找到点以改善插值。
答案 1 :(得分:1)
好的,首先我假设" CSV" bit是无关紧要的,让我们假设你已经将它们读入内存并将它们合并在一起(它们是同一个函数的值,对吗?)。现在,您为不同的f(x,y)
对设置了一组(x,y)
值,并希望在这些值之间进行插值。好到目前为止?
如果您坚持线性插值,仍然需要考虑多少点,这取决于测量中的噪声水平。在最简单的情况下,人们只使用三个最近的点来识别它们所在的平面,并使用它来找到所讨论的点的值。除了矢量加法,减法,叉积和点积之外,此选项既不需要库也不需要算法。
更复杂的解决方案通常需要某种拟合,例如(加权)least squares。
答案 2 :(得分:0)
Lagrange interpolation简单而准确。