Python 将原始值与已计算最小二乘的值进行比较
我目前已经在Python 将原始值与已计算最小二乘的值进行比较,python,python-3.x,numpy,scipy,Python,Python 3.x,Numpy,Scipy,我目前已经在点中创建了一个3x3点网格,这些点在读数中有一个z值,这些读数基于阵列中的位置进行关联 在我计算了最小二乘法之后,我想比较由最小二乘法计算的最佳拟合平面的z值与原始读数之间的差值,但仅在相同的位置。我有什么办法可以做到这一点吗 import numpy as np # import scipy.linalg from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt READINGS = [10.6
点中创建了一个3x3点网格,这些点在读数中有一个z值,这些读数基于阵列中的位置进行关联
在我计算了最小二乘法之后,我想比较由最小二乘法计算的最佳拟合平面的z值与原始读数之间的差值,但仅在相同的位置。我有什么办法可以做到这一点吗
import numpy as np
# import scipy.linalg
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
READINGS = [10.668, 10.398, 9.829, 10.114, 10.608, 10.793, 11.127, 11.034, 10.691]
z = READINGS
x = [None] * 9
y = [None] * 9
POINTS = [[-19, 208], [121, 208], [261, 208],
[261, 148], [121, 148], [-19, 148],
[-19, 58], [121, 58], [261, 58]]
for i in range(0, 9):
x[i] = POINTS[i][0]
y[i] = POINTS[i][1]
data = np.c_[x, y, z]
mn = np.min(data, axis=0)
mx = np.max(data, axis=0)
X, Y = np.meshgrid(np.linspace(mn[0], mx[0], 20), np.linspace(mn[1], mx[1], 20))
XX = X.flatten()
YY = Y.flatten()
# best-fit linear plane (1st-order)
A = np.c_[data[:, 0], data[:, 1], np.ones(data.shape[0])]
C, _, _, _ = np.linalg.lstsq(A, data[:, 2], rcond=None) # coefficients
# evaluate it on grid
Z = C[0] * X + C[1] * Y + C[2]
如果我理解你的意思:diff=A.dot(C)-data[:,2]
。其中A.dot(C)
表示估计的Z值,使用简单的矩阵乘法。@obchardon-Perfect!非常感谢。注意到Z=C[0]*np.array(x)+C[1]*np.array(y)+C[2]
将产生相同的结果,但由于我们试图求解一个A*x=b
线性方程组,因此最好使用A.dot(x)
来计算b。