2016-07-07 4 views
0

GPSドップラー速度でカルマンフィルターを使用したいと思います。私がウェブでいくつかのチュートリアルを読んでも、どうやってそれをするのか分かりません。エレクトロニクス - Matlab - GPSドップラー速度信号でカルマンフィルタをご利用ください。

GPS速度が入力されている場合のみ実行できるmatlabスクリプトはありますか?たぶん、私も正確にサンプル周波数を持っている必要がありますか?

このトピックに関するお手伝いをしてうれしいです。 ありがとうございます。

+0

データがどのように形成されているかについてのヒントを教えてください。あなたはスピードだけでなくポジションも受け取っていますか?次元数は? – Vahid

+0

お返事ありがとうございます。私は速度と位置(緯度、経度)を受け取る。私は2次元を持っています。 @Vahid – YLM

+0

GPSデータを入力するだけのスクリプトを探していますが、戻り値はフィルタリングされた経度、緯度ですか? – bushmills

答えて

1

ここにはvision.KalmanFilterクラスの最小限のMATLABコードがあります。あなたの測定値が行列data [latitude、latitude_speed、longitude、longitude_speed]の列ベクトルであると仮定します。ここでは一定速度モデルを仮定する。 ProcessNise,MeasurementNoiseと初期設定を自分で定義する必要があります。

data = randn(4,100); % load your data here 

delta = 1; % sampling frequency 
% state model asuming constant velocity 
stateModel = [1 delta 0 0 ; 
       0 1  0 0 ; 
       0 0  1 delta; 
       0 0  0 1 ]; 
% measurements are simply the state 
measurementModel = eye(4); 

kalman = vision.KalmanFilter(stateModel, ... 
          measurementModel, ... 
          'ProcessNoise',1, ... 
          'MeasurementNoise',1); 

%initialize 
kalman.State = [0; 0; 0; 0]; 
kalman.StateCovariance = eye(4); 

T = size(data,2); % length of measurements 
filtered = []; 
for t=1:T 
    measurement = data(:,t); 
    kalman.predict(); % prediction 
    kalman.correct(measurement); 
    filtered = [filtered, kalman.State]; 
end 
+0

ありがとう@Vahid。これはすばらしい!しかし、私は経度と緯度の速度がありません。私はスピードのための1つの値を持っています(私は方向を知らない)。たぶん私は同じコードを使用することができますが、stateModelは4 * 4ではなく3 * 3です。それが正しく動作すると思いますか? – YLM

+0

@YLRこの場合、私はここで書いたのと同じ 'stateModel'を、つまり経度と緯度の速さで使用することができます。しかし、あなたの 'measurementModel'はもはや線形ではなく、カルマンフィルタは適用されません。この場合、拡張カルマンフィルタまたはパーティクルフィルタを使用することができます。 – Vahid

+0

お時間をありがとうございます。 @Vahid – YLM

関連する問題