一个三维平面方程被定义为:
a * x + b * y + c * z + d = 0
其中x,y,z是数据点的坐标,a,b,c和d定义平面参数。我有一堆x,y,z数据点,我知道它们大致形成了一个平面。现在我想把这些数据点拟合到一个平面上,并找到a,b,c,d参数。到目前为止,我有这样的职能:
import scipy.optimize as op
def _plane(ws,x,y,z):
cost = np.sum(ws[0]*x + ws[1]*y + ws[2]*z + ws[3])
print cost, np.sum(ws)
return cost
out
假设R^4中有3+共面点,但没有共线点。为了找到它们所在的二维平面(不是超平面),我使用了MatlabCentral的平面拟合算法:
function [n,V,p] = affine_fit(X)
% Computes the plane that fits best (least square of the normal distance
% to the plane) a set of sample points.
% INPUTS:
% X: a N by 3 matrix where each line is a sample point
%O