嗨,我有一团XYZ数据点。我想估计一个最适合这些点的曲面,以便稍后我可以输入一个XY对并返回该XY对位于曲面上的Z值。
是否有现有的Java库可以为我估算表面?
如果没有,任何人都可以推荐我阅读哪些内容来描述计算方法吗?
如果可能的话,我希望能够对点进行加权(某些点不太可靠,因此对成品表面的影响应该更小)。
答案 0 :(得分:2)
这种问题最好用linear least squares解决。但是我不会尝试阅读维基百科文章,它似乎是为数学家写的。
我们的想法是将问题转变为线性优化问题。在你的情况下,我试图拟合二维多项式。这是一个形式的等式:
z(x, y) = A + Bx + Cy + Dx^2 + Exy + Ey^2 + Fx^3 + Gx^2y + Hxy^2 + Iy^3 + ...
你明白了。对于给定的数据集,任务被简化为找到最适合数据点的参数A到I.线性最小二乘法很容易解决这类问题。
Have a look at this code for fitting ellipses to 3D data points.通过一些努力,你可以采用上述形式来适应多项式。
祝你好运!