0

使用时,我注意到 .生成的CLLocationManager每个点似乎都有很大的误差。我按照它们的生成顺序使用这些点的数组来计算用户移动的总距离。CLLocationdidUpdateToLocation

由于这些读数不准确,我注意到在完全静止的设备上运行应用程序可能会导致大距离“移动”而没有发生任何实际移动。

这是我用来计算距离的代码

- (double) sendTotalDistance
{
    if (locations.count < 2) return 0;
    double howFar = 0.0;
    for (int j=0; j<locations.count-1; j++)
    {
        howFar += [[locations objectAtIndex:j] distanceFromLocation:[locations objectAtIndex:j+1]];
    }
    return howFar;
}

问题:补偿这些读数的随机误差的最佳方法是什么?

我正在考虑对这些点进行线性回归,但当然这会假设用户在一条线上移动。我一直在尝试集思广益,以某种方式将读数的准确性包括在计算中,但是我能想到的所有方式都做出了很多假设或引入了其他形式的错误。

更新:我现在正在尝试增加更新率并对一些值进行平均。问题是这假设误差是均匀分布的。

更新:我一直在记录程序报告的各个位置,我注意到speed=-1.0描述中的变量。这个变量的准确性如何?如果它足够准确,似乎可以忽略速度小于或接近 0 的测量。

4

0 回答 0