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
>>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
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
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
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
>>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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.