直线拟合的最小二乘近似(标准形式)



我正在对某些数据集进行直线最佳拟合。我用的是直线的标准形式。假设我有一组点(x_1,y_1) (x_2,y_2),…(x_n推出)。假设直线的标准形式是x*cos() + y*sin() = r。

那么在我的例子中,我有以下一组方程:

x_1 cos() + y_1 sin() = r

x_2 cos() + y_2 sin() = r

x_n cos(θ) + y_n sin(θ) = r

我想用最小二乘法解出和r的方程&把方程写成Ax=b的形式。但是在这种情况下,我不能分离向量x中的未知数来解方程。任何建议吗?

你可以很容易地看到,方程比未知数多,所以通常没有办法找到一个确切的解。对于最小二乘解,你可以从最小二乘表达式开始,这里是两点到直线距离的平方和。如果你想要完整的理论,你最好问http://math.stackexchenge.com。但是,我将为您提供一个如何进行的配方:

计算x和y值的算术平均值:

x0 = Sum(x_k, k=1..n) / n
y0 = Sum(y_k, k=1..n) / n

然后平移坐标:

x -> x-x0
y -> y-y0

新坐标的算术平均值将为0,而最优直线经过(0,0),因此新的r现在将为0,只需要确定直线的方向。

然后计算相关矩阵

Sum(x*x)  Sum(x*y)
Sum(x*y)  Sum(y*y)

然后计算该矩阵的特征向量。它是一个2x2矩阵,所以你应该不会有任何问题。我们称这两个特征向量v1=(x1, y1) v2=(x2, y2)特征向量的特征值较小的点垂直于这条线,其他点平行于这条线。这意味着你可以把它们解释为x1=sin() y1=cos()

EDIT最后,您必须计算原始坐标的r为

r=x0*x1 + y0*y1

最新更新