Forum: Digitale Signalverarbeitung / DSP / Machine Learning Problem mit Kalman-Filter


von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe gerade versucht ein Kalman Filter einer App-Note von TI in 
Matlab zu simulieren, nur leider kommt nicht das Gleiche raus wie in dem 
beschriebenen Beispiel. Ich vermute mal es liegt an F und H. Vielleicht 
kann mir ja jemand weiterhelfen.

Danke und Gruß,
Sebastian

von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

hier noch die App-Note

von Detlef _. (detlef_a)


Lesenswert?

>>Ich vermute mal es liegt an F und H.

F und H sind doch Diffentialquotienten approximiert durch 
Differenzenquotienten, muß dann nicht im Nenner auch was 
differenzmäßiges stehen, in Deiner Schreibweise etwa x_hat_old-x_hat ?

Cheers
Detlef

von Sebastian (Gast)


Lesenswert?

das dachte ich mir eigentlich auch, aber dann teile ich irgendwie immer 
durch 0 und erhalte NaN. Vielleicht stimmt auch der rekursive Ablauf 
nicht.

Gruß,
Sebastian

von Detlef _. (detlef_a)


Lesenswert?

Wen Du bei ner Fkt. y=f(x) die x nicht variierst kriegst Du auch keine 
Näherung für die Ableitung f' raus. Dann ist im Ablauf wirklich wohl 
noch was grundsätzlich schief.

Cheers
Detlef

von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Sehe ich das richtig, daß F eigentlich die Systemmatrix A ist? Jetzt 
variieren alle Werte bis auf omega. cos(theta) und sin(theta) nähert 
sich auch ganz gut an die Kurve an. Aber mir geht es ja eigentlich um 
omega... Mal schauen ob ich den Fehler noch find.

Gruß,
Sebastian

von Tester (Gast)


Lesenswert?

>>Sehe ich das richtig, daß F eigentlich die Systemmatrix A ist?

Naja, bei nichtlinearen Systemen gibts keine Systemmatrix A. F ist die 
Systemmatrix des linearisierten Systems an der Stelle [math] 
\hat{x}[\math] .

Cheers
Detlef

von Detlef _. (detlef_a)


Lesenswert?

Nochmal:

>>Sehe ich das richtig, daß F eigentlich die Systemmatrix A ist?

Naja, bei nichtlinearen Systemen gibts keine Systemmatrix A. F ist die
Systemmatrix des linearisierten Systems an der Stelle
[math]
\hat{x}
[\math] .

Cheers
Detlef

von Detlef _. (detlef_a)


Lesenswert?

Das letzte mal, versprochen:

>>Sehe ich das richtig, daß F eigentlich die Systemmatrix A ist?

Naja, bei nichtlinearen Systemen gibts keine Systemmatrix A. F ist die
Systemmatrix des linearisierten Systems an der Stelle
.

Cheers
Detlef

von Sebastian (Gast)


Lesenswert?

War etwas schwach formuliert von mir. Wegen der Linearisierung wird ja F 
auch bei jeder Abtastung neu berechnet (kalman2.m).

Wenn ich im prediction-Teil die Zeile:
x_hat(3) = sqrt(x_hat(1)^2 + x_hat(2)^2);
einfüge schaut es schon besser aus. Omega nähert sich dann "irgendeinem" 
Wert (sch....). Der Schätzfehler nähert sich aber nicht wirklich 0;

P.S.: Irgendwie werd ich aus den App-Notes von TI nie schlau!

Gruß,
Sebastian

von Detlef _. (detlef_a)


Lesenswert?

hm. Ich würds in drei Schritten so angehen:
- lineares System gleicher Ordnung erfinden. F und H kommen dann direkt 
aus der Systembeschreibung. Dann das Kalmanfilter daran zum Laufen 
bringen.

- jetzt statt der Matrizen aus der Systembeschreibung zur Bestimmung der 
F und H die Differenzenquotienten heranziehen. Auch damit muß das Filter 
gehen.

- dann erst diesen scharf geschliffenen Code auf das eigentliche 
nichtlineare Problem anwenden.

Dann kannst Du relativ sicher sein, keine Programmierungsflaws drin zu 
haben.

Cheers
Detlef

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.