diff --git a/06-Multivariate-Kalman-Filters.ipynb b/06-Multivariate-Kalman-Filters.ipynb
index 13c2d3b..86012d6 100644
--- a/06-Multivariate-Kalman-Filters.ipynb
+++ b/06-Multivariate-Kalman-Filters.ipynb
@@ -496,14 +496,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Initialization - Choose State Variables and Set Initial Conditions"
+ "### Initialization - Choose State Variables and Set Initial Conditions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### **Step 1**: Design State Variable as a Multivariate Gaussian\n",
+ "#### **Step 1**: Design State Variable as a Multivariate Gaussian\n",
"\n",
"In the univariate chapter we tracked a dog in one dimension by using a Gaussian. The mean $(\\mu)$ represented the most likely position, and the variance ($\\sigma^2$) represented the probability distribution of the position. In that problem the position is the *state* of the system, and we call $\\mu$ the *state variable*.\n",
"\n",
@@ -702,12 +702,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Predict Step\n",
+ "### Predict Step\n",
"\n",
"The next step in designing a Kalman filter is telling it how to predict the state (mean and covariance) of the system for the next time step. We do this by providing it with equations that describe the physical model of the system.\n",
"\n",
"\n",
- "### **Step 2:** Design the State Transition Function\n",
+ "#### **Step 2:** Design the State Transition Function\n",
"\n",
"In the univariate chapter we modeled the dog's motion with\n",
"\n",
@@ -872,7 +872,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### **Step 3**: Design the Process Noise Matrix"
+ "#### **Step 3**: Design the Process Noise Matrix"
]
},
{
@@ -957,7 +957,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "**Process Noise**\n",
+ "#### Process Noise\n",
"\n",
"A quick review on **process noise**. A car is driving along the road with the cruise control on; it should travel at a constant speed. We model this with $x=\\dot{x}\\Delta t + x_0$. However, it is affected by a number of unknown factors. The cruise control is not perfect, and cannot maintain a constant velocity. Winds affect the car, as do hills and potholes. Passengers roll down windows, changing the drag profile of the car. \n",
"\n",
@@ -1016,7 +1016,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### **Step 4**: Design the Control Function\n",
+ "#### **Step 4**: Design the Control Function\n",
"\n",
"The Kalman filter does not just filter data, it allows us to incorporate control inputs for systems like robots and airplanes. Suppose we are controlling a robot. At each time step we would send control signals to the robot based on its current position vs desired position. Kalman filter equations incorporate that knowledge into the filter equations, creating a predicted position based both on current velocity *and* control inputs to the drive motors. Remember, we *never* throw information away.\n",
"\n",
@@ -1050,7 +1050,7 @@
"metadata": {},
"source": [
"\n",
- "### Prediction: Summary\n",
+ "#### Prediction: Summary\n",
"\n",
"Your job as a designer is to specify the matrices for\n",
"\n",
@@ -1065,11 +1065,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Update Step\n",
+ "### Update Step\n",
"\n",
"Now we can implement the update step of the filter. The good news is that you only have to supply two more matrices, and they are easy to understand. The bad news is that the Kalman filter equations themselves are harder to understand. So for now I'll leave the equations unexplained so we can get the full Kalman filter working. After that we'll look at the equations. \n",
"\n",
- "### **Step 5**: Design the Measurement Function\n",
+ "#### **Step 5**: Design the Measurement Function\n",
"\n",
"The Kalman filter computes the update step in what we call **measurement space**. We mostly ignored this issue in the univariate chapter because of the complication it adds. We tracked our dog's position using a sensor that reported his position. Computing the *residual* was easy - subtract the filter's predicted position from the measurement:\n",
"\n",
@@ -1145,7 +1145,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### **Step 6**: Design the Measurement Noise Matrix\n",
+ "#### **Step 6**: Design the Measurement Noise Matrix\n",
"\n",
"The **measurement noise matrix** models the noise in our sensors as a covariance matrix. In practice this can be difficult. A complicated system may have many sensors, the correlation between them might not be clear, and usually their noise is not a pure Gaussian. For example, a sensor might be biased to read high if the temperature is high, and so the noise is not distributed equally on both sides of the mean.\n",
"\n",
@@ -1190,7 +1190,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Implementing the Kalman Filter"
+ "### Implementing the Kalman Filter"
]
},
{
@@ -2932,7 +2932,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.4.1"
+ "version": "3.4.3"
}
},
"nbformat": 4,
diff --git a/Appendix-E-Ensemble-Kalman-Filters.ipynb b/Appendix-E-Ensemble-Kalman-Filters.ipynb
index f37f229..fa10bb3 100644
--- a/Appendix-E-Ensemble-Kalman-Filters.ipynb
+++ b/Appendix-E-Ensemble-Kalman-Filters.ipynb
@@ -1,757 +1,757 @@
-{
- "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": "markdown",
- "metadata": {},
- "source": [
- "# Ensemble Kalman Filters"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 1,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#format the book\n",
- "%matplotlib inline\n",
- "%load_ext autoreload\n",
- "%autoreload 2 \n",
- "from __future__ import division, print_function\n",
- "import sys\n",
- "sys.path.insert(0,'./code')\n",
- "from book_format import load_style\n",
- "load_style()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "> I am not well versed with Ensemble filters. I have implemented one for this book, and made it work, but I have not used one in real life. Different sources use slightly different forms of these equations. If I implement the equations given in the sources the filter does not work. It is possible that I am doing something wrong. However, in various places on the web I have seen comments by people stating that they do the kinds of things I have done in my filter to make it work. In short, I do not understand this topic well, but choose to present my lack of knowledge rather than to gloss over the subject. I hope to master this topic in the future and to author a more definitive chapter. At the end of the chapter I document my current confusion and questions. In any case if I got confused by the sources perhaps you also will, so documenting my confusion can help you avoid the same.\n",
- "\n",
- "\n",
- "The ensemble Kalman filter (EnKF) is very similar to the unscented Kalman filter (UKF) of the last chapter. If you recall, the UKF uses a set of deterministically chosen weighted sigma points passed through nonlinear state and measurement functions. After the sigma points are passed through the function, we find the mean and covariance of the points and use this as the filter's new mean and covariance. It is only an approximation of the true value, and thus suboptimal, but in practice the filter is highly accurate. It has the advantage of often producing more accurate estimates than the EKF does, and also does not require you to analytically derive the linearization of the state and measurement equations. \n",
- "\n",
- "The ensemble Kalman filter works in a similar way, except it uses a *Monte Carlo* method to choose a large numbers of sigma points. It came about from the geophysical sciences as an answer for the very large states and systems needed to model things such as the ocean and atmosphere. There is an interesting article on it's development in weather modeling in *SIAM News* [1]. The filter starts by randomly generating a large number of points distributed about the filter's initial state. This distribution is proportional to the filter's covariance $\\mathbf{P}$. In other words 68% of the points will be within one standard deviation of the mean, 95% percent within two standard deviations, and so on. Let's look at this in two dimensions. We will use `numpy.random.multivariate_normal()` function to randomly create points from a multivariate normal distribution drawn from the mean (5, 3) with the covariance\n",
- "\n",
- "$$\\begin{bmatrix}\n",
- "32 & 15 \\\\ 15 & 40\n",
- "\\end{bmatrix}$$\n",
- "\n",
- "I've drawn the covariance ellipse representing two standard deviations to illustrate how the points are distributed."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n3XWn3JYXEZHuNMVSRGT46ZfgvX79ekpLS7Esq1tbQMuyeOuttyI14MuXL+e+++7j6quvBuD666/n\niSee6I8liIiIiIgMaf0SvC+99FJc1z3lcUlJSTz33HP98ZAiIuc1ja4XERl++iV4i4jIwFPgFhEZ\nXvRbW0RERERkACh4i4iIiIgMAAVvEREREZEBoOAtIiIiIjIAFLxFRERERAaAgreIiIiIyABQ8BYR\nERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMAAVvEREREZEBoOAtIiIiIjIAFLxFRERERAaA\ngreIiIiIyABQ8BYRERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMAAVvEREREZEBoOAtIiIi\nIjIAFLxFRERERAaAgreIiIiIyABQ8BYRERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMAAVv\nEREREZEBoOAtIiIiIjIA+i1433nnnUybNo24uDhSUlK44YYb2LJlS7dj6uvrWbp0KUlJSSQlJbFs\n2TIaGhr6awkiIiIiIkNWvwXviy66iGeffZaKigpWrFiB53lceeWVhEKhyDFLliyhrKyMFStW8Npr\nr7FhwwaWLl3aX0sQERERERmy/P11orvuuivy8aRJk/jBD35Abm4uVVVVZGZmsmXLFlasWEFRUREF\nBQUAPPXUU1xyySVs27aN6dOn99dSRERERESGnLNS493c3MwzzzxDZmYm6enpAJSUlJCQkMCCBQsi\nxwWDQeLj4ykpKTkbyxARERERGTL6NXg/+eSTjBgxghEjRvDyyy/zyiuv4PebTfXa2lqSk5O7HW9Z\nFikpKdTW1vbnMkREREREhpxeS00efPBBHnnkkV5PsHLlSgoLCwG44447uPrqq9mzZw8//elPueaa\na9iwYQMjRow44wXq4svzR2ZmJqDvucjx9LMh0jP9bMhw02vwfuCBB1i2bFmvJ0hLS4t8PHLkSEaO\nHElGRgbz589n1KhR/PGPf2TZsmWkpqayf//+bvf1PI99+/aRmpr6MZ6CiIiIiMjQ12vwHj16NKNH\njz6jE7uui+d5OI4DwIIFC2hqaqKkpCRS511SUkJzczPBYPCMHkNEREREZLiwPM/zPu5JduzYwYsv\nvshVV13FmDFj2L17N48++ihFRUVUVFREars/9alPsXv3bp5++mk8z+Ouu+5i6tSp/PnPf/7YT0RE\nREREZCjrl4srY2JiePvtt7nmmmvIzMzk85//PImJiZSUlHS7oHL58uVceOGFXH311SxevJg5c+bw\n3HPP9ccSRERERESGtH7Z8RYRERERkd6dlT7eIn1x6aWXYtt2t/+WLFnS7Zj6+nqWLl1KUlISSUlJ\nLFu2TFexy3nhySefJD09ndjYWObNm8fq1asHe0kiA+qhhx464W/E+PHjTzhmwoQJxMXFcdlll7F5\n8+ZBWq1I7xS8ZdBZlsWXvvQlamtrI/899dRT3Y5ZsmQJZWVlrFixgtdee40NGzawdOnSQVqxyMD4\n3e9+xze+8Q0efPBBysrKCAaDXHPNNVRXVw/20kQGVHZ2dre/ERs3bozc9qMf/YjHHnuMJ554gnff\nfZeUlBSuuuoqmpqaBnHFIj1TqYkMussuu4xZs2bx+OOP93j7li1byMnJoaioKNIRp6ioiEsuuYSK\nigqmT58+kMsVGTAFBQXk5uZ2eyM6ffp0Pve5z51yxoLIueKhhx7ipZde6ha2wzzPY/z48dx///18\n5zvfAaC1tZWUlBR++tOfctdddw30ckV6pR1vGRKef/55kpOTmTVrFv/8z//cbaeipKSEhISESOgG\nCAaDxMfHU1JSMhjLFTnrjh07xoYNG1i0aFG3ry9atIji4uJBWpXI4Ni5cycTJkxg6tSp3HbbbVRV\nVQFQVVVFXV1dt5+TQCBAYWGhfk5kSOq1j7fIQFiyZAlTpkxh/PjxbNq0ie985zt88MEHrFixAoDa\n2tpu3XHAlKekpKRQW1s7GEsWOesOHDiA4ziMHTu229f1/72cb+bPn8+zzz5LdnY2dXV1PPzwwwSD\nQcrLyyM/Cz39nOzZs2cwlivSKwVvOSsefPDBU/5T+MqVKyksLOTOO++MfC0nJ4eMjAzy8/MpKysj\nNzf3bC9VRESGsMWLF0c+njVrFgsWLCA9PZ1nn32WgoKCk97PsqyBWJ5Inyh4y1nxwAMPsGzZsl6P\nSUtL6/Hrc+fOxefzUVlZSW5uLqmpqezfv7/bMZ7nsW/fPlJTU/ttzSJDyZgxY/D5fNTV1XX7el1d\nHePGjRukVYkMvri4OHJycti+fTs33HADYH4uJk6cGDmmrq5Ofx9kSFKNt5wVo0ePZvr06b3+Fxsb\n2+N9N27ciOM4kXCxYMECmpqautVzl5SU0NzcTDAYHJDnIzLQoqOjycvL4/XXX+/29TfeeEP/38t5\nrbW1lS1btjBu3DjS09NJTU3t9nPS2trK6tWr9XMiQ5LvoYceemiwFyHnr507d/L444+TkJDAsWPH\nKC4u5q677mLy5Mn84Ac/wLIskpOTKS0tZfny5cyZM4fq6mruvvtu5s+fz7333jvYT0HkrBk5ciTf\n+973GD9+PLGxsTz88MOsXr2aZ555hsTExMFensiA+Na3vkUgEMB1XbZt28bXvvY1du7cyVNPPUVi\nYiKO4/Doo4+SlZWF4zh885vfpK6ujqeffpro6OjBXr5INyo1kUEVHR3NP/7xD37+85/T1NREWloa\n1157Ld/73ve61ectX76c++67j6uvvhqA66+/nieeeGKwli0yIG655RYOHjzIww8/zN69e5k9ezav\nvvrqScu0RM5FNTU13HbbbRw4cIDk5GQWLFjAmjVrIj8H3/72t2lpaeHee++lvr6e+fPn8/rrrxMf\nHz/IKxc5kfp4i4iIiIgMANV4i4iIiIgMAAVvEREREZEBoOAtIiIiIjIAFLxFRERERAaAgreIiIiI\nyABQ8BYRERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMgP8HY6NvgfbECT4AAAAASUVORK5C\nYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "from numpy.random import multivariate_normal\n",
- "from filterpy.stats import (covariance_ellipse, \n",
- " plot_covariance_ellipse)\n",
- "\n",
- "mean = (5, 3)\n",
- "P = np.array([[32, 15],\n",
- " [15., 40.]])\n",
- "\n",
- "x,y = multivariate_normal(mean=mean, cov=P, size=2500).T\n",
- "plt.scatter(x, y, alpha=0.3, marker='.')\n",
- "plt.axis('equal')\n",
- "\n",
- "plot_covariance_ellipse(mean=mean, cov=P,\n",
- " variance=2.**2,\n",
- " facecolor='none')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## The Algorithm"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "As I already stated, when the filter is initialized a large number of sigma points are drawn from the initial state ($\\mathbf{x}$) and covariance ($\\mathbf{P}$). From there the algorithm proceeds very similarly to the UKF. During the prediction step the sigma points are passed through the state transition function, and then perturbed by adding a bit of noise to account for the process noise. During the update step the sigma points are translated into measurement space by passing them through the measurement function, they are perturbed by a small amount to account for the measurement noise. The Kalman gain is computed from the \n",
- "\n",
- "We already mentioned the main difference between the UKF and EnKF - the UKF choses the sigma points deterministically. There is another difference, implied by the algorithm above. With the UKF we generate new sigma points during each predict step, and after passing the points through the nonlinear function we reconstitute them into a mean and covariance by using the *unscented transform*. The EnKF keeps propagating the originally created sigma points; we only need to compute a mean and covariance as outputs for the filter! \n",
- "\n",
- "Let's look at the equations for the filter. As usual, I will leave out the typical subscripts and superscripts; I am expressing an algorithm, not mathematical functions. Here $N$ is the number of sigma points, $\\chi$ is the set of sigma points."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Initialize Step"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "$$\\boldsymbol\\chi \\sim \\mathcal{N}(\\mathbf{x}_0, \\mathbf{P}_0)$$\n",
- "\n",
- "This says to select the sigma points from the filter's initial mean and covariance. In code this might look like\n",
- "\n",
- "```python\n",
- "N = 1000\n",
- "sigmas = multivariate_normal(mean=x, cov=P, size=N)\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Predict Step"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "$$\n",
- "\\begin{aligned}\n",
- "\\boldsymbol\\chi &= f(\\boldsymbol\\chi, \\mathbf{u}) + v_Q \\\\\n",
- "\\mathbf{x} &= \\frac{1}{N} \\sum_1^N \\boldsymbol\\chi\n",
- "\\end{aligned}\n",
- "$$\n",
- "\n",
- "That is short and sweet, but perhaps not entirely clear. The first line passes all of the sigma points through a use supplied state transition function and then adds some noise distributed according to the $\\mathbf{Q}$ matrix. In Python we might write\n",
- "\n",
- "```python\n",
- "for i, s in enumerate(sigmas):\n",
- " sigmas[i] = fx(x=s, dt=0.1, u=0.)\n",
- "\n",
- "sigmas += multivariate_normal(x, Q, N)\n",
- "```\n",
- "\n",
- "The second line computes the mean from the sigmas. In Python we will take advantage of `numpy.mean` to do this very concisely and quickly.\n",
- "\n",
- "```python\n",
- "x = np.mean(sigmas, axis=0)\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can now optionally compute the covariance of the mean. The algorithm does not need to compute this value, but it is often useful for analysis. The equation is\n",
- "\n",
- "$$\\mathbf{P} = \\frac{1}{N-1}\\sum_1^N[\\boldsymbol\\chi-\\mathbf{x}^-][\\boldsymbol\\chi-\\mathbf{x}^-]^\\mathsf{T}$$\n",
- "\n",
- "$\\boldsymbol\\chi-\\mathbf{x}^-$ is a one dimensional vector, so we will use `numpy.outer` to compute the $[\\boldsymbol\\chi-\\mathbf{x}^-][\\boldsymbol\\chi-\\mathbf{x}^-]^\\mathsf{T}$ term. In Python we might write\n",
- "\n",
- "```python\n",
- " P = 0\n",
- " for s in sigmas:\n",
- " P += outer(s-x, s-x)\n",
- " P = P / (N-1)\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Update Step"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In the update step we pass the sigma points through the measurement function, compute the mean and covariance of the sigma points, compute the Kalman gain from the covariance, and then update the Kalman state by scaling the residual by the Kalman gain. The equations are\n",
- "\n",
- "$$\n",
- "\\begin{aligned}\n",
- "\\boldsymbol\\chi_h &= h(\\boldsymbol\\chi, u)\\\\\n",
- "\\mathbf{z}_{mean} &= \\frac{1}{N}\\sum_1^N \\boldsymbol\\chi_h \\\\ \\\\\n",
- "\\mathbf{P}_{zz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi_h - \\mathbf{z}_{mean}][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T} + \\mathbf{R} \\\\\n",
- "\\mathbf{P}_{xz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi - \\mathbf{x}^-][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T} \\\\\n",
- "\\\\\n",
- "\\mathbf{K} &= \\mathbf{P}_{xz} \\mathbf{P}_{zz}^{-1}\\\\ \n",
- "\\boldsymbol\\chi & = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\boldsymbol\\chi_h + \\mathbf{v}_R] \\\\ \\\\\n",
- "\\mathbf{x} &= \\frac{1}{N} \\sum_1^N \\boldsymbol\\chi \\\\\n",
- "\\mathbf{P} &= \\mathbf{P} - \\mathbf{KP}_{zz}\\mathbf{K}^\\mathsf{T}\n",
- "\\end{aligned}\n",
- "$$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This is very similar to the linear KF and the UKF. Let's just go line by line.\n",
- "\n",
- "The first line,\n",
- "\n",
- "$$\\boldsymbol\\chi_h = h(\\boldsymbol\\chi, u),$$\n",
- "\n",
- "just passes the sigma points through the measurement function $h$. We name the resulting points $\\chi_h$ to distinguish them from the sigma points. In Python we could write this as\n",
- "\n",
- "```python\n",
- "sigmas_h = h(sigmas, u)\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The next line computes the mean of the measurement sigmas.\n",
- "\n",
- "$$\\mathbf{z}_{mean} = \\frac{1}{N}\\sum_1^N \\boldsymbol\\chi_h$$\n",
- "\n",
- "In Python we write\n",
- "\n",
- "```python\n",
- "z_mean = np.mean(sigmas_h, axis=0)\n",
- "```\n",
- " \n",
- "Now that we have the mean of the measurement sigmas we can compute the covariance for every measurement sigma point, and the *cross variance* for the measurement sigma points vs the sigma points. That is expressed by these two equations\n",
- "\n",
- "$$\n",
- "\\begin{aligned}\n",
- "\\mathbf{P}_{zz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi_h - \\mathbf{z}_{mean}][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T} + \\mathbf{R} \\\\\n",
- "\\mathbf{P}_{xz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi - \\mathbf{x}^-][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T}\n",
- "\\end{aligned}$$\n",
- "\n",
- "We can express this in Python with\n",
- "\n",
- "```python\n",
- "P_zz = 0\n",
- "for sigma in sigmas_h:\n",
- " s = sigma - z_mean\n",
- " P_zz += outer(s, s)\n",
- "P_zz = P_zz / (N-1) + R\n",
- "\n",
- "P_xz = 0\n",
- "for i in range(N):\n",
- " P_xz += outer(self.sigmas[i] - self.x, sigmas_h[i] - z_mean)\n",
- "P_xz /= N-1\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Computation of the Kalman gain is straightforward $\\mathbf{K} = \\mathbf{P}_{xz} \\mathbf{P}_{zz}^{-1}$.\n",
- "\n",
- "In Python this is\n",
- "\n",
- "```python\n",
- "K = np.dot(P_xz, inv(P_zz))```\n",
- "\n",
- "Next, we update the sigma points with\n",
- "\n",
- "$$\\boldsymbol\\chi = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\boldsymbol\\chi_h + \\mathbf{v}_R]$$ \n",
- "\n",
- "Here $\\mathbf{v}_R$ is the perturbation that we add to the sigmas. In Python we can implement this with\n",
- "\n",
- "```python\n",
- "v_r = multivariate_normal([0]*dim_z, R, N)\n",
- "for i in range(N):\n",
- " sigmas[i] += dot(K, z + v_r[i] - sigmas_h[i])\n",
- "```\n",
- "\n",
- "\n",
- "Our final step is recompute the filter's mean and covariance.\n",
- "\n",
- "```python\n",
- " x = np.mean(sigmas, axis=0)\n",
- " P = self.P - dot3(K, P_zz, K.T)\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Implementation and Example"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "I have implemented an EnKF in the `FilterPy` library. It is in many ways a toy. Filtering with a large number of sigma points gives us very slow performance. Furthermore, there are many minor variations on the algorithm in the literature. I wrote this mostly because I was interested in learning a bit about the filter. I have not used it for a real world problem, and I can give no advice on using the filter for the large problems for which it is suited. Therefore I will refine my comments to implementing a very simple filter. I will use it to track an object in one dimension, and compare the output to a linear Kalman filter. This is a filter we have designed many times already in this book, so I will design it with little comment. Our state vector will be\n",
- "\n",
- "$$\\mathbf{x} = \\begin{bmatrix}x\\\\ \\dot{x}\\end{bmatrix}$$\n",
- "\n",
- "The state transition function is\n",
- "\n",
- "$$\\mathbf{F} = \\begin{bmatrix}1&1\\\\0&1\\end{bmatrix}$$\n",
- "\n",
- "and the measurement function is\n",
- "\n",
- "$$\\mathbf{H} = \\begin{bmatrix}1&0\\end{bmatrix}$$\n",
- "\n",
- "The EnKF is designed for nonlinear problems, so instead of using matrices to implement the state transition and measurement functions you will need to supply Python functions. For this problem they can be written as:\n",
- "\n",
- "```python\n",
- "def hx(x):\n",
- " return np.array([x[0]])\n",
- "\n",
- "def fx(x, dt):\n",
- " return np.dot(F, x)\n",
- "```\n",
- "\n",
- "One final thing: the EnKF code, like the UKF code, uses a single dimension for $\\mathbf{x}$, not a two dimensional column matrix as used by the linear kalman filter code.\n",
- "\n",
- "Without further ado, here is the code."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\nbwAAqMAPmgLIcozeIMoAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "from numpy.random import randn\n",
- "from filterpy.kalman import EnsembleKalmanFilter as EnKF\n",
- "from filterpy.kalman import KalmanFilter\n",
- "from filterpy.common import Q_discrete_white_noise\n",
- "import book_plots as bp\n",
- "\n",
- "np.random.seed(1234)\n",
- "\n",
- "def hx(x):\n",
- " return np.array([x[0]])\n",
- "\n",
- "def fx(x, dt):\n",
- " return np.dot(F, x)\n",
- " \n",
- "F = np.array([[1., 1.],[0., 1.]])\n",
- "\n",
- "x = np.array([0., 1.])\n",
- "P = np.eye(2) * 100.\n",
- "enf = EnKF(x=x, P=P, dim_z=1, dt=1., N=20, hx=hx, fx=fx)\n",
- "\n",
- "std_noise = 10.\n",
- "enf.R *= std_noise**2\n",
- "enf.Q = Q_discrete_white_noise(2, 1., .001)\n",
- "\n",
- "kf = KalmanFilter(dim_x=2, dim_z=1)\n",
- "kf.x = np.array([x]).T\n",
- "kf.F = F.copy()\n",
- "kf.P = P.copy()\n",
- "kf.R = enf.R.copy()\n",
- "kf.Q = enf.Q.copy()\n",
- "kf.H = np.array([[1., 0.]])\n",
- "\n",
- "measurements = []\n",
- "results = []\n",
- "ps = []\n",
- "kf_results = []\n",
- "\n",
- "zs = []\n",
- "for t in range (0,100):\n",
- " # create measurement = t plus white noise\n",
- " z = t + randn()*std_noise\n",
- " zs.append(z)\n",
- "\n",
- " enf.predict()\n",
- " enf.update(np.asarray([z]))\n",
- " \n",
- " kf.predict()\n",
- " kf.update(np.asarray([[z]]))\n",
- "\n",
- " # save data\n",
- " results.append (enf.x[0])\n",
- " kf_results.append (kf.x[0,0])\n",
- " measurements.append(z)\n",
- " ps.append(3*(enf.P[0,0]**.5))\n",
- "\n",
- "results = np.asarray(results)\n",
- "ps = np.asarray(ps)\n",
- "\n",
- "plt.plot(results, label='EnKF')\n",
- "plt.plot(kf_results, label='KF', c='b', lw=2)\n",
- "bp.plot_measurements(measurements)\n",
- "plt.plot (results - ps, c='k',linestyle=':', lw=1, label='1$\\sigma$')\n",
- "plt.plot(results + ps, c='k', linestyle=':', lw=1)\n",
- "plt.fill_between(range(100), results - ps, results + ps, facecolor='y', alpha=.3)\n",
- "plt.legend(loc='best');"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "It can be a bit difficult to see, but the KF and EnKF start off slightly different, but soon converge to producing nearly the same values. The EnKF is a suboptimal filter, so it will not produce the optimal solution that the KF produces. However, I deliberately chose $N$ to be quite small (20) to guarantee that the EnKF output is quite suboptimal. If I chose a more reasonable number such as 2000 you would be unable to see the difference between the two filter outputs on this graph."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Outstanding Questions"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "All of this should be considered as *my* questions, not lingering questions in the literature. However, I am copying equations directly from well known sources in the field, and they do not address the discrepancies.\n",
- "\n",
- "First, in Brown [2] we have all sums multiplied by $\\frac{1}{N}$, as in \n",
- "\n",
- "$$ \\hat{x} = \\frac{1}{N}\\sum_{i=1}^N\\chi_k^{(i)}$$\n",
- "\n",
- "The same equation in Crassidis [3] reads (I'll use the same notation as in Brown, although Crassidis' is different)\n",
- "\n",
- "$$ \\hat{x} = \\frac{1}{N-1}\\sum_{i=1}^N\\chi_k^{(i)}$$\n",
- "\n",
- "The same is true in both sources for the sums in the computation for the covariances. Crassidis, in the context of talking about the filter's covariance, states that $N-1$ is used to ensure an unbiased estimate. Given the following standard equations for the mean and standard deviation (p.2 of Crassidis), this makes sense for the covariance.\n",
- "\n",
- "$$\n",
- "\\begin{aligned}\n",
- "\\mu &= \\frac{1}{N}\\sum_{i=1}^N[\\tilde{z}(t_i) - \\hat{z}(t_i)] \\\\\n",
- " \\sigma^2 &= \\frac{1}{N-1}\\sum_{i=1}^N\\{[\\tilde{z}(t_i) - \\hat{z}(t_i)] - \\mu\\}^2\n",
- "\\end{aligned}\n",
- "$$\n",
- "\n",
- "However, I see no justification or reason to use $N-1$ to compute the mean. If I use $N-1$ in the filter for the mean the filter does not converge and the state essentially follows the measurements without any filtering. However, I do see a reason to use it for the covariance as in Crassidis, in contrast to Brown. Again, I support my decision empirically - $N-1$ works in the implementation of the filter, $N$ does not.\n",
- "\n",
- "My second question relates to the use of the $\\mathbf{R}$ matrix. In Brown $\\mathbf{R}$ is added to $\\mathbf{P}_{zz}$ whereas it isn't in Crassidis and other sources. I have read on the web notes by other implementers that adding R helps the filter, and it certainly seems reasonable and necessary to me, so this is what I do. \n",
- "\n",
- "My third question relates to the computation of the covariance $\\mathbf{P}$. Again, we have different equations in Crassidis and Brown. I have chosen the implementation given in Brown as it seems to give me the behavior that I expect (convergence of $\\mathbf{P}$ over time) and it closely compares to the form in the linear KF. In contrast I find the equations in Crassidis do not seem to converge much.\n",
- "\n",
- "My fourth question relates to the state estimate update. In Brown we have \n",
- "\n",
- "$$\\boldsymbol\\chi = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\mathbf{z}_{mean} + \\mathbf{v}_R]$$ \n",
- "\n",
- "whereas in Crassidis we have\n",
- "\n",
- "$$\\boldsymbol\\chi = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\boldsymbol\\chi_h + \\mathbf{v}_R]$$ \n",
- "\n",
- "To me the Crassidis equation seems logical, and it produces a filter that performs like the linear KF for linear problems, so that is the formulation that I have chosen. \n",
- "\n",
- "I am not comfortable saying either book is wrong; it is quite possible that I missed some point that makes each set of equations work. I can say that when I implemented them as written I did not get a filter that worked. I define \"work\" as performs essentially the same as the linear KF for linear problems. Between reading implementation notes on the web and reasoning about various issues I have chosen the implementation in this chapter, which does in fact seem to work correctly. I have yet to explore the significant amount of original literature that will likely definitively explain the discrepancies. I would like to leave this here in some form even if I do find an explanation that reconciles the various differences, as if I got confused by these books than probably others will as well."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## References"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "- [1] Mackenzie, Dana. *Ensemble Kalman Filters Bring Weather Models Up to Date* Siam News, Volume 36, Number 8, October 2003. http://www.siam.org/pdf/news/362.pdf\n",
- "\n",
- "- [2] Brown, Robert Grover, and Patrick Y.C. Hwang. *Introduction to Random Signals and Applied Kalman Filtering, With MATLABĀ® excercises and solutions.* Wiley, 2012.\n",
- "\n",
- "- [3] Crassidis, John L., and John L. Junkins. *Optimal estimation of dynamic systems*. CRC press, 2011."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.4.1"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}
+{
+ "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": "markdown",
+ "metadata": {},
+ "source": [
+ "# Ensemble Kalman Filters"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "#format the book\n",
+ "%matplotlib inline\n",
+ "%load_ext autoreload\n",
+ "%autoreload 2 \n",
+ "from __future__ import division, print_function\n",
+ "import sys\n",
+ "sys.path.insert(0,'./code')\n",
+ "from book_format import load_style\n",
+ "load_style()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> I am not well versed with Ensemble filters. I have implemented one for this book, and made it work, but I have not used one in real life. Different sources use slightly different forms of these equations. If I implement the equations given in the sources the filter does not work. It is possible that I am doing something wrong. However, in various places on the web I have seen comments by people stating that they do the kinds of things I have done in my filter to make it work. In short, I do not understand this topic well, but choose to present my lack of knowledge rather than to gloss over the subject. I hope to master this topic in the future and to author a more definitive chapter. At the end of the chapter I document my current confusion and questions. In any case if I got confused by the sources perhaps you also will, so documenting my confusion can help you avoid the same.\n",
+ "\n",
+ "\n",
+ "The ensemble Kalman filter (EnKF) is very similar to the unscented Kalman filter (UKF) of the last chapter. If you recall, the UKF uses a set of deterministically chosen weighted sigma points passed through nonlinear state and measurement functions. After the sigma points are passed through the function, we find the mean and covariance of the points and use this as the filter's new mean and covariance. It is only an approximation of the true value, and thus suboptimal, but in practice the filter is highly accurate. It has the advantage of often producing more accurate estimates than the EKF does, and also does not require you to analytically derive the linearization of the state and measurement equations. \n",
+ "\n",
+ "The ensemble Kalman filter works in a similar way, except it uses a *Monte Carlo* method to choose a large numbers of sigma points. It came about from the geophysical sciences as an answer for the very large states and systems needed to model things such as the ocean and atmosphere. There is an interesting article on it's development in weather modeling in *SIAM News* [1]. The filter starts by randomly generating a large number of points distributed about the filter's initial state. This distribution is proportional to the filter's covariance $\\mathbf{P}$. In other words 68% of the points will be within one standard deviation of the mean, 95% percent within two standard deviations, and so on. Let's look at this in two dimensions. We will use `numpy.random.multivariate_normal()` function to randomly create points from a multivariate normal distribution drawn from the mean (5, 3) with the covariance\n",
+ "\n",
+ "$$\\begin{bmatrix}\n",
+ "32 & 15 \\\\ 15 & 40\n",
+ "\\end{bmatrix}$$\n",
+ "\n",
+ "I've drawn the covariance ellipse representing two standard deviations to illustrate how the points are distributed."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n3XWn3JYXEZHuNMVSRGT46ZfgvX79ekpLS7Esq1tbQMuyeOuttyI14MuXL+e+++7j6quvBuD666/n\niSee6I8liIiIiIgMaf0SvC+99FJc1z3lcUlJSTz33HP98ZAiIuc1ja4XERl++iV4i4jIwFPgFhEZ\nXvRbW0RERERkACh4i4iIiIgMAAVvEREREZEBoOAtIiIiIjIAFLxFRERERAaAgreIiIiIyABQ8BYR\nERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMAAVvEREREZEBoOAtIiIiIjIAFLxFRERERAaA\ngreIiIiIyABQ8BYRERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMAAVvEREREZEBoOAtIiIi\nIjIAFLxFRERERAaAgreIiIiIyABQ8BYRERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMAAVv\nEREREZEBoOAtIiIiIjIA+i1433nnnUybNo24uDhSUlK44YYb2LJlS7dj6uvrWbp0KUlJSSQlJbFs\n2TIaGhr6awkiIiIiIkNWvwXviy66iGeffZaKigpWrFiB53lceeWVhEKhyDFLliyhrKyMFStW8Npr\nr7FhwwaWLl3aX0sQERERERmy/P11orvuuivy8aRJk/jBD35Abm4uVVVVZGZmsmXLFlasWEFRUREF\nBQUAPPXUU1xyySVs27aN6dOn99dSRERERESGnLNS493c3MwzzzxDZmYm6enpAJSUlJCQkMCCBQsi\nxwWDQeLj4ykpKTkbyxARERERGTL6NXg/+eSTjBgxghEjRvDyyy/zyiuv4PebTfXa2lqSk5O7HW9Z\nFikpKdTW1vbnMkREREREhpxeS00efPBBHnnkkV5PsHLlSgoLCwG44447uPrqq9mzZw8//elPueaa\na9iwYQMjRow44wXq4svzR2ZmJqDvucjx9LMh0jP9bMhw02vwfuCBB1i2bFmvJ0hLS4t8PHLkSEaO\nHElGRgbz589n1KhR/PGPf2TZsmWkpqayf//+bvf1PI99+/aRmpr6MZ6CiIiIiMjQ12vwHj16NKNH\njz6jE7uui+d5OI4DwIIFC2hqaqKkpCRS511SUkJzczPBYPCMHkNEREREZLiwPM/zPu5JduzYwYsv\nvshVV13FmDFj2L17N48++ihFRUVUVFREars/9alPsXv3bp5++mk8z+Ouu+5i6tSp/PnPf/7YT0RE\nREREZCjrl4srY2JiePvtt7nmmmvIzMzk85//PImJiZSUlHS7oHL58uVceOGFXH311SxevJg5c+bw\n3HPP9ccSRERERESGtH7Z8RYRERERkd6dlT7eIn1x6aWXYtt2t/+WLFnS7Zj6+nqWLl1KUlISSUlJ\nLFu2TFexy3nhySefJD09ndjYWObNm8fq1asHe0kiA+qhhx464W/E+PHjTzhmwoQJxMXFcdlll7F5\n8+ZBWq1I7xS8ZdBZlsWXvvQlamtrI/899dRT3Y5ZsmQJZWVlrFixgtdee40NGzawdOnSQVqxyMD4\n3e9+xze+8Q0efPBBysrKCAaDXHPNNVRXVw/20kQGVHZ2dre/ERs3bozc9qMf/YjHHnuMJ554gnff\nfZeUlBSuuuoqmpqaBnHFIj1TqYkMussuu4xZs2bx+OOP93j7li1byMnJoaioKNIRp6ioiEsuuYSK\nigqmT58+kMsVGTAFBQXk5uZ2eyM6ffp0Pve5z51yxoLIueKhhx7ipZde6ha2wzzPY/z48dx///18\n5zvfAaC1tZWUlBR++tOfctdddw30ckV6pR1vGRKef/55kpOTmTVrFv/8z//cbaeipKSEhISESOgG\nCAaDxMfHU1JSMhjLFTnrjh07xoYNG1i0aFG3ry9atIji4uJBWpXI4Ni5cycTJkxg6tSp3HbbbVRV\nVQFQVVVFXV1dt5+TQCBAYWGhfk5kSOq1j7fIQFiyZAlTpkxh/PjxbNq0ie985zt88MEHrFixAoDa\n2tpu3XHAlKekpKRQW1s7GEsWOesOHDiA4ziMHTu229f1/72cb+bPn8+zzz5LdnY2dXV1PPzwwwSD\nQcrLyyM/Cz39nOzZs2cwlivSKwVvOSsefPDBU/5T+MqVKyksLOTOO++MfC0nJ4eMjAzy8/MpKysj\nNzf3bC9VRESGsMWLF0c+njVrFgsWLCA9PZ1nn32WgoKCk97PsqyBWJ5Inyh4y1nxwAMPsGzZsl6P\nSUtL6/Hrc+fOxefzUVlZSW5uLqmpqezfv7/bMZ7nsW/fPlJTU/ttzSJDyZgxY/D5fNTV1XX7el1d\nHePGjRukVYkMvri4OHJycti+fTs33HADYH4uJk6cGDmmrq5Ofx9kSFKNt5wVo0ePZvr06b3+Fxsb\n2+N9N27ciOM4kXCxYMECmpqautVzl5SU0NzcTDAYHJDnIzLQoqOjycvL4/XXX+/29TfeeEP/38t5\nrbW1lS1btjBu3DjS09NJTU3t9nPS2trK6tWr9XMiQ5LvoYceemiwFyHnr507d/L444+TkJDAsWPH\nKC4u5q677mLy5Mn84Ac/wLIskpOTKS0tZfny5cyZM4fq6mruvvtu5s+fz7333jvYT0HkrBk5ciTf\n+973GD9+PLGxsTz88MOsXr2aZ555hsTExMFensiA+Na3vkUgEMB1XbZt28bXvvY1du7cyVNPPUVi\nYiKO4/Doo4+SlZWF4zh885vfpK6ujqeffpro6OjBXr5INyo1kUEVHR3NP/7xD37+85/T1NREWloa\n1157Ld/73ve61ectX76c++67j6uvvhqA66+/nieeeGKwli0yIG655RYOHjzIww8/zN69e5k9ezav\nvvrqScu0RM5FNTU13HbbbRw4cIDk5GQWLFjAmjVrIj8H3/72t2lpaeHee++lvr6e+fPn8/rrrxMf\nHz/IKxc5kfp4i4iIiIgMANV4i4iIiIgMAAVvEREREZEBoOAtIiIiIjIAFLxFRERERAaAgreIiIiI\nyABQ8BYRERERGQAK3iIiIiIiA0DBW0RERERkACh4i4iIiIgMgP8HY6NvgfbECT4AAAAASUVORK5C\nYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "from numpy.random import multivariate_normal\n",
+ "from filterpy.stats import (covariance_ellipse, \n",
+ " plot_covariance_ellipse)\n",
+ "\n",
+ "mean = (5, 3)\n",
+ "P = np.array([[32, 15],\n",
+ " [15., 40.]])\n",
+ "\n",
+ "x,y = multivariate_normal(mean=mean, cov=P, size=2500).T\n",
+ "plt.scatter(x, y, alpha=0.3, marker='.')\n",
+ "plt.axis('equal')\n",
+ "\n",
+ "plot_covariance_ellipse(mean=mean, cov=P,\n",
+ " variance=2.**2,\n",
+ " facecolor='none')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## The Algorithm"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "As I already stated, when the filter is initialized a large number of sigma points are drawn from the initial state ($\\mathbf{x}$) and covariance ($\\mathbf{P}$). From there the algorithm proceeds very similarly to the UKF. During the prediction step the sigma points are passed through the state transition function, and then perturbed by adding a bit of noise to account for the process noise. During the update step the sigma points are translated into measurement space by passing them through the measurement function, they are perturbed by a small amount to account for the measurement noise. The Kalman gain is computed from the \n",
+ "\n",
+ "We already mentioned the main difference between the UKF and EnKF - the UKF choses the sigma points deterministically. There is another difference, implied by the algorithm above. With the UKF we generate new sigma points during each predict step, and after passing the points through the nonlinear function we reconstitute them into a mean and covariance by using the *unscented transform*. The EnKF keeps propagating the originally created sigma points; we only need to compute a mean and covariance as outputs for the filter! \n",
+ "\n",
+ "Let's look at the equations for the filter. As usual, I will leave out the typical subscripts and superscripts; I am expressing an algorithm, not mathematical functions. Here $N$ is the number of sigma points, $\\chi$ is the set of sigma points."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Initialize Step"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "$$\\require{autobold}\\boldsymbol\\chi \\sim \\mathcal{N}(\\mathbf{x}_0, \\mathbf{P}_0)$$\n",
+ "\n",
+ "This says to select the sigma points from the filter's initial mean and covariance. In code this might look like\n",
+ "\n",
+ "```python\n",
+ "N = 1000\n",
+ "sigmas = multivariate_normal(mean=x, cov=P, size=N)\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Predict Step"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "$$\n",
+ "\\begin{aligned}\n",
+ "\\boldsymbol\\chi &= f(\\boldsymbol\\chi, \\mathbf{u}) + v_Q \\\\\n",
+ "\\mathbf{x} &= \\frac{1}{N} \\sum_1^N \\boldsymbol\\chi\n",
+ "\\end{aligned}\n",
+ "$$\n",
+ "\n",
+ "That is short and sweet, but perhaps not entirely clear. The first line passes all of the sigma points through a use supplied state transition function and then adds some noise distributed according to the $\\mathbf{Q}$ matrix. In Python we might write\n",
+ "\n",
+ "```python\n",
+ "for i, s in enumerate(sigmas):\n",
+ " sigmas[i] = fx(x=s, dt=0.1, u=0.)\n",
+ "\n",
+ "sigmas += multivariate_normal(x, Q, N)\n",
+ "```\n",
+ "\n",
+ "The second line computes the mean from the sigmas. In Python we will take advantage of `numpy.mean` to do this very concisely and quickly.\n",
+ "\n",
+ "```python\n",
+ "x = np.mean(sigmas, axis=0)\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can now optionally compute the covariance of the mean. The algorithm does not need to compute this value, but it is often useful for analysis. The equation is\n",
+ "\n",
+ "$$\\mathbf{P} = \\frac{1}{N-1}\\sum_1^N[\\boldsymbol\\chi-\\mathbf{x}^-][\\boldsymbol\\chi-\\mathbf{x}^-]^\\mathsf{T}$$\n",
+ "\n",
+ "$\\boldsymbol\\chi-\\mathbf{x}^-$ is a one dimensional vector, so we will use `numpy.outer` to compute the $[\\boldsymbol\\chi-\\mathbf{x}^-][\\boldsymbol\\chi-\\mathbf{x}^-]^\\mathsf{T}$ term. In Python we might write\n",
+ "\n",
+ "```python\n",
+ " P = 0\n",
+ " for s in sigmas:\n",
+ " P += outer(s-x, s-x)\n",
+ " P = P / (N-1)\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Update Step"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the update step we pass the sigma points through the measurement function, compute the mean and covariance of the sigma points, compute the Kalman gain from the covariance, and then update the Kalman state by scaling the residual by the Kalman gain. The equations are\n",
+ "\n",
+ "$$\n",
+ "\\begin{aligned}\n",
+ "\\boldsymbol\\chi_h &= h(\\boldsymbol\\chi, u)\\\\\n",
+ "\\mathbf{z}_{mean} &= \\frac{1}{N}\\sum_1^N \\boldsymbol\\chi_h \\\\ \\\\\n",
+ "\\mathbf{P}_{zz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi_h - \\mathbf{z}_{mean}][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T} + \\mathbf{R} \\\\\n",
+ "\\mathbf{P}_{xz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi - \\mathbf{x}^-][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T} \\\\\n",
+ "\\\\\n",
+ "\\mathbf{K} &= \\mathbf{P}_{xz} \\mathbf{P}_{zz}^{-1}\\\\ \n",
+ "\\boldsymbol\\chi & = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\boldsymbol\\chi_h + \\mathbf{v}_R] \\\\ \\\\\n",
+ "\\mathbf{x} &= \\frac{1}{N} \\sum_1^N \\boldsymbol\\chi \\\\\n",
+ "\\mathbf{P} &= \\mathbf{P} - \\mathbf{KP}_{zz}\\mathbf{K}^\\mathsf{T}\n",
+ "\\end{aligned}\n",
+ "$$"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This is very similar to the linear KF and the UKF. Let's just go line by line.\n",
+ "\n",
+ "The first line,\n",
+ "\n",
+ "$$\\boldsymbol\\chi_h = h(\\boldsymbol\\chi, u),$$\n",
+ "\n",
+ "just passes the sigma points through the measurement function $h$. We name the resulting points $\\chi_h$ to distinguish them from the sigma points. In Python we could write this as\n",
+ "\n",
+ "```python\n",
+ "sigmas_h = h(sigmas, u)\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The next line computes the mean of the measurement sigmas.\n",
+ "\n",
+ "$$\\mathbf{z}_{mean} = \\frac{1}{N}\\sum_1^N \\boldsymbol\\chi_h$$\n",
+ "\n",
+ "In Python we write\n",
+ "\n",
+ "```python\n",
+ "z_mean = np.mean(sigmas_h, axis=0)\n",
+ "```\n",
+ " \n",
+ "Now that we have the mean of the measurement sigmas we can compute the covariance for every measurement sigma point, and the *cross variance* for the measurement sigma points vs the sigma points. That is expressed by these two equations\n",
+ "\n",
+ "$$\n",
+ "\\begin{aligned}\n",
+ "\\mathbf{P}_{zz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi_h - \\mathbf{z}_{mean}][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T} + \\mathbf{R} \\\\\n",
+ "\\mathbf{P}_{xz} &= \\frac{1}{N-1}\\sum_1^N [\\boldsymbol\\chi - \\mathbf{x}^-][\\boldsymbol\\chi_h - \\mathbf{z}_{mean}]^\\mathsf{T}\n",
+ "\\end{aligned}$$\n",
+ "\n",
+ "We can express this in Python with\n",
+ "\n",
+ "```python\n",
+ "P_zz = 0\n",
+ "for sigma in sigmas_h:\n",
+ " s = sigma - z_mean\n",
+ " P_zz += outer(s, s)\n",
+ "P_zz = P_zz / (N-1) + R\n",
+ "\n",
+ "P_xz = 0\n",
+ "for i in range(N):\n",
+ " P_xz += outer(self.sigmas[i] - self.x, sigmas_h[i] - z_mean)\n",
+ "P_xz /= N-1\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Computation of the Kalman gain is straightforward $\\mathbf{K} = \\mathbf{P}_{xz} \\mathbf{P}_{zz}^{-1}$.\n",
+ "\n",
+ "In Python this is\n",
+ "\n",
+ "```python\n",
+ "K = np.dot(P_xz, inv(P_zz))```\n",
+ "\n",
+ "Next, we update the sigma points with\n",
+ "\n",
+ "$$\\boldsymbol\\chi = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\boldsymbol\\chi_h + \\mathbf{v}_R]$$ \n",
+ "\n",
+ "Here $\\mathbf{v}_R$ is the perturbation that we add to the sigmas. In Python we can implement this with\n",
+ "\n",
+ "```python\n",
+ "v_r = multivariate_normal([0]*dim_z, R, N)\n",
+ "for i in range(N):\n",
+ " sigmas[i] += dot(K, z + v_r[i] - sigmas_h[i])\n",
+ "```\n",
+ "\n",
+ "\n",
+ "Our final step is recompute the filter's mean and covariance.\n",
+ "\n",
+ "```python\n",
+ " x = np.mean(sigmas, axis=0)\n",
+ " P = self.P - dot3(K, P_zz, K.T)\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Implementation and Example"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "I have implemented an EnKF in the `FilterPy` library. It is in many ways a toy. Filtering with a large number of sigma points gives us very slow performance. Furthermore, there are many minor variations on the algorithm in the literature. I wrote this mostly because I was interested in learning a bit about the filter. I have not used it for a real world problem, and I can give no advice on using the filter for the large problems for which it is suited. Therefore I will refine my comments to implementing a very simple filter. I will use it to track an object in one dimension, and compare the output to a linear Kalman filter. This is a filter we have designed many times already in this book, so I will design it with little comment. Our state vector will be\n",
+ "\n",
+ "$$\\mathbf{x} = \\begin{bmatrix}x\\\\ \\dot{x}\\end{bmatrix}$$\n",
+ "\n",
+ "The state transition function is\n",
+ "\n",
+ "$$\\mathbf{F} = \\begin{bmatrix}1&1\\\\0&1\\end{bmatrix}$$\n",
+ "\n",
+ "and the measurement function is\n",
+ "\n",
+ "$$\\mathbf{H} = \\begin{bmatrix}1&0\\end{bmatrix}$$\n",
+ "\n",
+ "The EnKF is designed for nonlinear problems, so instead of using matrices to implement the state transition and measurement functions you will need to supply Python functions. For this problem they can be written as:\n",
+ "\n",
+ "```python\n",
+ "def hx(x):\n",
+ " return np.array([x[0]])\n",
+ "\n",
+ "def fx(x, dt):\n",
+ " return np.dot(F, x)\n",
+ "```\n",
+ "\n",
+ "One final thing: the EnKF code, like the UKF code, uses a single dimension for $\\mathbf{x}$, not a two dimensional column matrix as used by the linear kalman filter code.\n",
+ "\n",
+ "Without further ado, here is the code."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\nbwAAqMAPmgLIcozeIMoAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from numpy.random import randn\n",
+ "from filterpy.kalman import EnsembleKalmanFilter as EnKF\n",
+ "from filterpy.kalman import KalmanFilter\n",
+ "from filterpy.common import Q_discrete_white_noise\n",
+ "import book_plots as bp\n",
+ "\n",
+ "np.random.seed(1234)\n",
+ "\n",
+ "def hx(x):\n",
+ " return np.array([x[0]])\n",
+ "\n",
+ "def fx(x, dt):\n",
+ " return np.dot(F, x)\n",
+ " \n",
+ "F = np.array([[1., 1.],[0., 1.]])\n",
+ "\n",
+ "x = np.array([0., 1.])\n",
+ "P = np.eye(2) * 100.\n",
+ "enf = EnKF(x=x, P=P, dim_z=1, dt=1., N=20, hx=hx, fx=fx)\n",
+ "\n",
+ "std_noise = 10.\n",
+ "enf.R *= std_noise**2\n",
+ "enf.Q = Q_discrete_white_noise(2, 1., .001)\n",
+ "\n",
+ "kf = KalmanFilter(dim_x=2, dim_z=1)\n",
+ "kf.x = np.array([x]).T\n",
+ "kf.F = F.copy()\n",
+ "kf.P = P.copy()\n",
+ "kf.R = enf.R.copy()\n",
+ "kf.Q = enf.Q.copy()\n",
+ "kf.H = np.array([[1., 0.]])\n",
+ "\n",
+ "measurements = []\n",
+ "results = []\n",
+ "ps = []\n",
+ "kf_results = []\n",
+ "\n",
+ "zs = []\n",
+ "for t in range (0,100):\n",
+ " # create measurement = t plus white noise\n",
+ " z = t + randn()*std_noise\n",
+ " zs.append(z)\n",
+ "\n",
+ " enf.predict()\n",
+ " enf.update(np.asarray([z]))\n",
+ " \n",
+ " kf.predict()\n",
+ " kf.update(np.asarray([[z]]))\n",
+ "\n",
+ " # save data\n",
+ " results.append (enf.x[0])\n",
+ " kf_results.append (kf.x[0,0])\n",
+ " measurements.append(z)\n",
+ " ps.append(3*(enf.P[0,0]**.5))\n",
+ "\n",
+ "results = np.asarray(results)\n",
+ "ps = np.asarray(ps)\n",
+ "\n",
+ "plt.plot(results, label='EnKF')\n",
+ "plt.plot(kf_results, label='KF', c='b', lw=2)\n",
+ "bp.plot_measurements(measurements)\n",
+ "plt.plot (results - ps, c='k',linestyle=':', lw=1, label='1$\\sigma$')\n",
+ "plt.plot(results + ps, c='k', linestyle=':', lw=1)\n",
+ "plt.fill_between(range(100), results - ps, results + ps, facecolor='y', alpha=.3)\n",
+ "plt.legend(loc='best');"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It can be a bit difficult to see, but the KF and EnKF start off slightly different, but soon converge to producing nearly the same values. The EnKF is a suboptimal filter, so it will not produce the optimal solution that the KF produces. However, I deliberately chose $N$ to be quite small (20) to guarantee that the EnKF output is quite suboptimal. If I chose a more reasonable number such as 2000 you would be unable to see the difference between the two filter outputs on this graph."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Outstanding Questions"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "All of this should be considered as *my* questions, not lingering questions in the literature. However, I am copying equations directly from well known sources in the field, and they do not address the discrepancies.\n",
+ "\n",
+ "First, in Brown [2] we have all sums multiplied by $\\frac{1}{N}$, as in \n",
+ "\n",
+ "$$ \\hat{x} = \\frac{1}{N}\\sum_{i=1}^N\\chi_k^{(i)}$$\n",
+ "\n",
+ "The same equation in Crassidis [3] reads (I'll use the same notation as in Brown, although Crassidis' is different)\n",
+ "\n",
+ "$$ \\hat{x} = \\frac{1}{N-1}\\sum_{i=1}^N\\chi_k^{(i)}$$\n",
+ "\n",
+ "The same is true in both sources for the sums in the computation for the covariances. Crassidis, in the context of talking about the filter's covariance, states that $N-1$ is used to ensure an unbiased estimate. Given the following standard equations for the mean and standard deviation (p.2 of Crassidis), this makes sense for the covariance.\n",
+ "\n",
+ "$$\n",
+ "\\begin{aligned}\n",
+ "\\mu &= \\frac{1}{N}\\sum_{i=1}^N[\\tilde{z}(t_i) - \\hat{z}(t_i)] \\\\\n",
+ " \\sigma^2 &= \\frac{1}{N-1}\\sum_{i=1}^N\\{[\\tilde{z}(t_i) - \\hat{z}(t_i)] - \\mu\\}^2\n",
+ "\\end{aligned}\n",
+ "$$\n",
+ "\n",
+ "However, I see no justification or reason to use $N-1$ to compute the mean. If I use $N-1$ in the filter for the mean the filter does not converge and the state essentially follows the measurements without any filtering. However, I do see a reason to use it for the covariance as in Crassidis, in contrast to Brown. Again, I support my decision empirically - $N-1$ works in the implementation of the filter, $N$ does not.\n",
+ "\n",
+ "My second question relates to the use of the $\\mathbf{R}$ matrix. In Brown $\\mathbf{R}$ is added to $\\mathbf{P}_{zz}$ whereas it isn't in Crassidis and other sources. I have read on the web notes by other implementers that adding R helps the filter, and it certainly seems reasonable and necessary to me, so this is what I do. \n",
+ "\n",
+ "My third question relates to the computation of the covariance $\\mathbf{P}$. Again, we have different equations in Crassidis and Brown. I have chosen the implementation given in Brown as it seems to give me the behavior that I expect (convergence of $\\mathbf{P}$ over time) and it closely compares to the form in the linear KF. In contrast I find the equations in Crassidis do not seem to converge much.\n",
+ "\n",
+ "My fourth question relates to the state estimate update. In Brown we have \n",
+ "\n",
+ "$$\\boldsymbol\\chi = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\mathbf{z}_{mean} + \\mathbf{v}_R]$$ \n",
+ "\n",
+ "whereas in Crassidis we have\n",
+ "\n",
+ "$$\\boldsymbol\\chi = \\boldsymbol\\chi + \\mathbf{K}[\\mathbf{z} -\\boldsymbol\\chi_h + \\mathbf{v}_R]$$ \n",
+ "\n",
+ "To me the Crassidis equation seems logical, and it produces a filter that performs like the linear KF for linear problems, so that is the formulation that I have chosen. \n",
+ "\n",
+ "I am not comfortable saying either book is wrong; it is quite possible that I missed some point that makes each set of equations work. I can say that when I implemented them as written I did not get a filter that worked. I define \"work\" as performs essentially the same as the linear KF for linear problems. Between reading implementation notes on the web and reasoning about various issues I have chosen the implementation in this chapter, which does in fact seem to work correctly. I have yet to explore the significant amount of original literature that will likely definitively explain the discrepancies. I would like to leave this here in some form even if I do find an explanation that reconciles the various differences, as if I got confused by these books than probably others will as well."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## References"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- [1] Mackenzie, Dana. *Ensemble Kalman Filters Bring Weather Models Up to Date* Siam News, Volume 36, Number 8, October 2003. http://www.siam.org/pdf/news/362.pdf\n",
+ "\n",
+ "- [2] Brown, Robert Grover, and Patrick Y.C. Hwang. *Introduction to Random Signals and Applied Kalman Filtering, With MATLABĀ® excercises and solutions.* Wiley, 2012.\n",
+ "\n",
+ "- [3] Crassidis, John L., and John L. Junkins. *Optimal estimation of dynamic systems*. CRC press, 2011."
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.4.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Appendix-H-Least-Squares-Filters.ipynb b/Appendix-H-Least-Squares-Filters.ipynb
index c32a015..40aa2ec 100644
--- a/Appendix-H-Least-Squares-Filters.ipynb
+++ b/Appendix-H-Least-Squares-Filters.ipynb
@@ -16,7 +16,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"metadata": {
"collapsed": false
},
@@ -28,9 +28,10 @@
"@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",
+ "@import url('http://fonts.googleapis.com/css?family=Fira_sans');\n",
"\n",
" div.cell{\n",
- " width: 850px;\n",
+ " width: 900px;\n",
" margin-left: 0% !important;\n",
" margin-right: auto;\n",
" }\n",
@@ -60,40 +61,44 @@
" margin-top: 1em;\n",
" display: block;\n",
" white-space: wrap;\n",
+ " text-align: left;\n",
" } \n",
" h2 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
+ " text-align: left;\n",
" }\n",
" .text_cell_render h2 {\n",
" font-weight: 200;\n",
- " font-size: 20pt;\n",
+ " font-size: 16pt;\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",
+ " white-space: wrap;\n",
+ " text-align: left;\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",
+ " font-weight: 200;\n",
+ " font-size: 14pt;\n",
" line-height: 100%;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 2em;\n",
" display: block;\n",
- " white-space: nowrap;\n",
+ " white-space: wrap;\n",
+ " text-align: left;\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",
+ " font-weight: 100;\n",
+ " font-size: 14pt;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
@@ -104,22 +109,19 @@
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h5 {\n",
- " font-weight: 300;\n",
+ " font-weight: 200;\n",
" font-style: normal;\n",
" color: #1d3b84;\n",
" font-size: 16pt;\n",
" margin-bottom: 0em;\n",
- " margin-top: 1.5em;\n",
+ " margin-top: 0.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",
+ " font-family: 'Fira sans', verdana,arial,sans-serif;\n",
+ " line-height: 125%;\n",
+ " font-size: 115%;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
@@ -133,6 +135,11 @@
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
+ " div.output_wrapper{\n",
+ " margin-top:0.2em;\n",
+ " margin-bottom:0.2em;\n",
+ "}\n",
+ "\n",
" code{\n",
" font-size: 70%;\n",
" }\n",
@@ -235,16 +242,20 @@
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
+ " scale:100,\n",
+ " availableFonts: [],\n",
+ " preferredFont:null,\n",
+ " webFont: \"TeX\",\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"\n"
],
"text/plain": [
- ""
+ ""
]
},
- "execution_count": 1,
+ "execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
@@ -252,10 +263,13 @@
"source": [
"#format the book\n",
"%matplotlib inline\n",
+ "%load_ext autoreload\n",
+ "%autoreload 2 \n",
"from __future__ import division, print_function\n",
- "import matplotlib.pyplot as plt\n",
- "import book_format\n",
- "book_format.load_style()"
+ "import sys\n",
+ "sys.path.insert(0,'./code')\n",
+ "from book_format import load_style\n",
+ "load_style()"
]
},
{
diff --git a/Appendix-I-Analytic-Evaluation-of-Performance.ipynb b/Appendix-I-Analytic-Evaluation-of-Performance.ipynb
new file mode 100644
index 0000000..e02a694
--- /dev/null
+++ b/Appendix-I-Analytic-Evaluation-of-Performance.ipynb
@@ -0,0 +1,324 @@
+{
+ "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": "markdown",
+ "metadata": {},
+ "source": [
+ "# Analytic Evaluation of Performance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "#format the book\n",
+ "%matplotlib inline\n",
+ "%load_ext autoreload\n",
+ "%autoreload 2 \n",
+ "from __future__ import division, print_function\n",
+ "import sys\n",
+ "sys.path.insert(0,'./code')\n",
+ "from book_format import load_style\n",
+ "load_style()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.4.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/code/custom.css b/code/custom.css
index 6597f5d..be6f895 100644
--- a/code/custom.css
+++ b/code/custom.css
@@ -208,7 +208,7 @@