2016-07-07 23 views
0

Ich möchte den Kalman-Filter in der GPS-Doppler-Geschwindigkeit verwenden. Selbst wenn ich einige Tutorials im Web lese, habe ich keine Ahnung, wie es geht.Elektronik - Matlab - Ich möchte uns ein Kalman-Filter in einem GPS-Doppler-Geschwindigkeitssignal.

Gibt es ein Matlab-Skript, das es nur durch Eingabe der GPS-Geschwindigkeit tun kann. Vielleicht muss ich auch die Sample-Frequenz präzisieren?

Ich bin froh, etwas Hilfe zu diesem Thema zu haben. Danke.

+0

können Sie einen Hinweis geben, wie Ihre Daten gebildet werden? Erhalten Sie nur die Geschwindigkeit oder auch die Position? Wie viele Dimensionen? – Vahid

+0

danke für die antwort. Ich erhalte die Geschwindigkeit und auch die Position (Breite, Länge). Ich habe 2 Dimensionen. @Vahid – YLM

+0

Suchen Sie nach einem Skript, bei dem Sie nur Ihre GPS-Daten eingeben müssen und die Rückgabewerte die gefilterte Länge, Breite und Breite sind? – bushmills

Antwort

1

Hier ist der minimale Matlab-Code mit vision.KalmanFilter Klasse. Angenommen, Ihre Messungen sind Spaltenvektoren der Matrix data [Breite, Breite, Länge, Länge]. hier wird das Modell der konstanten Geschwindigkeit angenommen. Sie sollten ProcessNise, MeasurementNoise und die Initialisierung selbst definieren.

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

Vielen Dank @Vahid. Das sieht gut aus !! Allerdings habe ich nicht die Längen- und Breitengradgeschwindigkeit. Ich habe nur einen Wert für die Geschwindigkeit (ich kenne die Richtung nicht). Vielleicht kann ich den gleichen Code verwenden, aber stateModel ist 3 * 3 statt 4 * 4. Glaubst du, es könnte richtig funktionieren? – YLM

+0

@YLR In diesem Fall können Sie immer noch das gleiche 'stateModel' verwenden, das ich hier geschrieben habe, d. H. Mit Längen- und Breitengradgeschwindigkeit. Aber Ihr 'measurementModel' wird nicht mehr linear sein und der Kalman Filter wird nicht angewendet. Sie können Extended Kalman Filter oder Partikelfilter in diesem Fall verwenden. – Vahid

+0

Ok, danke für deine Zeit. @ Vahid – YLM