# Kalman-Filter

Das Kalman-Filter (auch Kalman-Bucy-Filter, Stratonovich-Kalman-Bucy-Filter oder Kalman-Bucy-Stratonovich-Filter) ist ein mathematisches Verfahren zur iterativen Schätzung von Parametern zur Beschreibung von Systemzuständen auf der Basis von fehlerbehafteten Beobachtungen. Benannt ist das Filter nach seinen Entdeckern Rudolf E. Kálmán, Richard S. Bucy und Ruslan L. Stratonovich, die das Verfahren unabhängig voneinander entdeckt bzw. wesentliche Beiträge dazu geliefert haben.
Das Kalman-Filter dient dazu, nicht direkt messbare Systemgrößen zu schätzen, während die Fehler der Messungen optimal reduziert werden. Bei dynamischen Größen kann dem Filter ein mathematisches Modell als Nebenbedingung hinzugefügt werden, um dynamische Beziehungen zwischen den Systemgrößen zu berücksichtigen. So können beispielsweise Bewegungsgleichungen helfen, veränderliche Positionen und Geschwindigkeiten gemeinsam präzise zu schätzen. Die Besonderheit des 1960 von Kálmán vorgestellten Filters bildet dabei seine spezielle mathematische Struktur, die den Einsatz in Echtzeitsystemen verschiedener technischer Bereiche ermöglicht. Dazu zählen u. a. die Auswertung von Radarsignalen oder GNSS-Daten zur Positionsbestimmung sich bewegender Objekte (Tracking), aber auch der Einsatz in allgegenwärtigen elektronischen Regelkreisen in Kommunikationssystemen wie etwa Radio oder Mobilfunk oder in der Steuerung von Elektrofahrrädern.

## Historisches

Obwohl zuvor nahezu identische Verfahren durch Thorvald N. Thiele und Peter Swerling veröffentlicht worden waren, wurde das Filter nach Rudolf E. Kálmán benannt. Auch existierten damals bereits allgemeinere nichtlineare Filter von Ruslan L. Stratonovich, die das Kalman-Filter und weitere lineare Filter als Spezialfälle enthalten. Ebenso erwähnenswert sind Vorarbeiten und gemeinsame Publikationen von Kálmán mit Richard S. Bucy, insbesondere für den Fall zeitkontinuierlicher dynamischer Systeme. Daher wird häufig die Bezeichnung Kalman-Bucy-Filter und gelegentlich auch Stratonovich-Kalman-Bucy-Filter in der Fachliteratur benutzt.
Der erste nennenswerte und erfolgreiche Einsatz des Filters erfolgte in Echtzeitnavigations- und Leitsystemen, die im Rahmen des Apollo-Programms der NASA unter Federführung von Stanley F. Schmidt entwickelt wurden.
Mittlerweile existiert eine große Bandbreite von Kalman-Filtern für die unterschiedlichsten Anwendungsgebiete. Neben der ursprünglichen Formulierung sind dies das Erweiterte Kalman-Filter, das Unscented Kalman-Filter, das Informationsfilter und eine Vielzahl von numerisch stabilen Varianten wie beispielsweise die Wurzel-Implementierung oder der Bierman-Thornton-UD-Algorithmus. Die meistgenutzte Variante jedoch ist die der Kontrolltheorie entstammende Phasenregelungsschleife, die in vielen Geräten zur Telekommunikation zum Einsatz kommt.

## Anwendungen

Das Kalman-Filter ist heute ein weit verbreiteter Algorithmus zur Zustandsschätzung linearer und nichtlinearer Systeme.
* Weite Verbreitung gefunden hat das Kalman-Filter in der Inertialnavigation beispielsweise von Flugzeugen: Während des Flugs werden Beschleunigungen und Drehraten des Flugzeugs von einer inertialen Messeinheit mit hohen Frequenzen gemessen, um eine Kurzzeit-Navigation zu ermöglichen. Weitere Sensoren, insbesondere satellitengestützte Positionsbestimmung (z. B. GPS), liefern Stützdaten. Diese verschiedenen Messungen müssen verknüpft („fusioniert“) werden, um eine möglichst optimale Schätzung der aktuellen Position und Orientierung zu gewährleisten.
* Zunehmend spielen Trackingverfahren und somit das Kalman-Filter als typischer Vertreter eines Trackingfilters eine Rolle im Automobilbereich. Sicherheits- oder Komfortanwendungen, die auf umfelderkennenden Systemen basieren, sind auf verlässliche Informationen (z. B. Position, Geschwindigkeit) bezüglich der Objekte in ihrem Umfeld angewiesen. Bei autonomen Landfahrzeugen werden Kalman-Filter zur Reduzierung des Rauschens von Lidar- und Radargeräten eingesetzt.
* Eine ebenfalls oft verwendete Art eines Kalman-Filters, das PLL-Filter, hat heute weite Verbreitung gefunden in Radios, Funkgeräten, Computern und in fast allen anderen Arten von Video- und Kommunikationsgeräten.
* In der Makroökonomik werden Kalman-Filter zur Schätzung von dynamisch-stochastischen Allgemeinen Gleichgewichtsmodellen (DSGE-Modelle) eingesetzt.
* In der Meteorologie setzt man sie zur Datenassimilation bei der Bestimmung des Ausgangszustandes bei der numerischen Wettervorhersage ein.

## Grundlagen
### Mathematische Grundidee

Die Besonderheit, die das Kalmanfilter von einfachen Filtern wie etwa dem gleitenden Mittelwert unterscheidet und deutlich leistungsfähiger macht, ist die Beschreibung des Schätzwertes durch mehrdimensionale Normalverteilungen. Diese repräsentieren nicht nur Wahrscheinlichkeitsverteilungen möglicher Fehler um jeden Schätzwert, sondern auch Korrelationen zwischen Schätzfehlern unterschiedlicher Variablen. Mit dieser Information werden in jedem Zeitschritt die bisherigen Schätzwerte mit den neuen Messungen auf optimale Weise kombiniert, so dass verbleibende Fehler des Filterzustands schnellstmöglich minimiert werden. Der momentane Filterzustand aus Schätzwerten, Fehlerschätzungen und Korrelationen bildet dabei eine Art Gedächtnis für die gesamte bisher gewonnene Information aus vergangenen Messwerten. Nach jeder neuen Messung verbessert das Kalmanfilter die bisherigen Schätzwerte und aktualisiert die zugehörigen Fehlerschätzungen und Korrelationen.
In dynamischen Systemen, in denen neben den eigentlichen Werten auch die differenzierten Werte (z. B. Geschwindigkeiten oder Beschleunigungen bei zeitabhängigen Positionen) geschätzt werden, schätzt das Kalmanfilter entsprechend auch Korrelationen zwischen den Fehlern dieser Größen und nutzt dieses Wissen in Kombination mit den bekannten dynamischen Zusammenhängen für eine optimale Fehlerunterdrückung.

### Theoretische Einordnung

Im Rahmen der mathematischen Schätztheorie spricht man beim Kalman-Filter auch von einem bayesschen Minimum-Varianz-Schätzer für lineare stochastische Systeme in Zustandsraumdarstellung. In der Ingenieurstechnik wird das Kalman-Filter auch als Optimalfilter für lineare stochastische Systeme bezeichnet. Siehe auch Bayessches Filter.
Im Gegensatz zu den klassischen FIR- und IIR-Filtern der Signal- und Zeitreihenanalyse basiert das Kalman-Filter auf einer Zustandsraummodellierung, bei der explizit zwischen der Dynamik des Systemzustands und dem Prozess seiner Messung unterschieden wird. In seinem Zeitverhalten ist es ein IIR-Filter mit einer Verzögerungsstufe.

### Zustandsraummodellierung

Als Zustand eines Systems wird häufig der kleinste, das System vollständig beschreibende Satz von Bestimmungsstücken verstanden. Dieser wird im Rahmen der Modellbildung in Form eines mehrdimensionalen Vektors X mit entsprechender Bewegungsgleichung, der sogenannten Zustandsgleichung, dargestellt. Diese Gleichung ist häufig eine Differenzengleichung, da in vielen Fällen die Zustände nur zu bestimmten, durch feste Zeitintervalle Δt voneinander getrennten Zeitpunkten t$_k$ = t$_0$ + k·Δt mit k als natürlicher Zahl von Interesse sind. Es hat sich eingebürgert, die diskreten Zeitpunkte t$_k$ einer einfachen Notation halber in Gleichungen verkürzt als Index k der betreffenden Größe zu notieren, t$_{k-1}$ als Index k-1 usw. Mit dieser Schreibweise und für den von Kálmán betrachteten Sonderfall einer lediglich linearen Abhängigkeit der Zustände untereinander vereinfacht sich die Zustandsgleichung zur linearen Differenzengleichung
    ${\textbf {X}}_{k}={\textbf {F}}_{k-1}{\textbf {X}}_{k-1}+{\textbf {B}}_{k-1}{\textbf {u}}_{k-1}+{\textbf {w}}_{k-1}$.
Die Matrix F$_{k-1}$ beschreibt die Übergänge zwischen zeitlich aufeinanderfolgenden Zuständen X$_{k-1}$ und X$_k$. Neben der durch die Übergangsmatrix F$_{k-1}$ ausgedrückten eigentlichen Dynamik modelliert die Zustandsgleichung zudem weitere äußere Einflüsse auf das System. Dabei wird zwischen deterministischen, also vollständig bestimmbaren Einflüssen, sowie solchen zufälliger Natur unterschieden. Der deterministische Anteil wird durch die wirkende Störung u$_{k-1}$ und deren Dynamik in Form einer Matrix B$_{k-1}$ dargestellt; die zufälligen, nicht erfassbaren Komponenten durch einen Rauschterm, der stochastischen Größe w$_{k-1}$. Das zeitlich unkorrelierte Rauschen w$_{k-1}$ folgt dabei einer mehrdimensionalen Normalverteilung mit Erwartungswertvektor 0 und Kovarianzmatrix Q$_{k-1}$, in üblicher Kurznotation:
    ${\textbf {w}}_{k-1}\sim {\mathcal {N}}({\textbf {0}},{\textbf {Q}}_{k-1})$.
Aufgrund der Unvorhersagbarkeit des Rauschterms enthält auch der Zustandsvektor einen gewissen Anteil an „Zufall“ und ist somit selbst eine stochastische Größe, also eine Zufallsvariable. Die Menge aller Zustandsvektoren bilden einen speziellen stochastischen Prozess, eine Markow-Kette bzw. ein Markow-Modell erster Ordnung, d. h. der Zustand zu einem Zeitpunkt k hängt lediglich vom unmittelbaren zeitlichen Vorgänger k-1 ab.
Der Prozess der Beobachtung der wahren Systemzustände X$_k$, X$_{k-1}$, … muss die Eigenschaften des Beobachters bzw. der Messapparatur widerspiegeln. Dies umfasst modellierbare Verzerrungen und das unvorhersagbare Messrauschen. Für den Fall des Kalman-Filters wird die Verzerrung als linear und das Rauschen als zeitlich unkorreliert und normalverteilt angenommen. Die entsprechende Modellierung des Messprozesses, die Beobachtungsgleichung, lautet
    ${\textbf {Z}}_{k}={\textbf {H}}_{k}{\textbf {X}}_{k}+{\textbf {v}}_{k}$
mit der Beobachtungsmatrix H$_k$ und dem weißen Messrauschen
    ${\textbf {v}}_{k}\sim {\mathcal {N}}({\textbf {0}},{\textbf {R}}_{k})$.
Dynamisches Rauschen w und Messrauschen v sollen zu allen Zeiten voneinander unabhängig sein.
Die Gesamtheit von Zustandsgleichung und Beobachtungsgleichung nennt man Zustandsraummodell. Wegen des „versteckten“ bzw. durch einen zweiten stochastischen Prozess, der Messung, überdeckten Markow-Modells spricht man beim Zustandsraummodell auch häufig von einem verborgenen Markowmodell (englisch Hidden Markov Model).

### Das Filterproblem

Eine in der Praxis ausgeführte Messung ergibt pro Zeitpunkt häufig lediglich eine einzelne Realisierung z$_k$ der normalverteilten Zufallsgröße Z$_k$. Nun stellt sich das inverse Problem, nämlich anhand der Informationen einer Messreihe mit den Werten z$_1$, z$_2$, z$_3$, z$_4$, … auf die entsprechenden X$_1$, X$_2$, X$_3$, X$_4$, … rückschließen zu können. Da die gesuchten Zustände aufgrund der Linearität des Modells und der gemachten Voraussetzungen für die Rauschterme w und v für alle Zeiten normalverteilt bleiben und eine Normalverteilung durch ihren Mittelwert und Kovarianz vollständig beschrieben wird, beschränkt sich das Filterproblem auf die Schätzung dieser beiden Bestimmungsstücke. Eine mögliche exakte Lösung dieses inversen Problems ist das zeitdiskrete Kalman-Filter, also ein Satz von Gleichungen, der Schätzungen für den Mittelwert ${\textbf {x}}_{k}$ und die Kovarianz ${\textbf {P}}_{k}$ des Zustands
    ${\textbf {X}}_{k}\sim {\mathcal {N}}({\textbf {x}}_{k},{\textbf {P}}_{k})$
anhand der aus der Messreihe z$_k$, z$_{k-1}$, z$_{k-2}$, …, z$_1$ extrahierten Informationen liefert.
Häufig stellt sich die Aufgabe, das Filterproblem auch für zeitkontinuierliche Systeme zu lösen. Dabei gehen die Differenzengleichungen des Zustandsraummodells durch eine mathematische Grenzwertbildung in Differentialgleichungen über. Die Gleichungen des zeitkontinuierlichen Kalman-Filters ergeben sich entsprechend aus dem zeitdiskreten Filter durch Anwendung derselben Grenzwertbildung. Aus diesem Grund und im Sinne einer verständlichen Darstellung soll im Folgenden lediglich auf die Gleichungen des zeitdiskreten Filters eingegangen werden.

## Gleichungen

Die Schätzung des Zustands sollte möglichst auf der Kenntnis aller früheren Beobachtungen beruhen. Dabei ist ein minimaler Schätzfehler zu fordern, der durch die bereits gemachten Beobachtungen nicht zu verbessern sein soll. Für lange Messreihen wird das entsprechende mathematische Minimierungsproblem schnell unhandlich, da für jede Schätzung die gesamte Messreihe ausgewertet werden muss. Die Idee, die dem Kalman-Filter zugrunde liegt, ist nun, die Schätzung zum Zeitpunkt t$_k$ als lineare Kombination der vorangegangenen Schätzung mit dem neuen Messwert z$_k$ zu formulieren. Dies ist möglich, da die Schätzung zum Zeitpunkt t$_{k-1}$ die Informationen der Messreihe z$_{k-1}$, z$_{k-2}$, …, z$_1$ enthält. Diese rekursive Formulierung des Schätzproblems erlaubt eine effiziente numerische Umsetzung.

### Rekursiver Algorithmus

In der algorithmischen Umsetzung wird der Systemzustand zunächst mit einer A-priori-Schätzung initialisiert und die erste Korrektur mit den Beobachtungen durchgeführt. Anschließend werden in jedem weiteren Zeitschritt k>0 die Prädiktion und Korrektur durchgeführt, die abwechselnd den Systemzustand zeitlich propagieren und ihn durch neue Beobachtungen korrigieren, nach dem Schema: (Init. ➝ Korr.)$_{k=0}$ ➝ (Präd. ➝ Korr.)$_{k=1}$ ➝ (Präd. ➝ Korr.)$_{k=2}$ ➝ …
$\qquad \quad \downarrow$
$\qquad \qquad \qquad \uparrow \downarrow$

### Variablen und Dimensionen

| ${\textbf {z}}_{k}^{(m)}$ | Neue Beobachtungen, die zum Zeitpunkt t$_k$ vorliegen. |
| ${\textbf {x}}_{k|k-1}^{(n)}$ | Systemzustand zur Zeit t$_k$, der vom Zustand des vorherigen Zeitpunkts t$_{k-1}$ abgeleitet wurde, vor Anwendung der neuen Beobachtungen ${\textbf {z}}_{k}$ (a-priori). |
| ${\textbf {P}}_{k|k-1}^{(n\times n)}$ | Kovarianzmatrix der Fehler von ${\textbf {x}}_{k|k-1}$, vor Anwendung der neuen Beobachtungen ${\textbf {z}}_{k}$ (a-priori). |
| ${\textbf {x}}_{k}^{(n)}$ | Systemzustand nach Anwendung der neuen Beobachtungen ${\textbf {z}}_{k}$ (a-posteriori). |
| ${\textbf {P}}_{k}^{(n\times n)}$ | Kovarianzmatrix der Fehler von ${\textbf {x}}_{k}$ nach Anwendung der neuen Beobachtungen ${\textbf {z}}_{k}$ (a-posteriori). |
| ${\textbf {H}}_{k}^{(m\times n)}$ | Beobachtungsmatrix, welche die n Werte des Systemzustands auf die m Beobachtungen abbildet, so dass ${\textbf {z}}_{k}={\textbf {H}}_{k}{\textbf {x}}_{k}+{\textrm {Rauschen}}$. |
| ${\textbf {F}}_{k-1}^{(n\times n)}$ | Übergangsmatrix, die den Systemzustand vom Zeitpunkt t$_{k-1}$ gemäß ${\textbf {x}}_{k|k-1}={\textbf {F}}_{k-1}{\textbf {x}}_{k-1}$ auf den Zeitpunkt t$_k$ propagiert, z. B. mithilfe von Bewegungsgleichungen. |
| ${\textbf {u}}_{k-1}^{(l)}$ | Deterministische Störung, wie z. B. die bekannten Stellungen der Steuerruder eines Flugzeugs. |
| ${\textbf {B}}_{k-1}^{(n\times l)}$ | Dynamik der deterministischen Störung und Projektion auf den Systemzustand. |
| ${\textbf {Q}}_{k-1}^{(n\times n)}$ | Prozessrauschen, beschreibt zusätzliche Unsicherheiten aufgrund von Modellierungsfehlern oder sich ändernden Bedingungen, meist als Diagonalmatrix. |
| ${\textbf {R}}_{k}^{(m\times m)}$ | Kovarianzmatrix des Messrauschens. Die Matrix kann auch nicht-diagonal sein, wenn korreliertes Rauschen vorliegt. Das Rauschen darf jedoch nicht zeitkorreliert sein, da sonst zu kleine Varianzen geschätzt werden, was zu ungenauen Vorhersagen oder gar zur numerischen Destabilisierung führen kann. In solchen Fällen sollte die Störgröße dem Systemzustand als zusätzlich zu schätzender Anteil hinzugefügt werden oder die Kovarianzen müssen um geeignete Terme erweitert werden. |
| ${\textbf {K}}_{k}^{(n\times m)}$ | Kalman-Gain-Matrix zur Projektion der Residuen auf die Korrektur des Systemzustandes. |
$n$ ist die Anzahl der Systemzustandswerte, $m$ die Anzahl der Messwerte und $l$ die der Störgrößen. Die Dimensionen sind nicht notwendigerweise konstant, sondern können in jedem Zeitschritt unterschiedlich sein: $n_{k}$, $m_{k}$ und $l_{k}$.

### Initialisierung

Der iterative Ansatz des Kalmanfilters verlangt eine a-prior-Schätzung als Startbedingung. Häufig verwendet man
    ${\textbf {X}}_{0}\sim {\mathcal {N}}({\textbf {0}},\sigma ^{2}\cdot {\textbf {I}})$
mit der Identitätsmatrix I und einer geeigneten Varianz $\sigma ^{2}$, wenn der Wertebereich der zu schätzenden Größe etwa im Bereich $0\pm \sigma ^{2}$ erwartet wird.

### Prädiktion

Beim ersten Schritt des Filtervorgangs wird die zeitlich vorangegangene Schätzung der Zustandsdynamik unterworfen, um eine Voraussage für den aktuellen Zeitpunkt zu erhalten. Für den Mittelwert ergibt sich
    ${\textbf {x}}_{k|k-1}={\textbf {F}}_{k-1}{\textbf {x}}_{k-1}+{\textbf {B}}_{k-1}{\textbf {u}}_{k-1}$
und für die Kovarianz
    ${\textbf {P}}_{k|k-1}={\textbf {F}}_{k-1}{\textbf {P}}_{k-1}{\textbf {F}}_{k-1}^{\text{T}}+{\textbf {Q}}_{k-1}$.
Die Indizierungsschreibweise k|k-1 drückt für den Zustand zum Zeitpunkt t$_k$ die Bedingtheit der Schätzung durch den vergangenen Zustand k-1 aus. Das hochgestellte T bezeichnet die transponierte Matrix.

#### Bewegungsgleichungen für die Prädiktion

Ein Kalman-Filter kann bekannte Bewegungsgleichungen einer zu schätzenden Größe berücksichtigen und z. B. eine zeitabhängige Position in einen Zusammenhang mit ihrer Geschwindigkeit und ihrer Beschleunigung bringen. Als Zustandsvektor wählt man in diesem Fall ${\textbf {x}}={\begin{bmatrix}x\\{\dot {x}}\\{\ddot {x}}\end{bmatrix}}.$ Damit soll eine Bewegung mit konstanter Beschleunigung geschätzt werden, die eine parabelförmige Bahn beschreibt. Die verschiedenen Zeitableitungen der Parabelfunktion ${\begin{array}{lcl}x&=&c_{0}+c_{1}t+c_{2}t^{2}\\{\dot {x}}&=&c_{1}+2c_{2}t\\{\ddot {x}}&=&2c_{2}\\{\overset {...}{x}}&=&0\end{array}}$ können in folgenden linearen Zusammenhang mit dem Zustandsvektor gebracht werden
${\begin{bmatrix}{\dot {x}}\\{\ddot {x}}\\{\overset {...}{x}}\end{bmatrix}}={\begin{bmatrix}0&1&0\\0&0&1\\0&0&0\end{bmatrix}}{\begin{bmatrix}x\\{\dot {x}}\\{\ddot {x}}\end{bmatrix}}\longrightarrow D={\begin{bmatrix}0&1&0\\0&0&1\\0&0&0\end{bmatrix}},$
so dass die linke Seite dessen Zeitableitung ergibt. Die Matrix $D$ mit Einsen in der ersten oberen Nebendiagonalen ist folglich der Differentialoperator für den Zustandsvektor und beschreibt die infinitesimale Änderung des Zustandes der drei dynamisch zusammenhängenden Größen. Der geänderte Zustand nach einer endlichen Zeit $\Delta t$ wird durch das Aufsummieren einer Anzahl von $N=\Delta t/\delta t$ kleinen und stückweise linearen Änderungen der Schrittweite $\delta t$ gewonnen. Den Grenzwert dieser Summe bei $N\rightarrow \infty$ und $\delta t\rightarrow 0$ beschreibt im Allgemeinen das Matrixexponential, das durch eine Reihenentwicklung $F(t)=e^{Dt}:=\mathbb {I} +Dt+{\frac {(Dt)^{2}}{2!}}+{\frac {(Dt)^{3}}{3!}}+\cdots +{\frac {(Dt)^{n}}{n!}}+\cdots$ definiert ist. Bei einem Zustandsvektor der Länge n+1 mit Ableitungen bis zur n-ten Ordnung sind in diesem Fall nur die ersten Terme dieser Reihe bis zum Exponent n von Null verschieden. Für den Zeitpropagationsschritt der Schrittweite $\Delta t$ ergibt sich dann nach Einsetzen von $D$ die Matrix $F(\Delta t)$ als Zeitentwicklungsmatrix: $F={\begin{bmatrix}1&\Delta t&{\frac {1}{2}}(\Delta t)^{2}\\0&1&\Delta t\\0&0&1\end{bmatrix}}.$
Wenn nur Messwerte der Position zur Korrektur der ersten Zustandsvariable vorliegen, während Geschwindigkeit und Beschleunigung im Filterzustand automatisch geschätzt und korrigiert werden sollen, dann wählt man als Beobachtungsmatrix $H={\begin{bmatrix}1&0&0\end{bmatrix}}.$
Falls auch unabhängige direkte Geschwindigkeitsmessungen vorliegen oder z. B. durch Inertialsensoren gewonnene Beschleunigungen, dann können diese zusätzlich zur Korrektur verwendet werden, um die Konvergenz der Schätzung zu verbessern. Bei Messwerten der Position und der Beschleunigung würde man folgende H-Matrix verwenden: $H={\begin{bmatrix}1&0&0\\0&0&1\end{bmatrix}}.$

#### Prozessrauschen

Eine konstante Beschleunigung, wie im obigen Beispiel, ist für viele Anwendungen eine zu starre Annahme. Abhilfe schafft ein geeignetes Modell für das Prozessrauschen, welches der Beschleunigung eine bestimmte Variation erlaubt. Ein spezielles Modell ist das piecewise white noise model, das stückweise zu Beginn jedes Zeitschritts $\Delta t$ eine sich um $\Delta a$ sprunghaft ändernde, aber dann konstante Beschleunigung annimmt. Damit ändert sich nach Verstreichen des Zeitintervalls $\Delta t$ der Zustand um
    $\Delta {\vec {r}}={\begin{pmatrix}{\frac {1}{2}}(\Delta t)^{2}\\\Delta t\\1\end{pmatrix}}\Delta a$.
Wenn diese Änderung der Beschleunigung $\Delta a$ zufällig ist und einer Normalverteilung folgt, dann kann das resultierende Verhalten durch ein bestimmtes Prozessrauschen beschrieben werden, indem die Matrix
    $Q:=E[\Delta {\vec {r}}\Delta {\vec {r}}^{T}]=E[(\Delta a)^{2}]{\begin{bmatrix}{\frac {\Delta t^{4}}{4}}&{\frac {\Delta t^{3}}{2}}&{\frac {\Delta t^{2}}{2}}\\{\frac {\Delta t^{3}}{2}}&\Delta t^{2}&\Delta t\\{\frac {\Delta t^{2}}{2}}&\Delta t&1.\end{bmatrix}}$
den Filterzustand entsprechend relaxiert. $E[(\Delta a)^{2}]$ ist dabei die Varianz der zufälligen Beschleunigungsänderung pro Zeitschritt $\Delta t$ (während $E[\Delta a]=0$).

### Korrektur

Die Vorhersagen werden schließlich mit den neuen Informationen des aktuellen Messwerts korrigiert und ergeben die gesuchten Schätzungen
    ${\textbf {x}}_{k}={\textbf {x}}_{k|k-1}+{\textbf {K}}_{k}{\tilde {\textbf {y}}}_{k}$
sowie
    ${\textbf {P}}_{k}={\textbf {P}}_{k|k-1}-{\textbf {K}}_{k}{\textbf {S}}_{k}{\textbf {K}}_{k}^{\text{T}}$
mit den Hilfsgrößen Innovation
    ${\tilde {\textbf {y}}}_{k}={\textbf {z}}_{k}-{\textbf {H}}_{k}{\textbf {x}}_{k|k-1}$,
Residualkovarianz
    ${\textbf {S}}_{k}={\textbf {H}}_{k}{\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}+{\textbf {R}}_{k}$
und der zugehörigen Kalman-Matrix
    ${\textbf {K}}_{k}={\textbf {P}}_{k|k-1}{\textbf {H}}_{k}^{\text{T}}{\textbf {S}}_{k}^{-1}$.
Die Hilfsgröße Innovation beschreibt, wie genau der vorhergesagte Mittelwert den aktuellen Messwert mittels der Beobachtungsgleichung beschreiben kann. Für eine schlechte Vorhersage wird die dazugehörige Innovation groß, für eine genaue Vorhersage dagegen klein sein. Entsprechende Korrekturen müssen dann groß bzw. nur gering ausfallen. Die durchzuführende Korrektur kann demnach als zur Größe der Innovation proportional angesehen werden. Zudem sollen Innovationen von Messwerten, die mit größerer Unsicherheit als ihre Schätzungen behaftet sind, mit weniger Gewicht in die Korrektur eingehen als solche, bei denen das Gegenteil der Fall ist. Diese zu fordernden Eigenschaften werden gerade von der Kalman-Matrix als dem gesuchten Proportionalitätsfaktor erfüllt. Dies wird aus der äquivalenten Formulierung
    ${\textbf {K}}_{k}={\textbf {P}}_{k}{\textbf {H}}_{k}^{\text{T}}{\textbf {R}}_{k}^{-1}$
ersichtlich, die, im Rahmen dieses eher intuitiven Zugangs und damit stark vereinfachend gesprochen, als das geforderte Verhältnis der Unsicherheiten der Vorhersagen P$_k$ zu den zugehörigen Messunsicherheiten R$_k$ angesehen werden kann. Die Elemente der Kalman-Matrix können in vielen Fällen analytisch, also vor Beginn des Schätzvorgangs berechnet oder wenigstens näherungsweise bestimmt werden. In weniger zeitkritischen Anwendungen wird die Kalman-Matrix mitgeschätzt, d. h. während des Schätzvorgangs immer wieder neu aus der aktuellen Vorhersage der Kovarianz berechnet.
Die exakte Herleitung und Begründung der Vorhersage- und Korrekturgleichungen erfolgt üblicherweise im Rahmen wahrscheinlichkeitstheoretischer Betrachtungen unter Benutzung des Bayes-Theorems. Die Kalman-Matrix ${\textbf {K}}$ wurde dabei so gebildet, dass sich für ideale Randbedingungen eine Schätzung mit kleinstem Fehlerquadrat ergibt. ${\textbf {K}}$ kann jedoch auch davon abweichend beliebig gewählt werden. Dann muss die sogenannte Joseph-Form
    $\mathbf {P} _{k}=\left(\mathbf {I} -\mathbf {K} _{k}\mathbf {H} _{k}\right)\mathbf {P} _{k\mid k-1}{\underline {\left(\mathbf {I} -\mathbf {K} _{k}\mathbf {H} _{k}\right)^{\textsf {T}}+\mathbf {K} _{k}\mathbf {R} _{k}\mathbf {K} _{k}^{\textsf {T}}}}$
der Kovarianzmatrix verwendet werden (der unterstrichene Teil wurde ergänzt). Diese kann verwendet werden, wenn bestimmte Eingriffe in die Grundgleichungen vorgenommen werden müssen oder sich ungewollt ergeben, wie etwa durch numerische Rundungsfehler.

## Beispiel mit Bewegungsgleichung

Im folgenden Beispiel soll ein Kalmanfilter den Verlauf eines Polynoms 3. Grades schätzen. Als Systemzustand wählt man neben dem zeitabhängigen Wert auch dessen drei Ableitungen ${\textbf {x}}={\begin{bmatrix}x&{\dot {x}}&{\ddot {x}}&{\overset {...}{x}}\end{bmatrix}}.$ Dieser wird beispielsweise mit den Startwerten ${\textbf {x}}={\begin{bmatrix}0&0&0&0\end{bmatrix}}$ und einer Kovarianzmatrix von $P=\sigma _{\text{init}}^{2}I$ mit einem Fehler von $\sigma _{\text{init}}$ initialisiert mit der Einheitsmatrix $I$. Jeder Variable kann in der Diagonalen auch eine individuelle Varianz mit passender Einheit zugeordnet werden. Um die Dynamik in der Startbedingung weiter einzuschränken, kann auch eine Bedingung an den Wertebereich des zu erwartenden Polynoms gestellt werden, indem die Startbedingung als $P=\sigma _{\text{init}}^{2}C_{w}^{-1}$ mit $[C_{w}]_{ij}={\frac {1}{w}}\int _{0}^{w}t^{i+j}dt$ gewählt wird, wodurch zu Beginn erwartet wird, dass sich das Polynom bei $t\in [0,w]$ in einem homogenen Wertebereich von $0\pm \sigma _{\text{init}}$ bewegt.
Die Beobachtungsmatrix $H={\begin{bmatrix}1&0&0&0\end{bmatrix}}$ nimmt dabei nur direkte Messwerte für die erste Variable entgegen, während die drei Ableitungen indirekt im Laufe der Iteration geschätzt werden sollen.
Für die Messung der Position sei das bekannte Messrauschen durch $\sigma _{\text{noise}}$ gegeben, so dass $R=\sigma _{\text{noise}}^{2}$.
Nun wird die erste Korrektur mit dem ersten Messwert durchgeführt mit dem Korrektur-Schritt. Dadurch wird sich im Zustandsvektor der erste Eintrag ändern und die Kovarianzmatrix erhält im ersten Diagonalwert eine verbesserte Unsicherheit, die etwa dem Messrauschen entspricht.
Als Propagationsmatrix des Zustandes mit drei Zeitableitungen ergibt sich: $F={\begin{bmatrix}1&\Delta t&{\frac {1}{2}}\Delta t^{2}&{\frac {1}{6}}\Delta t^{3}\\0&1&\Delta t&{\frac {1}{2}}\Delta t^{2}\\0&0&1&\Delta t\\0&0&0&1\end{bmatrix}}$
Damit wird der Zustand bis zum nächsten Messwert propagiert und dort erneut eine Korrektur durchgeführt. Anschließend wird der Zustand einen Schritt weiter propagiert usw.
Nach vier Iterationsschritten des Kalman-Filters und Messungen zu vier Zeitpunkten wird der gesamte Zustandsvektor mit ersten Schätzungen gefüllt sein. Bei nur sehr schwach verrauschten Messwerten sind dann Geschwindigkeit, Beschleunigung und die dritte Zeitableitung (Ruck) bereits gut genug geschätzt, so dass sich der weitere Verlauf des Polynoms 3. Grades nur durch Propagationsschritte ohne weitere Messungen und Korrekturen ergeben würde. Im Fall von deutlich verrauschten Messwerten nähert sich der Schätzwert im Verlauf der Zeit immer mehr an das zugrundeliegende wahre Polynom an, wie in der Beispielrechnung der folgenden Abbildung demonstriert wird:
Python-Quellcode der Beispielrechnung

### Vergleich mit Kleinste-Quadrate-Schätzung

Bei vielen Anwendungen kann ein Kalman-Filter durch eine gleichwertige Kleinste-Quadrate-Schätzung ersetzt werden, wie im Fall einer Polynomregression. Die Kleinste-Quadrate-Schätzung benötigt im Gegensatz zum Kalman-Filter keine a-priori-Schätzung als Startbedingung und muss auch nicht iterativ durchgeführt werden, sofern alle Messdaten bereits vollständig vorliegen. Eine iterative Berechnung ist jedoch möglich, indem bei allen Matrixmultiplikationen die Summen über die Dimension der Beobachtungen bei jeder neu vorliegenden Messung um einen weiteren Summanden ergänzt werden, so dass die Summen gewissermaßen den Systemzustand repräsentieren.
Die Gleichung folgt aus der verallgemeinerten Kleinste-Quadrate-Schätzung (engl. generalized least squares, kurz GLS):
    $c=\left(A^{\top }R_{\rm {noise}}^{-1}A+R_{\rm {prior}}^{-1}\right)^{-1}A^{\top }R_{\rm {noise}}^{-1}y$
    $y_{{\rm {GLS}},k}=\sum _{j}c_{j}\,\varphi _{j}(t_{k})$
Die Matrix $A_{ij}=\varphi _{j}(t_{i})$ enthält dabei die Funktionswerte der Basisfunktionen $\varphi _{j}(t)$ an den Stützstellen $t_{i}$. Als Basis wird hier die Polynombasis $\varphi _{j}(t)=t^{j}$ verwendet. $y$ ist der Vektor mit allen Messwerten bis zum aktuellen Zeitpunkt $t_{k}$. Mit der Kovarianzmatrix $R_{\rm {prior}}$ kann eine a-priori-Schätzung mit den Startwerten Null hinzugefügt werden (begründet durch eine Daten-Fusion), während die Matrix $R_{\rm {noise}}$ das Messrauschen beschreibt. $y_{{\rm {GLS}},k}$ ergibt schließlich die Schätzung zum aktuellen Zeitschritt $k$. Einen direkten Vergleich dieser Rechnung mit dem Kalman-Filter zeigt die nachfolgende Abbildung.
Python-Quellcode der Beispielrechnung
Wird die Kleinste-Quadrate-Methode zunächst ohne a-priori-Bedingung angewendet, ergibt sich ein etwas verrauschteres Einschwingen, wobei sich beide Kurven nach einiger Zeit treffen. Mit identischen a-priori-Bedingungen ist kein Unterschied mehr zum Kalman-Filter erkennbar. Die beiden Methoden sind also in diesem Anwendungsbeispiel trotz der sehr unterschiedlichen Gleichungen äquivalent. Das Kalman-Filter erweist sich jedoch bei komplexeren Systemen und Randbedingungen meist als intuitiver und vielfältiger anwendbar.

## Eigenschaften

Wie aus der Korrekturgleichung ersichtlich ist, hängt die Schätzung des Mittelwertes in linearer Weise von der Beobachtung ab, das Kalman-Filter ist demnach ein lineares Filter. Mit zunehmender Länge der Messreihe nähern sich die Schätzungen für Mittelwert und Varianz den tatsächlichen Werten beliebig genau an. Man spricht daher im statistischen Jargon von einem erwartungstreuen und konsistenten Schätzer mit minimaler Varianz. Aufgrund dieser Schätzeigenschaften, die hier einer Minimierung des mittleren quadratischen Fehlers entsprechen, ist das Kalman-Filter ein optimales lineares Filter. Selbst verallgemeinerte nichtlineare Filter liefern für das hier betrachtete lineare Zustandsraummodell mit normalverteilten Variablen keine besseren Ergebnisse. Im Gegensatz zu anderen (rekursiven) linearen Schätzern, die ebenso Fehlerquadrate minimieren, erlaubt das Kalman-Filter auch die Behandlung von Problemen mit korrelierten Rauschkomponenten, wie sie in der Praxis häufig anzutreffen sind.

### Anmerkungen zum zeitkontinuierlichen Kalman-Filter

Im zeitkontinuierlichen Fall spricht man nicht mehr von einer rekursiven Formulierung und auch nicht von einer Prädiktor-Korrektur-Struktur. Vielmehr hat man es mit einem Satz von Differentialgleichungen zu tun, die die Schätzungen von Mittelwert und Kovarianz beschreiben. Um Aussagen über die Schätzung zu einem bestimmten Zeitpunkt machen zu können, müssen die genannten Differentialgleichungen gelöst werden. Aufgrund eines nichtlinearen Terms in der Kovarianzgleichung, der sogenannten Matrix-Riccati-Gleichung, ist eine exakte Lösung und damit optimale Schätzung nur in wenigen Fällen möglich.

## Herleitung

Das Kalman-Filter kann mithilfe der verallgemeinerten Kleinste-Quadrate-Schätzung auf vergangenen Daten hergeleitet werden. Es ist äquivalent zum exponentiell gewichteten gleitenden Mittelwert (exponentially weighted moving average, EMWA) falls die Gewichte in EMWA Funktionen des Prozessrauschens und des Messrauschens sind.

## Anwendbarkeit

Die bei der Herleitung des Kalman-Filters gemachten Voraussetzungen können in der Praxis oft nur näherungsweise erfüllt werden. So ist in vielen Fällen die exakte Struktur der linearen Zustands- und Beobachtungsgleichung unbekannt oder zu umfangreich, als dass sie im Rahmen des Kalman-Filters rechentechnisch handhabbar wäre. Der Anwender muss demnach eine Einschränkung der zu verwendenden Modellklassen vornehmen. Die damit verbundenen Ungenauigkeiten führen häufig zu einem vom Optimalen abweichendem, divergenten Verhalten des Filters. Daher sind vor dem Einsatz Untersuchungen zur Abhängigkeit der Schätzergebnisse von den Modellierungsfehlern (und deren Kompensation) im Rahmen einer Sensitivitätsanalyse notwendig.
Zu einer weiteren Einschränkung der Schätzgüte führen die durch den Einsatz digitaler Rechentechnik verursachten Rundungsfehler. Analog zu den Modellungenauigkeiten können diese zu einer drastischen Divergenz des Kalman-Filters führen. Abhilfe schaffen hier algebraische Umformulierungen (Faktorisierungen) der Kovarianzmatrizen, jedoch um den Preis erhöhten rechentechnischen Aufwandes. Die bekanntesten numerisch stabilen Varianten des Kalman-Filters sind die Wurzelimplementierung nach Potter et al. und deren Verfeinerung in Form des Bierman-Thornton-UD-Algorithmus (wobei $U$ eine obere Dreiecksmatrix und $D$ eine Diagonalmatrix darstellen).

## Erweiterungen

Neben den oben genannten Problemen ist das Kalman-Filter in vielen Fällen nicht einsetzbar, da es auf lineare Zustandsraummodelle beschränkt ist. Selbst einfache Aufgabenstellungen der Navigationstechnik oder das wichtige Themengebiet der Parameterschätzung führen jedoch immer auf nichtlineare Zustands- oder Beobachtungsgleichungen. Abhilfe schaffen hier beispielsweise nichtlineare Erweiterungen des Kalman-Filters wie das bereits in den 60er Jahren entwickelte Erweiterte Kalman-Filter (EKF) oder auch das neuere Unscented Kalman-Filter (UKF).
Diese Kalman-Filter-Varianten nähern das nichtlineare Problem durch ein lineares, wobei beim EKF analytische, beim UKF statistische Techniken zum Einsatz kommen. Im Sinne eines unkomplizierten Sprachgebrauchs werden diese Erweiterungen häufig abkürzend ebenfalls als Kalman-Filter bezeichnet, da sie ebenso eine rekursive sowie eine Prädiktor-Korrektor-Struktur haben. Im Gegensatz zum einfachen Kalman-Filter ist die Kalman-Matrix nun eine Zufallsvariable und muss während des gesamten Filtereinsatzes mitgeschätzt werden, was wiederum die Anforderungen an die Technik erhöht.
Die Idee des Kalman-Filters lässt sich auf Systeme erweitern, in denen die Zustandsübertragungsfunktion $f$ oder die Beobachtungsfunktion $h$ nicht linear sind.
Im erweiterten Kalman-Filter (extended Kalman filter) werden $f$ und $h$ für die Berechnung der Kovarianzmatrizen linearisiert (während sie exakt in die Zustandsberechnung einfließen). Durch die Linearisierung erhält man mithilfe der entsprechenden Jacobi-Matrizen lokal gültige Übergangsmatrizen ${\textbf {F}}$ und Beobachtungsmatrizen ${\textbf {H}}$:
    ${{\boldsymbol {F}}_{k}}=\left.{\frac {\partial f}{\partial {\boldsymbol {x}}}}\right\vert _{{\hat {\boldsymbol {x}}}_{k-1|k-1},{\boldsymbol {u}}_{k}}$
    ${{\boldsymbol {H}}_{k}}=\left.{\frac {\partial h}{\partial {\boldsymbol {x}}}}\right\vert _{{\hat {\boldsymbol {x}}}_{k|k-1}}$
Im Unscented Kalman-Filter wird der aktuelle Zustand (statt mit der Zustandsübertragungsfunktion) durch Propagation von Sigmapunkten der Ausgangsnormalverteilung ermittelt. Im Partikel-Filter werden hierfür (statt Sigmapunkten im Unscented Kalman Filter) beliebige Stützstellen gewählt, wodurch keine Normalverteilung der Ausgangsverteilung angenommen werden muss.
Seit dem Aufkommen leistungsfähiger digitaler Rechentechnik ist man dazu übergegangen, die meisten anspruchsvollen nichtlinearen Filterprobleme durch Simulationen (sequentielle Monte-Carlo-Methoden) oder anderweitige Näherungsverfahren (Quadraturfilter, Gaußsummenfilter, Projektionsfilter) zu behandeln.