给定一组轨迹数据,使用线性回归找到理想点

计算科学 数字 回归 局部坐标
2021-12-14 06:17:26

我有一组从带有一些噪音的摆动运动中获得的 2D 点。我想确定绳索固定的至少有两种方法可以使用线性回归来解决这个问题。我不确定选择哪一个以及为什么第一种方法没有给我可接受的结果(指示的坐标在预期的区域之外)。x0y0

轨迹的数据点

方法 1) 从一个实验点到下一个实验点的每个位移都会给我们一条名为“s”的线。其垂线可通过下式获得:

mtransversal=1ms

现在我们获得了一组直线,其角度和线性系数已知:mibimix+bi=y

理想情况下,平衡点位于每条 i 线上:

x0m1+y0=b1x0m2+y0=b2...x0mi+y0=bi

使用 N 行的线性回归可以找到,同样也x0y0

x0 =N(mibi)(mbi)(mi)N(m²i)(mi)²

我的代码如下所示:

if((i+1) % 5 == 0){ //i+1 remember: i is initialized as zero
            cout << "Let's sum up all cartesian elements" << endl;
            m_sum += m;
            b_sum += b;
            m2_sum += m*m;
            mb_sum += m*b;
            N = i+1;
        }
        m_sum2 += m_sum*m_sum;
        x0 = (N*mb_sum     - b_sum*m_sum)  / (N*m2_sum - m_sum2);
        y0 = (m2_sum*b_sum - mb_sum*m_sum) / (N*m2_sum - m_sum2);

我实现了它,但它返回了我(-350,-140)。该点位于预期区域之外。

方法 2) 使用描述运动的数学模型(例如,抛物线)。并对一些我不习惯的矩阵进行线性回归。y=a(xx0)²+b(xx0)+c

谢谢!

1个回答

对于钟摆,以下等式成立: 其中是摆的长度,是绳子的角度,是摆的最低点。使用,因此 您可以使用至少将您的点与此函数相匹配,以找到的估计量,然后绳索的固定点是

sinφ=xx0landcosφ=l(yy0)l
lφ(x0,y0)cos2φ=1sin2φ
y=y0+ll2(xx0)2
x0y0l(x0,y0+l)

请注意,当您使用 R 中的函数lm()进行 LSQ 拟合时,您必须使用I(...)I = 大写“i”)掩盖公式中的正方形。或者,您可以使用R 中的minpack.lm(Levenberg-Marquardt 算法)或 Python 中的等效项来查找 LSQ-Minimum。