直线拟合的最小二乘近似(正规形)

时间:2014-05-24 22:05:58

标签: math linear-algebra least-squares

我正在做一个最适合某些数据集的直线。我正在使用正常形式的直线。假设我有一组点(x_1,y_1),(x_2,y_2),...,(x_n,y_n)。假设直线的正规形式是x * cos(theta)+ y * sin(theta)= r。

所以在我的情况下,我有以下方程组:

x_1 cos(theta)+ y_1 sin(theta)= r

x_2 cos(theta)+ y_2 sin(theta)= r

...

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

我想以最小二乘方式解决theta和r的等式。试图以Ax = b的形式写出方程。但在这种情况下,我无法将向量x中的未知数分开以求解方程。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

正如您可以很容易地看到,有更多的方程式而不是未知数,因此通常无法找到精确的解。对于最小二乘解,首先要写出最小二乘法,这里是点与线的平方距离之和。如果你想要完整的理论,最好在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(theta)和y1 = cos(theta)。

编辑最后,您必须将原始坐标的r计算为

r=x0*x1 + y0*y1