www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Problem mit Kalman-Filter


Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier noch die App-Note

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Tester (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.