Start of the Smoothin chapter. RTS implemented.
This commit is contained in:
1 parent
3367806b07
commit
75c4e9ce97
3 files changed
+570
-4
No files matched your search
@@ -0,0 +1,567 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:cf4e23aa02553cbdae69dbb8733e9b49216155470a73689c07a24c4574923bc9"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"[Table of Contents](http://nbviewer.ipython.org/github/rlabbe/Kalman-and-Bayesian-Filters-in-Python/blob/master/table_of_contents.ipynb)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Smoothing"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#format the book\n",
|
||||
"%matplotlib inline\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
|
||||
"\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: transparent;\n",
|
||||
" color: #000000;\n",
|
||||
" font-weight: 600;\n",
|
||||
" font-size: 11pt;\n",
|
||||
" font-style: bold;\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 125%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 50000px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 50000px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 2,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f1ee9015ac8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Introduction\n",
|
||||
"\n",
|
||||
"It has probably struck you by now that the performance of the Kalman filter is not optimal when you consider future data. For example, suppose we are tracking an aircraft, and the latest measurement is far from the current track, like so (I'll only consider 1 dimension for simplicity):\n",
|
||||
"\n",
|
||||
" 10.1 10.2 9.8 10.1 10.2 10.3 10.1 9.9 10.2 10.0 9.9 12.4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"data = [10.1, 10.2, 9.8, 10.1, 10.2, 10.3, 10.1, 9.9, 10.2, 10.0, 9.9, 12.4]\n",
|
||||
"plt.plot(data)\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7ffb30f847f0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 12
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"After a long period of near steady state, we have a very large change. Assume that change is larger than the aircraft's manuevering envelope. Nonetheless the Kalman filter incorporates that new measurement into the filter based on the current Kalman gain. It cannot reject the noise because the measurement could reflect the initiation of a turn. Granted it is unlikely that we are turning so abruptly, but it is impossible to say whether \n",
|
||||
" \n",
|
||||
"* The aircraft started a turn awhile ago, but the previous measurements were noisy and didn't show the change.\n",
|
||||
" \n",
|
||||
"* The aircraft is turning, and this measurement is very noisy\n",
|
||||
" \n",
|
||||
"* The measurement is very noisy and the aircraft has not turned\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"Now, suppose the following measurements are:\n",
|
||||
"\n",
|
||||
" 11.3 12.1 13.3 13.9 14.5 15.2\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"data2 = [11.3, 12.1, 13.3, 13.9, 14.5, 15.2]\n",
|
||||
"plt.plot(data+data2)\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7ffb31228080>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
" \n",
|
||||
"Given these future measurements we can infer that yes, the aircraft initiated a turn. \n",
|
||||
"\n",
|
||||
"On the other hand, suppose these are the following measurements.\n",
|
||||
"\n",
|
||||
" 9.8 10.2 9.9 10.1 10.0 10.3 9.9 10.1\n",
|
||||
" \n",
|
||||
"In this case we are led to conclude that the aircraft did not turn and that the outlying measurement was merely very noisy. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"data3 = [9.8, 10.2, 9.9, 10.1, 10.0, 10.3, 9.9, 10.1]\n",
|
||||
"plt.plot(data+data3)\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7ffb30d9da20>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Since this type of smoothing requires knowing data from \"the future\", there are some applications for the Kalman filter where these observations are not helpful. For example, if we are using a Kalman filter as our navigation filter for an aircraft we have little interest in where we have been. While we could use a smoother to create a smooth history for the plane, we probably are not interested in it. However if we can afford a bit of latency some smoothers only require a few measurements into the future prode better results. And, of course any problem where we can batch collect the data and then run the Kalman filter on the data will be able to take maximum advantage of this type of algorithm.\n",
|
||||
"\n",
|
||||
"## Types of Smoothers\n",
|
||||
"\n",
|
||||
"There are three broad classes of Kalman smoothers that produce better tracking in these situations.\n",
|
||||
"\n",
|
||||
"* Fixed Point Smoothing\n",
|
||||
"\n",
|
||||
"Fixed point smoothers start out as a normal Kalman filter. But once they get to measurement 4 (say) it then looks backwards and revises the filter output for the previous measurement(s). So, at step 5 the filter will produce a result for 5, and update the result for measurement 4 taking measurement 5 into account. When measurement 6 comes in the filter produces the result for 6, and then goes back and revises 4 using the measurements from 5 and 6. It will revise the output for measurement 5 as well. This process continues, with all previous outputs being revised each time a new input comes in.\n",
|
||||
"\n",
|
||||
"* Fixed Lag Smoothing\n",
|
||||
"\n",
|
||||
"Fixed lag smoothers introduce latency into the output. Suppose we choose a lag of 4 steps. The filter will injest the first 3 measurements but not ouput a filtered result. Then, when the 4th measurement comes in the filter will produce the output for measurement 1, taking measurments 1 through 4 into account. When the 5th measurment comes in, the filter will produce the result for measurement 2, taking measurements 2 through 5 into account.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"* Fixed Interval Smoothing\n",
|
||||
"\n",
|
||||
"This is a batch processing based filter. It requires all measurements for the track before it attempts to filter the data. Having the full history and future of the data allows it to find the optimal answer, at the cost of not being able to run in real time. If it is possible for you to run your Kalman filter in batch mode it is always recommended to use one of these filters a it will provide much better results than the recursive forms of the filter from the previous chapters.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"The choice of these filters depends on your needs and how much memory and processing time you can spare. Fixed point smoothing requires storage of all measurements, and is very costly to compute because the output is for every time step is recomputed for every measurement. On the other hand, the filter does produce a decent output for the current measurement, so this filter can be used for real time applications.\n",
|
||||
"\n",
|
||||
"Fixed lag smoothing only requires you to store a window of data, and processing requirements are modest because only that window is processed for each new measurement. The drawback is that the filter's output always lags the input, and the smoothing is not as pronounced as is possible with fixed interval smoothing.\n",
|
||||
"\n",
|
||||
"Fixed interval smoothing produces the most smoothed output at the cost of having to be batch processed. Most algorithms use some sort of forwards/backwards algorithm that is only twice as slow as a recursive Kalamn filter. \n",
|
||||
"\n",
|
||||
"## Fixed Point Smoothing\n",
|
||||
"\n",
|
||||
"not done\n",
|
||||
"\n",
|
||||
"## Fixed Lag Smoothing\n",
|
||||
"\n",
|
||||
"not done"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Fixed Interval Smoothing\n",
|
||||
"\n",
|
||||
"There are several fixed lag smoothers available in the literature. I have chosen to implement the smoother invented by Rauch, Tung, and Striebel because of its ease of implementation and efficiency of computation. This smoother is commonly known as an RTS smoother, and that is what we will call it\n",
|
||||
"\n",
|
||||
"Derivation of the RTS smoother runs to several pages of densely packed math, and to be honest I have never read it through. I'm certainly not going to inflict it on you. I don't think anyone but thesis writers really need to understand the derivation. Instead I will briefly present the algorithm, equations, and then move directly to implementation and demonstration of the smoother.\n",
|
||||
"\n",
|
||||
"The RTS smoother works by first running the Kalman filter in a batch mode, computing the filter output for each step. Given the filter output for each measurement along with the covariance matrix corresponding to each output the RTS runs over the data backwards, incorporating it's knowledge of the future into the past measurements. When it reaches the first measurement it is done, and the filtered output incorporates all of the information in a maximally optimal form.\n",
|
||||
"\n",
|
||||
"The equations for the RTS smoother are very straightforward and easy to implement.\n",
|
||||
"\n",
|
||||
" Predict Step\n",
|
||||
"$$\\begin{aligned}\n",
|
||||
"\\mathbf{P}^- &= \\mathbf{FP}_k\\mathbf{F}^\\mathsf{T} + \\mathbf{Q }\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
" Update Step\n",
|
||||
"$$\\begin{aligned}\n",
|
||||
"\\mathbf{K}_k &= \\mathbf{P}_k\\mathbf{F} \\hspace{2 mm}inv(\\mathbf{P}^-) \\\\\n",
|
||||
"\\mathbf{x}_k &= \\mathbf{x}_k + \\mathbf{K}_k(\\mathbf{x}_{x+1} - \\mathbf{FX}_k) \\\\\n",
|
||||
"\\mathbf{P}_k &= \\mathbf{P}_k + \\mathbf{K}_k(\\mathbf{P}_{K+1} - \\mathbf{P}^-)\\mathbf{K}_k^\\mathsf{T}\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"As always, the hardest part of the implementation is correctly accounting for the subscripts. A basic implementation without comments or error checking would be:\n",
|
||||
"\n",
|
||||
" def rts_smoother(Xs, Ps, F, Q):\n",
|
||||
" n, dim_x, _ = Xs.shape\n",
|
||||
" \n",
|
||||
" # smoother gain\n",
|
||||
" K = zeros((n,dim_x, dim_x))\n",
|
||||
" x, P = Xs.copy(), Ps.copy()\n",
|
||||
"\n",
|
||||
" for k in range(n-2,-1,-1):\n",
|
||||
" P_pred = dot(F, P[k]).dot(F.T) + Q\n",
|
||||
"\n",
|
||||
" K[k] = dot(P[k], F.T).dot(inv(P_pred))\n",
|
||||
" x[k] += dot(K[k], x[k+1] - dot(F, x[k]))\n",
|
||||
" P[k] += dot(K[k], P[k+1] - P_pred).dot(K[k].T)\n",
|
||||
" return (x, P, K)\n",
|
||||
" \n",
|
||||
"This implementation mirrors the implementation provided in FilterPy. It assumes that the Kalman filter is being run externally in batch mode, and the results of the state and covariances are passed in via the `Xs` and `Ps` variable.\n",
|
||||
"\n",
|
||||
"Let's just look at an example. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"from numpy import random\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from filterpy.kalman import KalmanFilter, rts_smoother\n",
|
||||
"\n",
|
||||
"def plot_rts(noise):\n",
|
||||
" random.seed(123)\n",
|
||||
" fk = KalmanFilter(dim_x=2, dim_z=1)\n",
|
||||
"\n",
|
||||
" fk.x = np.array([[0.],\n",
|
||||
" [1.]]) # initial state (location and velocity)\n",
|
||||
"\n",
|
||||
" fk.F = np.array([[1.,1.],\n",
|
||||
" [0.,1.]]) # state transition matrix\n",
|
||||
"\n",
|
||||
" fk.H = [[1.,0.]] # Measurement function\n",
|
||||
" fk.P = .01 # covariance matrix\n",
|
||||
" fk.R = noise # state uncertainty\n",
|
||||
" fk.Q = 0.001 # process uncertainty\n",
|
||||
"\n",
|
||||
" # create noisy data\n",
|
||||
" zs = [t + random.randn()*noise for t in range (40)]\n",
|
||||
"\n",
|
||||
" # filter data with Kalman filter, than run smoother on it\n",
|
||||
" mu, cov, _, _ = fk.batch_filter (zs)\n",
|
||||
" M,P,C = rts_smoother(mu, cov, fk.F, fk.Q)\n",
|
||||
"\n",
|
||||
" # plot data\n",
|
||||
" plt.plot(zs,'r', marker='o', linewidth=1, alpha=0.5, label='measurement')\n",
|
||||
" plt.plot (M[:,0], c='b', label='RTS')\n",
|
||||
" plt.plot (mu[:,0,0], c='g', linestyle='--',label='KF output')\n",
|
||||
" plt.plot ([0,len(zs)],[0,len(zs)], 'k', linewidth=1, label='ideal') \n",
|
||||
" plt.legend(loc=4)\n",
|
||||
"\n",
|
||||
" plt.show()\n",
|
||||
" \n",
|
||||
"plot_rts(7.)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f1ee8e96fd0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 64
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"I've injected a lot of noise into the signal to allow you to visually distinguis the RTS output from the ideal output. In the graph above we can see that the Kalman filter, drawn as the green dotted line, is reasonably smooth compared to the input, but it still wanders from from the ideal line when several measurements in a row are biased towards one side of the line. In contrast, the RTS output is both extremely smooth and very close to the ideal output.\n",
|
||||
"\n",
|
||||
"With a perhaps more reasonable amount of noise we can see that the RTS output nearly lies on the ideal output. The Kalman filter output, while much better, still varies by a far greater amount."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"plot_rts(noise=1.)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f1ee8db19b0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 65
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## References\n",
|
||||
"\n",
|
||||
"[1] H. Rauch, F. Tung, and C. Striebel. \"Maximum likelihood estimates of linear dynamic systems,\" *AIAA Journal*, **3**(8), pp. 1445-1450 (August 1965).\n",
|
||||
"\n",
|
||||
"http://arc.aiaa.org/doi/abs/10.2514/3.3166\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user