Interpolation von Messwerten < Interpol.+Approx. < Numerik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:14 Fr 21.03.2008 | Autor: | mrjack |
Hi!
Ich habe folgendes Problem: Es werden 2-dim. Bahnverläufe (abhängig von einer Zeit t) gemessen. Für jeden Zeitpunkt t wird sowohl Ort als auch Geschwindigkeit gemessen. Zur weiteren Weiterverarbeitung ist es allerdings notwendig für alle Zeiten interpolierte Werte zu bekommen.
Hier einmal zwei prototypische Kurven, welche auch miteinander verknüpft sein können zB; es könnten auch mal längere Geraden vorkommen...:
[Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich]
Es gibt auch Messungen, wo sehr wenige Messpunkte aufgenommen werden, die dann z.B. so aussehen:
[Dateianhang nicht öffentlich]
Mein bisheriger Plan ist folgender:
-Kategorisieren der Abschnitte der Kurve
-je nach Art, passende Methode auswählen
-für kurviges: Hermite-Polynomfit mit höherem Grad
-für gerades: kubische Splines
Was meint ihr dazu? Ist das sinnvoll? Dann habe ich außerdem noch ein paar technische Probleme:
Ich finde irgendwie keine konkreten Algorithmen für diese Methoden - insbesondere nicht für die Verwendung zum Interpolieren von 2D-Kurven. Könnt ihr mir da Hinweise geben? Auch wegen Libraries für C++, hab mir schon die GSL angeschaut, aber die schlecht dokumentiert... Schon einmal vielen Dank im Voraus!
Viele Grüße, MrJack
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=99663&start=0&lps=726178#v726178
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich] Anhang Nr. 2 (Typ: gif) [nicht öffentlich] Anhang Nr. 3 (Typ: gif) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:48 Fr 21.03.2008 | Autor: | ullim |
Hi,
ich würde auf jeden Fall Ausgleichskurven durch die Messwerte legen und keine Polynome, die durch jeden Punkt wirklich gehen. Diese Polynome erzeugen ja keine glatten Kurven, sondern stark variirende. Dadurch bekommt man nicht den richtigen Überblick über den Verlauf und es werden dadurch künstlich spektrale Anteile erzeugt, die nicht gewollt sind.
Bei den Beispielen die Du beigelegt hast, könnte man z.B. eine expotentielle Funktion an fitten.
[mm] f(x)=a*e^{bt}+c [/mm] und die Paramter a,b,c nach der Methode der kleinsten Quadrate berechnen.
mfg ullim
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:57 Fr 21.03.2008 | Autor: | mrjack |
Hi!
Naja, es ist für die spätere Auswertung relativ wichtig, dass die Werte (und die entsprechende Ableitung) an den exakt bekannten Stellen genau sind - und auch in der näheren Umgebung dieser. Der Grund ist der, dass es verschiedene Messungen der gleichen "Situation" gibt, und beide Messungen zwecks Zeitsynchronisation vergleichen werden sollen. Außerdem ist für die weitere Verarbeitung noch eine Trajektorie (idealerweise mit Informationen über Konfidenz, Std.abweichung, ...) wichtig, die mit Referenztrajektorien verglichen werden soll. Naja, aber vielleicht schätze ich das ganze auch noch falsch ein...
Kannst du mir denn evtl. eine Numerik-Library empfehlen? Z.B. für die Methode der kleinsten Quadrate...
Wie schauts denn eigentlich mit kubischen Hermite-Splines aus? Die dürften doch eigentlich nicht so stark schwanken....
Viele Grüße, mrjack
edit: Was ich noch glatt vergessen hab und mir grad einfiel (erschien mir so offensichtlich während des Schreibens): Ein a+c*exp(b*t)-Fit mag zwar gut auf die Kurve passen, aber man weiß halt nicht im Voraus, was für eine Kurve sich ergibt. Das ganze sind Fahrbahnverläufe von Autos. Es sei den, man findet ein ad-hoc-Verfahren, zum Entscheiden. Denn: Es ist auch denkbar, dass der Algorithmus regelmäßig abläuft und immer wieder (alle 100ms oder einmal pro Sekunde) neue Daten einfließen - wobei das noch fraglich ist, ob das wirklich so sein muss...
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 09:55 Sa 22.03.2008 | Autor: | ullim |
Hi,
wenn der Algorithmus regelmäßig ablaufen soll, als zeitlich getaktet, dann währe es natürlich besser einen rekursiven Ansatz zu wählen. Z.B. bietet sich da ein Kalmanfilter an. Hier muss Du ein Modell über deine Zustandsgrössen aufstellen und danach Messungen am Modell machen, die mit den vorhergesagten Werten verglichen werden und so zu neuen Vorhersagen führen.
Diesen Algorithmus kann man auch zeitlich rückwärts laufen lassen so dass man nicht nur extra- sondern auch interpolieren kann. Wesentlich ist bei dem Ansatz, dass man das System als ein stochastisches System betrachtet und sich Klarheit über das Fehlerverhalten von Modellvorhersage und Messfehler verschafft, da die Kovarianzen dieser Fehler wesentlich das Modellverhalten beeinflussen.
Als Library kann man sicherlich Matlab verwenden. Dort sind meiner Kenntniss nach schon Kalmanfilter vollständig implementiert. Diskrete und kontinuierliche.
Falls Du aber bei einer Batchverarbeitung bleiben möchtest, sind in Matlab natürlich auch alle gängigen Verfahren implementiert um einen Least Square Fit oder eine Polynominterpolation zu realisieren.
Bei der letzten Methode muss Du dir allerdings klar darüber sein, das Interpolationspolynome nur an den Stützstellen und vielleicht in der näheren Umgebung der Stützstelle eine gute Interpolation möglich machen. Es besteht durchaus die Möglichkeit, hängt von der Anzahl der gewählten Stellen ab durch die das Interpolationspolynom gehen soll, das zwischen zwei Stützstellen das Polynom stark schwankt. In dem Fall hast Du dort dann keine gute Interpolation.
Die Kalmanfilter Methode ist insofern auch besser, weil Du dich dort mit dem tasächlichen physikalischem Verhalten deiner Zustandsgrössen beschäftigen muss. das Interpolationspolynom stellt sicherlich kein adäquates Modell dar.
Kalmanfilter Literatur gibt es sehr viel. Falls Du den Weg gehen solltes, kann ich Dir auch ein paar Literatur Tips geben.
mfg ullim
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:22 Sa 22.03.2008 | Autor: | mrjack |
Hi!
Das mit dem Kalmanfilter ist echt ne gute Idee, also über ein paar Literaturhinweise wär ich auf jeden Fall dankbar! Hab grad schon ein paar Sachen, die ich über Google auf die Schnelle finden konnte überflogen...
Hmm...aber dann nochmal ganz konkret: Also ich habe verschiedene Modelle, z.B. Exponentialkurven, Geraden und der Kalmanfilter gibt dann immer eine Abschätzung, wie gut das jeweilige Modell passt? Oder gebe ich besser alle Messdaten von den verschiedenen Messgeräten an den Kalmanfilter und der sagt mir vorher, wie die "perfekte" Messung aussieht?
Naja, Matlab ist zu Testzwecken wahrscheinlich ganz gut. Aber letztendlich muss das ganze auf einer möglicherweise exotischen Plattform laufen, im Idealfall unter C++. Aber hab grad schonmal geguckt, es gibt mindestens 2 Libraries, die Kalmanfilter implementieren.
Viele Grüße, mrjack
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 08:49 So 23.03.2008 | Autor: | ullim |
Hi,
ich geb mal ein kurzes Beispiel für einen Kalmanfilter.
Der Kalmanfilter hat erstmal grundsätzlich zwei Phasen.
1. Vorhersage des Zustandes und des Schätzfehlers mittels der Modellannahmen
2. Verarbeiten des Messwertes und anpassen der Schätzung für den Zustand und den Schätzfehler
Der Filter verarbeitet die Messwerte alle genau in der Reihenfolge.
Das Modell für die Vorhersage ist eine Matrix die beschreibt, wie man den Zustand zum Zeitpunkt k auf den Zeitpunkt k+1 vorhersagt. Hier muss man sich erstmal entscheiden ob man ein diskretes oder ein kontinuierliches Kalmanfilter verwenden will. Kontinuierliche Filter werden durch Differentialgleichungen und diskrete durch Differenzengleichungen beschrieben. Ich nehme hier mal ein diskretes und das Modell sei wie folgt:
[mm] x_{k+1}=A*x_k [/mm] und als Beispiel sei hier [mm] x=\vektor{p \\ v} [/mm] mit
p = Position
v = Geschwindigkeit
Nehmen wir mal an, die Geschwindigkeit ist konstant, dann gilt für A
[mm] A=\pmat{ 1 & T \\ 0 & 1 } [/mm] wobei T die Zeit für einen Zeitschritt darstellt.
Nun muss noch die Messung [mm] y_k [/mm] modelliert werden. Wird nur die Position gemessen, dann gilt:
[mm] y_k=C*x_k [/mm] mit [mm] C=\pmat{ 1 & 0 } [/mm] wobei C die Messmatrix ist.
Man muss auch noch Annahmen treffen über die Modellgenauigkeit und den Messfehler.
Q = Kovarianz der Modellungenauigkeit
R = Kovarianz des Messfehlers
Nun kann der Kalmanfilter nach den folgenden Vorschriften gerechnet werden.
Vorhersage
---------------
Zustandsvorhersage: [mm] x_{k+1/k}=A*x_{k/k} [/mm] und
Schätzfehlervorhersage: [mm] P_{k+1/k}=A*P_{k/k}*A^t+Q
[/mm]
Messwertverarbeitung
-----------------------------
Messwert beim Zustand verarbeiten: [mm] x_{k+1/k+1}=x_{k+1/k}+K_{k+1}*(y_{k+1}-C*x_{k+1/k})
[/mm]
Schätzfehlermatrix updaten: [mm] P_{k+1/k+1}=P_{k+1/k}-K_{k+1}*C*P_{k+1/k}
[/mm]
Verstärkungsfaktor berechnen: [mm] K_{k+1}=P_{k+1/k}*C^t*(C*P_{k+1/k}*C^t+R)^{-1}
[/mm]
Übrigens
k+1/k bedeutet, man hat auf den Zeitpunkt k+1 extrapoliert aber Messwerte nur bis zum Zeitpunkt k verarbeitet
k+1/k+1 bedeutet man hat den Messwert bis zum Zeitpunkt k+1 auch schon verarbeitet
D.h. der Kalmanfilter schätzt entsprechend seiner Modellannahmen den Zustand auf Grund der gemachten Messungen pro Arbeitsschritt. Ist das Modell dem tatsächlichen Verhalten nicht optimal angepasst, sind die Schätzungen auch nicht so gut. Das sieht man dem Term Q in der Schätzfehlervorhersage.
Man kann aber einen zusätzlichen Filter mit einem anderen Modell einsetzten und diesen ebenfalls Schätzungen durchführen lassen. Danach hat man mehrere Möglichkeiten:
1. Man kann den besten Schätzter (kleinste Fehlerkovarianz) auswählen und mit dem den Zustand schätzen oder
2. Man nimmt die Ergebnisse beider Schätzer und verarbeitet sie zu einer gemeinsamen, gewichtet entsprechend der einzelnen Fehler.
Man kann das ganze dann auch noch auf nichtlineare Modelle erweitern und kommt so zum Extended Kalmanfilter.
Das Thema um den Kalmanfilter ist übrigens riesig. Deshalb hier ein paar Literatur Hinweise.
1. A. H. Jazwinski, Stochastic Processes and Filtering Theory (1970)
Gibt einen sehr guten Überblick über stochastische Prozesse. Finde ich sehr gut.
2. R. A. Singer, Estimating Optimal TRacking Filter Performance for Manned Maneuvering Targets, IEEE Transaction on Aerospace und Electronic Systems, Vol. AES-6, Nr. 4, S 473 - 483, Juli 1970
Ist so das grundlegende Papier das ich kenne, das sich mit bescleunigten Bewegungen auseinander setzt.
Dann kann man sicher noch Literatur über [mm] \alpha-\beta-Filter [/mm] empfehlen, das sind die stationären Lösungen von 2- bzw. 3-dimensionalen Kalmanfilter.
mfg ullim
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:06 So 23.03.2008 | Autor: | mrjack |
Alles klar... Also nochmal vielen Dank für deine Hilfe, hat mir sehr weitergeholfen!
Viele Grüße, mrjack
|
|
|
|