2012-04-23 8 views
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にいるので、これを直接行う方法がありますか?

答えて

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 
1

オリChalesworthの答えは何をしたいん。 2点を加算または減算するmatlab関数unwrapもあり、2点間の相対角度を最小限に抑えます。欠点は、角度がラジアンであることが予想されることです。

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 
を与えます
関連する問題