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 未満または 0 に近い速度の測定値を無視できるように思われます。

4

0 に答える 0