嗨,我有一堆 XYZ 数据点。我想估计一个最适合这些点的表面,以便稍后我可以输入一个 XY 对并返回这个 XY 对位于表面上的 Z 值。
是否有现有的 Java 库可以为我估算表面?
如果没有,任何人都可以向我推荐一些可以描述计算方法的东西吗?
如果可能的话,我希望能够对这些点进行加权(有些点不太可靠,因此对成品表面的影响应该较小)。
嗨,我有一堆 XYZ 数据点。我想估计一个最适合这些点的表面,以便稍后我可以输入一个 XY 对并返回这个 XY 对位于表面上的 Z 值。
是否有现有的 Java 库可以为我估算表面?
如果没有,任何人都可以向我推荐一些可以描述计算方法的东西吗?
如果可能的话,我希望能够对这些点进行加权(有些点不太可靠,因此对成品表面的影响应该较小)。
这类问题最好用线性最小二乘法解决。但是我不会尝试阅读维基百科文章,它似乎是为数学家写的。
这个想法是将问题变成线性优化问题。在您的情况下,我会尝试拟合 2D 多项式。这是一个形式为:
z(x, y) = A + Bx + Cy + Dx^2 + Exy + Ey^2 + Fx^3 + Gx^2y + Hxy^2 + Iy^3 + ...
你明白了。对于给定的数据集,任务简化为找到最适合数据点的参数 A 到 I。这类问题很容易用线性最小二乘法解决。
查看此代码以将椭圆拟合到 3D 数据点。通过一些努力,您可以对其进行调整以适应上述形式的多项式。
祝你好运!