【问题标题】:Least square approximation for straight line fit (normal form)直线拟合的最小二乘近似(正规形式)
【发布时间】:2014-05-24 22:05:58
【问题描述】:

我正在做最适合某些数据集的直线。我正在使用直线的正常形式。假设我有一组点 (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 中的未知数来求解方程。有什么建议吗?

【问题讨论】:

  • 为什么不执行至少适合 python 的 sqaures ?

标签: math linear-algebra least-squares


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2014-03-05
    • 1970-01-01
    • 2012-07-14
    • 2013-01-21
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多