0

GPSトラックログがあり、ナビゲーションの見出しを登録しました(つまり、ログに記録されたすべてのポイントについて、見出しをトレースします)。私が観察した限りでは、この見出しは0から360の間で変化します。したがって、ログで次のことがわかります。

  1. 0.002
  2. 0.1
  3. 359.2
  4. 0.01

ここで、ポイント3と4について考えてみます。明らかに、車は360回転していません。別の方位軌道上を数度(0.81)移動するだけです。したがって、マージンはabs(359.2-0.01)またはabs(0.01-359.2)ではありません。変化を計算するためのより洗練された方法が明らかに必要です。abs(359.2-0.01)=359.19と次の360-359.19=0.81を計算する必要があると思います。これを方向転換を計算するための標準的な手口と見なすことができますか?私はMATLABを使用しているので、これを直接行う方法はありますか?

4

2 に答える 2

2

これはあなたが望むことをするかもしれません:

mod(a-b+180, 360) - 180

例:

>> f = @(a,b) mod(a-b+180, 360) - 180;
>> f(359.2, 0.01)
ans = -0.81000
>> f(0.01, 359.2)
ans =  0.81000
>> f(358.2, 359.2)
ans = -1
>> f(0.01, 1.01)
ans = -1
于 2012-04-23T08:34:18.207 に答える
1

Oli Chalesworthの答えは、あなたが望むことをします。2点間の相対角度を最小化するために2πを加算または減算するmatlab関数unwrapもあります。欠点は、角度がラジアンであると予想されることです。

original_angles=[.002 .1 359.2 .001];
smooth_angles=180/pi*unwrap(original_angles*pi/180)

与えますsmooth_angles=

    0.0020    0.1000   -0.8000    0.0010
于 2012-04-23T11:47:56.493 に答える