我的目标是在Python中确定一组3D数据点和拟合抛物面之间的3D偏差(及其RMS)
从这里开始:Paraboloid (3D parabola) surface fitting python,我可以计算RMS。如果我理解正确,误差和RMS是沿Z轴计算的。是这样吗
我尝试(未成功)确定拟合曲面和数据点之间的3D偏差和RMS,但无法获得它们的值。 请问有人有什么建议来解决这个问题吗
import numpy as np
from scipy.optimize import curve_fit
# Initial guess parameters
p0 = [1.5,0.4,1.5,0.4,1]
# INPUT DATA
x = [0.4,0.165,0.165,0.585,0.585]
y = [.45, .22, .63, .22, .63]
z = np.array([1, .99, .98,.97,.96])
# FIT
def paraBolEqn(data,a,b,c,d,e):
x,y = data
return -(((x-b)/a)**2+((y-d)/c)**2)+e
data = np.vstack((x,y))
popt, _ = curve_fit(paraBolEqn,data,z,p0)
# Deviation and RMS along Z axis
modelPredictions = paraBolEqn(data, *popt)
absError = modelPredictions - z
RMSE = np.sqrt(np.mean(np.square(absError))) # Root Mean Squared Error along Z axis
print('RMSE (along Z axis):', RMSE)
# Deviation and RMS in 3D
# ??
下面是一个图形化Python曲面拟合工具,它使用您的数据和方程绘制了一个三维散点图、一个三维曲面图和一个等高线图。您应该能够使用鼠标单击和拖动,并在3空间中旋转3D绘图,以便进行目视检查。请注意,您有5个数据点和5个方程参数,因此您得到的实际上是一个完美的拟合-RMSE实际上为零,R平方为1.0,scipy代码在计算协方差矩阵时给出警告
相关问题 更多 >
编程相关推荐