Working on covariance matrix text.
This commit is contained in:
1 parent
f4dfe4113f
commit
aeedd289f8
4 files changed
+380
-192
No files matched your search
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:431420b9bd40c967d24256d0494aae8c585f43685d2ca3e9edae56b410d40d58"
|
||||
"signature": "sha256:fc7a76981c0f56cd0ecc2e002ce26fdf15803c9b00c697fc5550b071291626ff"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -339,11 +339,11 @@
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\hat{x}^-_{k+1} &= \\phi_{k}\\hat{x}_{k} \\\\\n",
|
||||
"\\hat{x}_k &= \\hat{x}^-_k +K_k[z_k - H_k\\hat{x}^-_k] \\\\\n",
|
||||
"K_k &= P^-_kH_k^T[H_kP^-_kH_k^T + R_k]^{-1}\\\\\n",
|
||||
"P^-_{k+1} &= \\phi_k P_k\\phi_k^T + Q_{k} \\\\\n",
|
||||
"P_k &= (I-K_kH_k)P^-_k\n",
|
||||
"\\hat{\\textbf{x}}^-_{k+1} &= \\mathbf{\\phi}_{k}\\hat{\\textbf{x}}_{k} \\\\\n",
|
||||
"\\hat{\\textbf{x}}_k &= \\hat{\\textbf{x}}^-_k +\\textbf{K}_k[\\textbf{z}_k - \\textbf{H}_k\\hat{\\textbf{}x}^-_k] \\\\\n",
|
||||
"\\textbf{K}_k &= \\textbf{P}^-_k\\textbf{H}_k^T[\\textbf{H}_k\\textbf{P}^-_k\\textbf{H}_k^T + \\textbf{R}_k]^{-1}\\\\\n",
|
||||
"\\textbf{P}^-_{k+1} &= \\mathbf{\\phi}_k \\textbf{P}_k\\mathbf{\\phi}_k^T + \\textbf{Q}_{k} \\\\\n",
|
||||
"\\mathbf{P}_k &= (\\mathbf{I}-\\mathbf{K}_k\\mathbf{H}_k)\\mathbf{P}^-_k\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"## \n",
|
||||
"\n",
|
||||
@@ -376,20 +376,31 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"outputs": []
|
||||
"source": [
|
||||
"### Labbe\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\hat{\\textbf{x}}^-_{k+1} &= \\mathbf{F}_{k}\\hat{\\textbf{x}}_{k} + \\mathbf{B}_k\\mathbf{u}_k \\\\\n",
|
||||
"\\textbf{P}^-_{k+1} &= \\mathbf{F}_k \\textbf{P}_k\\mathbf{F}_k^T + \\textbf{Q}_{k} \\\\\n",
|
||||
"\\textbf{y}_k &= \\textbf{z}_k - \\textbf{H}_k\\hat{\\textbf{}x}^-_k \\\\\n",
|
||||
"\\mathbf{S}_k &= \\textbf{H}_k\\textbf{P}^-_k\\textbf{H}_k^T + \\textbf{R}_k \\\\\n",
|
||||
"\\textbf{K}_k &= \\textbf{P}^-_k\\textbf{H}_k^T\\mathbf{S}_k^{-1} \\\\\n",
|
||||
"\\hat{\\textbf{x}}_k &= \\hat{\\textbf{x}}^-_k +\\textbf{K}_k\\textbf{y} \\\\\n",
|
||||
"\\mathbf{P}_k &= (\\mathbf{I}-\\mathbf{K}_k\\mathbf{H}_k)\\mathbf{P}^-_k\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"## \n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"outputs": []
|
||||
"source": [
|
||||
"$\\mathbf{\\phi}\\phi$"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:326afc9d59ba0acf8577d2d3b4ccdfe95d26c615a934eef4c0991fbd68930da8"
|
||||
"signature": "sha256:446b745e571662492376a1e55a6ea44580fe96744ca6356cb9a0e8b98e60c4e9"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -248,13 +248,13 @@
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 2,
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7f93e1782790>"
|
||||
"<IPython.core.display.HTML at 0x7fa1ac6faf50>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
@@ -310,14 +310,14 @@
|
||||
"source": [
|
||||
"$$\n",
|
||||
"\\Sigma = \\begin{pmatrix}\n",
|
||||
" \\sigma_1^2 & p\\sigma_1\\sigma_2 & \\cdots & p\\sigma_1\\sigma_n \\\\\n",
|
||||
" p\\sigma_2\\sigma_1 &\\sigma_2^2 & \\cdots & p\\sigma_2\\sigma_n \\\\\n",
|
||||
" \\sigma_1^2 & \\sigma_{12} & \\cdots & \\sigma_{1n} \\\\\n",
|
||||
" \\sigma_{21} &\\sigma_2^2 & \\cdots & \\sigma_{2n} \\\\\n",
|
||||
" \\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
|
||||
" p\\sigma_n\\sigma_1 & p\\sigma_n\\sigma_2 & \\cdots & \\sigma_n^2\n",
|
||||
" \\sigma_{n1} & \\sigma_{n2} & \\cdots & \\sigma_n^2\n",
|
||||
" \\end{pmatrix}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"If you haven't seen this before it is probably a bit confusing at the moment. Rather than explain the math right now, we will take our usual tactic of building our intuition first with various physical models. At this point, note that the diagonal contains the variance for each state variable, and that all off-diagonal elements are a product of the $\\sigma$ corresponding to the $i$th (row) and $j$th (column) state variable multiplied by a constant $p$."
|
||||
"If you haven't seen this before it is probably a bit confusing at the moment. Rather than explain the math right now, we will take our usual tactic of building our intuition first with various physical models. At this point, note that the diagonal contains the variance for each state variable, and that all off-diagonal elements (covariances) are represent how much the $i$th (row) and $j$th (column) state variable are linearly correlated to each other. In other words, it is a measure for how much they change together. No correlation will have a covariance of 0."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -336,6 +336,8 @@
|
||||
"\n",
|
||||
"If you are reasonably well-versed in linear algebra this equation should look quite managable; if not, don't worry! If you want to learn the math we will cover it in detail in the next optional chapter. If you choose to skip that chapter the rest of this book should still be managable for you\n",
|
||||
"\n",
|
||||
"** author's note: plot it right here to immediately build an intuitive understanding. I think there is perhaps too much text between here and the plot**\n",
|
||||
"\n",
|
||||
"I have programmed it and saved it in the file `stats.py` with the function name `multivariate_gaussian`. I am not showing the code here because I have taken advantage of the linear algebra solving apparatus of numpy to efficiently compute a solution - the code does not correspond to the equation in a one to one manner. If you wish to view the code, I urge you to either load it in an editor, or load it into this worksheet by putting `%load -s multivariate_gaussian stats.py` in the next cell and executing it with ctrl-enter. "
|
||||
]
|
||||
},
|
||||
@@ -357,7 +359,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 3
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -380,7 +382,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 4
|
||||
"prompt_number": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -398,7 +400,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 5
|
||||
"prompt_number": 4
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -416,7 +418,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 6
|
||||
"prompt_number": 5
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -442,7 +444,7 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 7
|
||||
"prompt_number": 6
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -471,7 +473,7 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 8
|
||||
"prompt_number": 7
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -484,55 +486,22 @@
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import matplotlib.pylab as pylab\n",
|
||||
"from matplotlib import cm\n",
|
||||
"from mpl_toolkits.mplot3d import Axes3D\n",
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"pylab.rcParams['axes.color_cycle'] = '348ABD, 7A68A6, A60628, 467821, CF4457, 188487, E24A33'\n",
|
||||
"\n",
|
||||
"P = np.array([[8.,0],[0,4.]])\n",
|
||||
"mu = np.array([2,7])\n",
|
||||
"\n",
|
||||
"xs, ys = np.arange(-8, 13, .5), np.arange(-8, 20, .5)\n",
|
||||
"xv, yv = np.meshgrid (xs, ys)\n",
|
||||
"\n",
|
||||
"zs = np.array([100.* multivariate_gaussian(np.array([x,y]),mu,P) \\\n",
|
||||
" for x,y in zip(np.ravel(xv), np.ravel(yv))])\n",
|
||||
"zv = zs.reshape(xv.shape)\n",
|
||||
"\n",
|
||||
"ax = plt.figure().add_subplot(111, projection='3d')\n",
|
||||
"ax.plot_surface(xv, yv, zv, rstride=1, cstride=1, cmap=cm.autumn)\n",
|
||||
"\n",
|
||||
"ax.set_xlabel('X')\n",
|
||||
"ax.set_ylabel('Y')\n",
|
||||
"\n",
|
||||
"ax.contour(xv, yv, zv, zdir='x', offset=-9, cmap=cm.autumn)\n",
|
||||
"ax.contour(xv, yv, zv, zdir='y', offset=20, cmap=cm.BuGn)\n",
|
||||
"plt.xlim((-10,15))\n",
|
||||
"plt.ylim((-10,20))"
|
||||
"import mkf_internal\n",
|
||||
"mkf_internal.plot_3d_covariance((2,7), np.array([[8.,0],[0,4.]]))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 9,
|
||||
"text": [
|
||||
"(-10, 20)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e17a9310>"
|
||||
"<matplotlib.figure.Figure at 0x7f598b46b9d0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 9
|
||||
"prompt_number": 8
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -572,11 +541,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e175db90>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ae5a6d0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 10
|
||||
"prompt_number": 9
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -660,11 +629,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF/CAYAAABKRQ+VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHBpJREFUeJzt3XuMnXWBPvDnzLTTewstWCi2Fkq3sGX4lYpEERdYSUVi\nGy6imLo1alekird4zUaMlz+8IMSYuGtXg6iwSJRgu1kJIhdFDcZWoGhb5Latl7ZTp6U3WqYz8/vD\nZbTS6Tsgc873hc8nIeGdczrnS/N0+nDmOWca69ev7w8AALzAtbX6AAAAUALFGAAAohgDAEASxRgA\nAJIoxgAAkEQxBgCAJMmIVh/gKd3d3dm9e3erjwEAwPNYR0dHpk6detDbiinGu3fvzvz581t9DHia\nlStXZuHCha0+BhyUfFIq2aRUq1evHvQ2UwqosGHDhlYfAQYln5RKNqkjxRgAAKIYQ6Vzzjmn1UeA\nQcknpZJN6kgxhgpz5sxp9RFgUPJJqWSTOlKMocLdd9/d6iPAoOSTUskmdaQYAwBAFGOodMYZZ7T6\nCDAo+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy\n+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRU\nskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkd\nKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYA\nABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDF\nGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZ\nyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy\n+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRU\nskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkd\nKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYA\nABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDF\nGCrZyVEy+aQUvb3Jgw+25frrO7Js2dhcdtmo3HjjyDz0UFv6+lp9OhiaEc14kG3btmXp0qXZv39/\n+vv78853vjPnnXdeMx4aABhme/Yk//3fI/Pe947Lvn2NgY9/5zvJmDH9+cpXdufcc3syalQLDwlD\n0Fi/fn3/cD/I/v3709PTkzFjxmTbtm0577zz8tOf/jRtbX95wnrjxo2ZP3/+cB8FAHiO/eAHI7J4\n8fgkjYPe3mj057vf3ZWzz97f3IPBQaxevTrTp08/6G1NmVKMGDEiY8aMSZLs2LEjHR0dzXhYAGCY\nbd7cyEc/OjaDleIk6e9v5N/+bUy6uwe/D5SgaRvj3bt3Z+HChVm0aFE+/vGPH/BsMZTMhpOSySet\n9uCD7dm4sb3yfuvWjciDD/q7n7I1ZWOcJOPGjcvKlSvz8MMP553vfGdOP/30jB07tlkPDwAMg2fy\nLPC2bZ4xpmxNK8ZPmTVrVqZNm5aHH344nZ2dB9y2bNmyzJgxI0kyadKkdHZ2DrwP4lPPirh23ezr\nM844o6jzuHYtn65Luu7p2ZVkfIaio6P153X9wrtes2ZNHn/88STJhg0bsnTp0gymKS++27x5czo6\nOnL44Yenq6srF110Ub7//e/n8MMPH7iPF98BQP2sX9+Ws86aeMC7URzM+PH9ufPOHTnuOO/dRmu1\n/MV3f/zjH7NkyZIsXLgwb3vb2/LRj370gFIMJXvq/z6hRPJJq82a1ZelS/dV3u/yy/fm2GOVYso2\nohkPMm/evKxcubIZDwUANNGIEck73rE3993XnrvvHnnQ+yxY8GQWL96XhokxhfPyUKjw1E4JSiSf\nlGD69P78+7/vzn/8x64cf/z+gY+fcML+/Od/7srVV+/JtGnDvtyEv1tTnjEGAJ7fjjmmP294Q0/+\n+Z/3509/aqTRSI44oj+TJyvE1IdnjKGCDSclk09Kc8QR/Zkzpy9btvxYKaZ2FGMAAIhiDJVsOCmZ\nfFIq2aSOFGMAAIhiDJVsOCmZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq\n2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSO\nFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMA\nAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhi\nDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs\n5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZ\nfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq\n2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSO\nFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMA\nAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOFGMAAIhiDJXs5CiZfFIq2aSOhlyMe3p6\n8tBDD+Xee+9NkjzxxBPZu3fvsB0MAACaacRQ7rRx48Zcf/31GTduXLq7uzNv3rw88sgjuf/++/Om\nN71puM8ILWUnR8nkk1LJJnU0pGeMV6xYkQsuuCDvfve709b2518ye/bsPPbYY8N5NgAAaJohFePt\n27dn9uzZB3ysvb09fX19w3IoKImdHCWTT0olm9TRkIrx1KlTs2rVqgM+tnbt2hx99NHDcigAAGi2\nxvr16/ur7rRp06Z84xvfyIQJE7Jly5Ycd9xx2bx5c5YsWZKjjjrqOTnIxo0bM3/+/OfkcwEAwMGs\nXr0606dPP+htQ3rx3VFHHZX3v//9WbduXXbs2JFJkyZlzpw5GTVq1HN6UACGZsuWRvbta2TkyP5M\nndqfRqPVJwKovyG/XVt7e3uOPfbYdHZ2ZsaMGXniiSeyffv24TwbFMFOjpI8+GBbli/vyKtfPTGn\nnDIxZ5wxMV/4wuisWdOe/srv/0Hz+NpJHQ3pGeObb745999/f0aPHj3wrhRP+eAHP1j56zdv3pz3\nve992blzZzo6OvLBD34wp59++rM7McAL1K9+1Z6LLx6f7u6/fB3u7m7ks58dk6uvHp3rrtuVs8/e\n79ljgGdpSBvjz372s3nf+96X0aNHP6sH+dOf/pStW7dmzpw5+cMf/pBLLrkkP/7xjw+4j40xwOAe\ne6wtCxZMyNatg3+jb9So/tx66450dnrHIIDB/N0b45e+9KW59tprM2XKlDT+6qmIRqORCy+8sPLX\nT5kyJVOmTEmSTJs2LT09Penp6cnIkSOH8vAAL3j33tt+yFKcJPv2NXLrrR3p7PRTSQGejSFtjFet\nWpVjjz02M2fOzLHHHjvwz8yZM5/xA/7kJz/J3LlzlWJqw06OVtu/P7nmmo4h3fdrXxuVzZttKWg9\nXzupoyE9Yzxt2rQcd9xxmTx58tOeMX4murq68vnPfz5f+cpXDnr7smXLMmPGjCTJpEmT0tnZOfAj\nJZ/6A+batWvXL7TrNWvWZ/v2UzMUjz/eyIYNf8xvf/tQMed3/cK8fkop53H9wr1es2ZNHn/88STJ\nhg0bsnTp0gxmSBvjK6+8ctDbhvLiuyTZt29f3vrWt2bZsmUDh/1rNsYAB9fXl7ztbeOyYkX1s8bH\nHdebW2/dkcmTm3AwgBr6uzfGQy2/g+nv78/HPvaxvO51rztoKQZgcG1tyZIl+4ZUjN/73r1KMcCz\nNOT3MT6Ym266aUj3W7VqVW699dbceOONOf/883P++eenq6vr73loaJq//bYgtMI//mNvTjll/yHv\nM3VqX17xikPfB5rF107qaEjPGA/mgQceGNK7Upx66ql54IEH/p6HAnhBO+qo/ixfvjuXXjo2q1c/\n/cXLxxzTm+uv35Xjj/dWbQDP1qDF+I477sjZZ5+dJLntttsOep/e3t7hORUUxPyHUsya1Zfrrtud\ntWvbc/31HXn00fYceWRf/uVf9uWkk3ozfboffUc5fO2kjgYtxjt37hz495/85Cc5+eSTm3IgAAY3\ndWp/pk7dn7PO2p+9e5NRo+In3QE8RwYtxosWLRr49/b29lx00UVPu8+vf/3r4TkVFOTuu+/2zAdF\nGj1aPimXbFJHQ3rx3Rve8IaDfnywt7oAAIC6OeT7GH/5y1/O5Zdf3pSDeB9jAACG26Hex/iQzxhv\n27ZtWA4EAAClqZxSdHd3H/IfeL7zXpyUTD4plWxSR4d8H+Oenp5cffXVh/wEn/70p5/TAwLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e11b4b10>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ad88410>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 11
|
||||
"prompt_number": 10
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -687,11 +656,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e12a12d0>"
|
||||
"<matplotlib.figure.Figure at 0x7f598a863190>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 12
|
||||
"prompt_number": 11
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -712,13 +681,13 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAF/CAYAAABdZ59cAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcXmV9///3uZfZMpM9ZCOBhCUkELRRH7YSTYggZVMD\nooDbw5avv8oDq5ZWFFu1bui31W8rtmjd4Nuy1FpL1S9V2RIYWZQEhJCFYIDJnpBMwmyZezu/Pw5n\nzn7ue5Y75545r+fj4aNzz0xmbpp8zudzXdfnui5j27ZtpgAAAACEyiT9BgAAAIBGRsEMAAAAxKBg\nBgAAAGJQMAMAAAAxKJgBAACAGBTMAAAAQIxc0m8gzuHDh9XX15f02wAAAMAE19TUpNmzZ4d+raEL\n5r6+Pq1YsSLpt4ER+tnPfqZLL7006bcBpA6xBySD2BvfNm7cGPk1WjJQN11dXUm/BSCViD0gGcTe\nxEXBDAAAAMSgYEbdnHfeeUm/BSCViD0gGcTexEXBjLpZsmRJ0m8BSCViD0gGsTdxUTCjbjo7O5N+\nC0AqEXtAMoi9iYuCGQAAAIhBwYy6WblyZdJvAUglYg9IBrE3cVEwAwAAADEomFE39HIBySD2gGQQ\nexMXBTMAAAAQg4IZdUMvF5AMYg9IBrE3cVEwAwAAADEomFE39HIBySD2gGQQexMXBTMAAAAQg4IZ\ndUMvF5AMYg9IBrE3cVEwAwAAADEomFE39HIBySD2gGQQexMXBTMAAAAQg4IZdUMvF5AMYg9IBrE3\ncVEwAwAAADEomFE39HIBySD2gGQQexMXBTMAAAAQg4IZdUMvF5AMYg9IBrE3cVEwAwAAADGOS8H8\nta99Teecc44uvfTSoc/dc889uuCCC3TBBRfowQcfPB5vA8cZvVxAMog9IBnE3sR1XArmt73tbfrO\nd74z9LpQKOjrX/+67rzzTt166636yle+cjzeBgAAADBsx6Vg/oM/+ANNnTp16PXTTz+t0047TdOn\nT9fcuXM1Z84cbd269Xi8FRxH9HIBySD2gGQQexNXLolfevDgQc2aNUt33XWXpkyZolmzZunAgQM6\n44wzkng7AAAAQKRECmbblVdeKUm69957ZRhG6Pdce+21WrhwoSRpypQpWr58+dAIzu4V4nVjvr7l\nllv4++I1rxN47e6jbIT3w2tep+W1/blGeT+8rv731dnZqa6uLknSNddcoyjGtm3bzMivjqFdu3bp\nIx/5iH72s59pw4YN+u53v6tvf/vbkqT3v//9+sxnPhOYYd65c6dWrFhxPN4e6qCzs3PoHyeA44fY\nA5JB7I1vGzdu1IIFC0K/ljvO70WStHz5cm3fvl2HDx/W4OCg9u/fTzvGBMRDA0gGsQckg9ibuI5L\nwfy3f/u3uvfee3XkyBGtWrVKn/vc53T99dfrqquukiTdeOONx+NtAAAAAMN23FoyRoKWjPGNpSkg\nGcQekAxib3yLa8ngpj8AAAAgBgUz6oZRNpAMYg9IBrE3cVEwAwAAADEomFE37nMOARw/xB6QDGJv\n4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu\n6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYu\nCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZe\nLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJg\nBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUC\nkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYA\nAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZ\nxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAA\nAGJQMKNu6OUCkkHsAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4qJgBgAAAGJQMKNu6OUCkkHs\nAckg9iYuCmYAAAAgBgUz6oZeLiAZxB6QDGJv4sol/Qa+9a1v6X/+538kSRdeeKGuu+66hN8RAAAA\n4Ei0YN65c6f++7//W7/85S9VLpd14YUXau3atZo/f36SbwtjhF4uIBnEHpAMYm/iSrRgbm9vVy6X\n07Fjx1SpVJTP59XR0ZHkWwIAAAA8Eu1hnjZtmj7wgQ9o9erVWr16tf7kT/5EkydPTvItYQzRywUk\ng9gDkkHsTVyJzjDv2rVLd911lx544AEVi0VdddVVWr16tWbNmjX0Pddee60WLlwoSZoyZYqWL18+\ntORh/8PkdWO+fuaZZxrq/fCa17zmNa95Xc/XtkZ5P7yu/vfV2dmprq4uSdI111yjKMa2bdvMyK/W\n2T333KNHHnlEX/rSlyRJf/EXf6F3vOMdWrVqlSSrx3nFihVJvT0AAACkxMaNG7VgwYLQryXakrFg\nwQI988wzKhQKOnbsmJ599tnINwoAAAAkIdGCefny5Tr//PO1du1aXX755Xr3u9+txYsXJ/mWMIb8\nS1QAjg9iD0gGsTdx5ZJ+A9dddx1nLwMAAKBhcdMf6sZurgdwfBF7QDKIvYmLghkAAACIQcGMuqGX\nC0gGsQckg9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiY\nAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgUzKgbermA\nZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkA\nAACIQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gG\nsQckg9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiYAQAA\ngBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgUzKgbermAZBB7\nQDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACI\nQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQck\ng9ibuCiYAQAAgBgUzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuCiYAQAAgBgU\nzKgbermAZBB7QDKIvYmLghkAAACIQcGMuqGXC0gGsQckg9ibuBIvmH/3u9/p0ksv1UUXXaSPf/zj\nSb8dAAAAwMPYtm2bmdQvr1QquvDCC3XTTTdpxYoV6u7u1rRp04a+vnPnTq1YsSKptwcAAICU2Lhx\noxYsWBD6tURnmDdt2qTp06cPFcXuYhkAAABoBIkWzHv37lVHR4euueYarV27VnfccUeSbwdjjF4u\nIBnEHpAMYm/iyiX5ywcHB7Vx40b9/Oc/V3t7uy6//HK9+c1vjpwOBwAAAI63RAvmWbNm6dRTT9Wc\nOXMkSWeddZZ27NjhKZivvfZaLVy4UJI0ZcoULV++fOicQ3skx+vGfG1/rlHeD695nZbXK1eubKj3\nw2te85rXjfja/rirq0uSdM011yhKopv+enp6dPHFF+tnP/uZWltbdfnll+ub3/ymFi1aJIlNfwAA\nADg+GnbTX0dHh2688UZ98IMf1GWXXaZLLrlkqFjG+FUsSk8/ndUddzwlM7HhGJA+pilt25bRbbc9\no0Ih6XcDpMuuXYZ+8INN6ulJ+p2gHmqeYS4Wi3rppZfU29ur1772tRoYGJBhGGppaanbm2OGefw5\neNDQe9/brqNHDXV3F7RqVVY339ynOv4zASBpcFD62Mfa9PDDeWWzfTrhhFbdfnuvZs9m1ArUk2lK\n//iPzbr55hZNm9ajY8c6dOedvVq+vJz0W8MwjXqGeefOnfrGN76hX/ziF/rpT38qSdqxY4f+67/+\na+zeJca9AwcMve1tHVq9uqjHHntFv/vdMZXL0uWXt6tYTPrdARNXqSS9+93tGhgw9NvfHtXvflfS\n+ecXdcEFHdq3z0j67QET2l//davuvrtJDz/8ip54oqIvfalfl1/ert/8Jpv0W8MYqqlg/ulPf6q1\na9fquuuuUyZj/ZHTTjtNL774Yj3fG8aZL36xVRddVNSNNx6TYUitrdL3vtenpibphz9sTvrtARPW\nbbc1yzSlH/6wT21tkmFIN9xwTO98Z1Ff+EJr0m8PmLB++9us7r67ST/9aY/mzbNWc975zqK+9rV+\nXX99m0qlhN8gxkxNBfORI0d02mmneT6XzWZVqVTq8qYw/jz5ZFb33ZfXDTcMDH2us7NTmYz0la/0\n6+//vkWHDjHTBYy17m5DX/tai266aUCvzmcM7QC//voBrV+f1xNPMNMFjLVKRfr0p9v02c8OaPJk\n63N27L3znUVNnWrqX/+1KcF3iLFUU8E8e/ZsbdiwwfO5LVu2aO7cuXV5Uxh/Pve5Vt14o/PQcFu6\ntKLLLivo7/+eRmZgrH3jGy269NKizjwz2C/Z0SH99V8P6LOfZZYZGGv/9V95GYZ0xRXBHbLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e179b9d0>"
|
||||
"<matplotlib.figure.Figure at 0x7f598a882e90>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 13
|
||||
"prompt_number": 12
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -743,13 +712,13 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAF/CAYAAABdZ59cAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VPW5P/DPOTOTSUIWyAoJWSGAAgLBBTUKKi4gVK1c\nxLZqtVqvy3Wptr+2ti7tvba9rdZarVZ7rdjbQttb9wqKgmBksRIWQYGwZGHJTkhCMts55/fHN2fO\nnJnJGMZJ5ox83q8XLzJMAgd9OHnO832+z1favXu3BiIiIiIiCkuO9wUQEREREVkZE2YiIiIiogiY\nMBMRERERRcCEmYiIiIgoAibMREREREQRMGEmIiIiIorAHu8LiKSjowPHjx+P92UQERER0ZdcUlIS\n8vPzw75n6YT5+PHjqKysjPdlEIX1xhtvYOHChfG+DKIQjE2yMsYnWVVNTc2A77ElgyhKDQ0N8b4E\norAYm2RljE9KREyYiYiIiIgiYMJMFKW5c+fG+xKIwmJskpUxPikRMWEmitLEiRPjfQlEYTE2ycoY\nn5SImDATRam6ujrel0AUFmOTrIzxSYmICTMRERERUQRMmImiVFVVFe9LIAqLsUlWxvikRMSEmYiI\niIgoAibMRFFiHx5ZFWOTrIzxSYmICTMRERERUQRMmImixD48sirGJlkZ45MSERNmIiIiIqIImDAT\nRYl9eGRVjE2yMsYnJSImzEREREREETBhJooS+/DIqhibZGWMT0pETJiJiIiIiCJgwkwUJfbhkVUx\nNsnKGJ+UiJgwExERERFFwISZKErswyOrYmySlTE+KRExYSYiIiIiioAJM1GU2IdHVsXYJCtjfFIi\nYsJMRERERBQBE2aiKLEPj6yKsUlWxvikRMSEmYiIiIgogmFJmH/xi1/g3HPPxcKFC/2/9tZbb+HS\nSy/FpZdeijVr1gzHZRDFFPvwyKoYm2RljE9KRMOSMF9yySX4/e9/73/t8Xjw2GOPYdmyZXjxxRfx\n6KOPDsdlEBERERGdsGFJmGfMmIGRI0f6X2/fvh0VFRXIysrCmDFjMHr0aOzatWs4LoUoZtiHR1bF\n2CQrY3xSIrLH4w9tbW1Fbm4uli9fjszMTOTm5qKlpQWTJk2Kx+UQEREREQ0oLgmzbsmSJQCAVatW\nQZKksJ9z++23o7i4GACQmZmJqVOn+p9O9T4ovubreLx+5plnGI98bcnXgT2iVrgevuZrxidfW/G1\n/nFDQwMA4Oabb8ZApN27d2sDvhtDBw8exG233YY33ngDmzdvxvPPP49nn30WAHDdddfhgQceCKkw\nNzY2orKycjguj+iEVVdX+//xEVkJY5OsjPFJVlVTU4OioqKw79mH+VoAAFOnTkVtbS06OjrgdrvR\n3NzMdgxKOLzhk1UxNsnKGJ+UiIYlYX7kkUewatUqdHZ2Yvbs2XjooYdw33334dprrwUA/PCHPxyO\nyyAiIiIiOmHD1pIRDbZkkJVxWZGsirFJVsb4JKuK1JLBk/6IiIiIiCJgwkwUJVZIyKoYm2RljE9K\nREyYiYiIiIgiYMJMFKXAOY5EVsLYJCtjfFIiYsJMRERERBQBE2aiKLEPj6yKsUlWxvikRMSEmYiI\niIgoAibMRFFiHx5ZFWOTrIzxSYmICTMRERERUQRMmImixD48sirGJlkZ45MSERNmIiIiIqIImDAT\nRYl9eGRVjE2yMsYnJSImzEREREREETBhJooS+/DIqhibZGWMT0pETJiJiIiIiCJgwkwUJfbhkVUx\nNsnKGJ+UiJgwExERERFFwISZKErswyOrYmySlTE+KRExYSYiIiIiioAJM1GU2IdHVsXYJCtjfFIi\nYsJMRERERBQBE2aiKLEPj6yKsUlWxvikRMSEmYiIiIgoAibMRFFiHx5ZFWOTrIzxSYmICTMRERER\nUQRMmImixD48sirGJlkZ45MSERNmIiIiIqIImDATRYl9eGRVjE2yMsYnJSImzEREREREETBhJooS\n+/DIqhibZGWMT0pETJiJiIiIiCJgwkwUJfbhkVUxNsnKGJ+UiJgwExERERFFwISZKErswyOrYmyS\nlTE+KRExYSYiIiIiioAJM1GU2IdHVsXYJCtjfFIiYsJMRERERBQBE2aiKLEPj6yKsUlWxvikRMSE\nmYiIiIgoAibMRFFiHx5ZFWOTrIzxSYmICTMRERERUQRMmImixD48sirGJlkZ45MSERNmIiIiIqII\nmDATRYl9eGRVjE2yMsYnJSImzEREREREETBhJooS+/DIqhibZGWMT0pETJiJiIiIiCJgwkwUJfbh\nkVUxNsnKGJ+UiJgwExERERFFwISZKErswyOrYmySlTE+KRExYSYiIiIiioAJM1GU2IdHVsXYJCtj\nfFIissf7Ap566imsWLECADBv3jzceeedcb4iIiIiIiJDXBPmxsZGvPbaa3j77behKArmzZuHq666\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e08ee910>"
|
||||
"<matplotlib.figure.Figure at 0x7f598a863490>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 14
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -810,13 +779,13 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtclGXi/vFrAGEUQRFRIw+lWfQtRVQ8IVpieSjN7bSp\naWr2K13LsoOautmmpa1+v1lZmbWVu6WZWa2VbLblAcvSytJSs0xACULzgHI+/P5AJkcYHOQG5pn5\nvF+vXjkzzzzPPRcPcHNzzYNtz549JQIAAAB8hF9dDwAAAACoTUyAAQAA4FOYAAMAAMCnMAEGAACA\nT2ECDAAAAJ/CBBgAAAA+hQkw4AHmzp2rqKgoRUVFadSoUXU9HGO++OILRUVFKS0tzen+Xbt2OV5v\nRY+j1OrVqxUVFVXhY1FRUXr33Xdr9PgHDhxQVFSUtm7dWqPHqW3e+roAuI8JMFBNZ05ECgoKNGnS\nJA0YMEAZGRlu7ePee+9VUlKSxo4dK5vNVlNDNeb0yWvZf5deemm519u5c2dt3rxZLVq0cLr/4osv\n1ubNm/XWW2+d9Vj9+vXTs88+a3T8VdWvXz/H64yJidF1112nVatW1emYNm/erEGDBp3z86dNm3bW\nH7YiIyO1efNmderU6ZyPUx0V/QBQ15PXmv7BIy8vT//3f/+nq666Sh07dlTfvn1133336dixY07b\nPfPMM+rXr1+NjQPwdgF1PQDAmxQWFmrKlCnau3evli1bpubNm7v1vODgYAUHB6tBgwYqKbHG36aZ\nMWOGBg8e7HRfkyZNnG7Xq1dP4eHh5Z7r7++v8PBw5eTk1OgYTRo3bpxuv/12nThxQm+//bZmzpyp\nkJAQDRgwoE7GU1Gupvn5+dXKcayi7HOzJj9H586dq82bN2v27Nlq166dDh48qLVr1yonJ0eNGjWq\nseMCvoYVYMCQssnvjz/+WG7yO2/ePA0aNEjR0dHq2bOnZsyYoaysLLf3vXr1al133XUaPny4evbs\nqbfeeksJCQm68sor9eOPP0qS8vPzNX36dPXv318dOnRQnz59NH/+fOXn5zv288wzz2jUqFF64YUX\n1KtXL/Xs2VOLFi06p9cbEhKi8PBwp//KVq+3b99e7YpD2aprWlqann32Wce+zlwNfvHFF5WQkKDo\n6GgNGzZMn3zySbl9RUVFafny5Zo5c6a6du2qLl26aPHixVUaT4MGDRQeHq42bdpoypQpatOmjT76\n6CPH42Urkx999JEmTZqkmJgYde/e3Wml+O2339agQYPUsWNHDR48uNwK+A8//KAbb7xRHTp00M03\n36zk5ORy4+jQoYMji3feeafCsf7444+688471bVrV3Xt2lXjx49XSkqKpNKV37JVzK1btzr2NXr0\naMfzMzMznT5+X375ZbljZGVladq0aerevbuio6M1btw47du3z/F4Wf1l/fr1GjBggDp37qx77rlH\n2dnZbibunrJV4lWrVql3797q0qWLZs2a5XTeHz16VHfffbc6deqkhIQErV+/3mkf7nzulP2WQ5Km\nT5/uyOb01eD8/Hw9+eST6tOnj2JiYnTLLbfom2++qdLr+c9//qMxY8YoPj5ekZGRio2N1V//+lfH\nb1GeeeYZRUVFafHixUpLS3OMIyEhwWk/X3/9tUaOHKno6GhdeeWV5V7PqFGjdO+99+q+++5TdHS0\nEhIS9OGHH1ZprICVMQEGDCgsLNQDDzygPXv2VLjym5ubq5kzZ+qDDz7Q4sWL9c0332j27NlVOsbB\ngwf1yCOPqEePHpo/f74WL16szp07a/ny5ZJKqxeBgYF64okn9J///Efz5s3TmjVryk0Yd+7cqePH\nj2vFihUaP368nn/+eX333XdVfs2VrYJdfvnl2rx5s5555pkq77fM22+/raSkJLVo0ULjxo3T5s2b\ntXnzZo0bN86xzf/+7//qjTfe0F//+ld98MEHGjlypO655x59//335fa3dOlStWjRQitXrtQrr7yi\nCy+88JzHJkmBgYEqLCwsd//ChQvVvXt3vfvuu3r22WcVEREhSXrzzTc1b9483X333Vq7dq0mT56s\nxx9/XB9//LGkP6ozkZGReu+99zRmzBgtW7asXCVmw4YNSkpKkqQK6zK//vqrRo4cKX9/f7366qt6\n8803deWVVyo9PV2SNHPmTCUlJWnQoEGKiYlx5Hr6edK0aVOnikpFx5kzZ46++uorLV68WG+99ZZs\nNpsmTJigoqIip+1WrlypxYsX6+mnn9bGjRv1+uuvu51xVbzzzjt6+eWX9eyzz+rTTz/V888/73js\nscce088//6xly5ZpwYIF+uc//+n0XHc+dzZv3uzIfcaMGY7cTq+hTJ8+XUlJSVq4cKH+/e9/q0+f\nPho3bpzbVSip9AfLzz//3OVvR26//XZt3rxZY8eOVYsWLRzjOP0Hrd27d2vs2LGKi4vTmjVrtGDB\nAm3cuFF///vfnfa1bt06tWvXTu+9955uuOEGPfjgg9q/f7/bYwWsjAkwYMDTTz+txMREtW/fvsLa\nw+zZsxUXF6eWLVuqc+fOGj58eLlVqLNp27atoqKiFBsbq3bt2ikqKkpdu3bVwYMHJZXWKB599FHF\nxsYqMjJSvXr10rXXXlvuOA0bNtSDDz6o1q1b6/bbb1fDhg21Y8eOKr/mRx55RDExMY7/pk6d6ngs\nICBA4eHhCg0NrfJ+y4SFhalp06by8/NzrL6Gh4erQYMGkqSTJ0/q1Vdf1bRp09S3b1+1bNlSN910\nk7p3715ht/jyyy/XpEmT1LZtW8cK7LkoKCjQihUrtHfvXvXq1avc4/369dOoUaPUpk0bxcbGqm/f\nvpKkxYsX66677tLgwYN1/vnna8CAARoyZIjefPNNSVJSUpJ+/fVX/fWvf1Xbtm01ePBgXXvtteV+\n0GjSpImaNm3qcnzLly+X3W7XU089pcsvv1zt2rXTyJEj1a1bN0mlH/+mTZsqKCjI8XE682Nls9kU\nHh6usLCwCo9x4sQJvf/++5o8ebK6du2qiy++WHPmzFFycrJjkljm/vvv10UXXaTevXurR48e53Su\nueOhhx7SJZdcop49e2r06NFasWKFJOn48eNKTEzUpEmT1LFjR8XExGjSpElOz3Xncyc8PNyR++m/\n/QgKCpIk7d+/Xx988IHmzp2r2NhYtWrVShMnTlSLFi3073//2+3X8cgjj+irr75Sz549NW7cOP3j\nH//Q4cOHHY+XfS40aNDAUVE582P10ksvqUePHpo4caJat26tLl26aOLEieU+L9q0aaNJkybpggsu\ncGy7cuVKt8cKWBkdYMCABg0aaPHixbrnnnv01ltv6aabbnJ6fN26dXr11VeVnJyskydPqqioqMLV\nw8qUfaO12+0KDAx03Jebm+vYZuXKlVq5cqXS0tKUk5OjgoICnXfeeU77adWqldOKXmhoqI4ePVql\nsUjS5MmTdfXVVztul01Ma8vPP/+s/Px8TZs2TdOnT3fcX1BQUOH2Xbp0qdbxXnjhBb388svKz8+X\n3W7XnXfeqT//+c9uHefw4cP67bff9PTTTzutKhYUFKhly5aSpOTkZDVu3NhpcnvJJZdUeZy7du1S\ndHS04xypCampqSoqKnJ6g9p5552nRo0aOaoWZU5faW/cuHGNXfHj4osvdvy7ffv2OnLkiE6cOKED\nBw6oqKjIKcuKcnXnc6cyP/zwgyQ5VUmk0lpEamqq2/uJj4/Xhg0b9Nlnn2nr1q1asWKFlixZomXL\nlrl9Pvzwww9KSUlRTEyM477i4mLl5+crMzPT8VuJ9u3bOz2vffv25T5+gLdiAgwYcOeddyohIUH/\n7//9Pz3++OPq1q2b2rRpI0n69ttvdd999+m+++5TXFycgoODtWbNGj399NNGjl22Qrh27Vo98cQT\nevjhh9WpUyfZ7XYtXbq03Iqcv7+/y31URXh4uFq1anVugzZo0aJFatu2rdN9ZT8snK66byAaPny4\nRo8e7ViBc6Wy48yYMUM9e/Z0ui8gwOyXYZvN5vbHszauOOLn5/yLxqqca5Vlc+Zjrl6LO6/R3c8d\ndyxfvlzBwcFO9515+2zsdrv69eunfv366f7779f111+vV155RfPmzXPr+TabTdddd53uuuuuco+d\n+UZVwFcxAQYMKPsm+5e//EXr16/Xgw8+qOXLl8vf319fffWVLr74Yt1+++2O7dPT0yv8xtygQQOn\nFd2q2LZtm+Lj451Wnw8ePOjRl1UrWzWu7GoQ9erVq3C1vG3btgoMDFRaWpqjZlCTGjVqdM4T/vDw\ncDVv3lwpKSm6+eabK9zmggsu0NGjR51W6Pbs2VPlj9+ll16q1atXKz8/v9JVYFe5uqNly5by8/PT\nrl27dNFFF0mS0tLSdOzYMbVu3brS51bl9ZT9MJGbmyu73S5JjjfRnfmDxp49exQdHS1J2rt3r8LC\nwtSwYUO1bNlS/v7+2rNnj9q1a+fY9nRV+dwJCAioMLeyN8j99ttv6tOnj9uv8WwCAgJ0/vnnl3vz\nYL169cr1rU8fy08//XTW87XsDbSn3+bSavAVdIABgwICAjR//nzt2rXL8avutm3bat++ffr000+V\nmpqq119/Xf/5z38qXAnr2LGjdu3apc2bNyszM1MnT550+9ht27bVV199pa1bt2r//v169tln9c03\n39TJZdXKJnJl1y49fPiwMjMzdeLECaftmjRpovPPP19vvPGG0tPTnbqOZS688EJ99tlnysjIUF5e\nnuObfsOGDTV69Gg99dRTeuedd5SSkqLt27dr0aJFWrt2bc2/yCq66667tGzZMi1btky//PKLdu7c\nqZdeesnxprD4+Hidf/75jjdsffjhh/rggw+c9pGdna3MzExlZmZKKu23ZmZm6vfff3dsM3Line truncated
|
||||
"png": "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\nqlWrNGvWLG3atEl/+9vfXMb67LPP1KBBA3300Ue6++679Ze//EU///xzqecKeDMCMOABr776quLj\n49WwYcNi2x6mTp2q9u3bq06dOmrRooUGDhxYZBfqUurXr6/IyEi1atVKDRo0UGRkpFq2bKmDBw9K\nOtdG8dxzz6lVq1aqXbu22rVrp169ehV5nqpVq+ovf/mL6tatq4ceekhVq1bVnj17yvw5P/vss2re\nvLnzvwkTJjjv8/PzU1hYmEJCQso8bqHQ0FBdc8018vHxce6+hoWFqUqVKpKkU6dO6a233tLEiRPV\nqVMn1alTR3/84x916623FttbfMstt2j06NGqX7++cwf2cuTk5GjZsmXav3+/2rVrV+T+Ll26aPDg\nwapXr55atWqlTp06SZLmzp2rESNGqGfPnrr++uvVrVs39e7dW++9954kKSEhQb/88oueeeYZ1a9f\nXz179lSvXr2K/KBRo0YNXXPNNSXOb+nSpQoMDNQrr7yiW265RQ0aNNB9992n1q1bSzpX/2uuuUaV\nKlVy1uniWjkcDoWFhSk0NLTY5zh58qQ+/vhjjRkzRi1bttTNN9+sadOmKTk52RkSC40fP1433XST\nOnTooDZt2lzW11ppPPnkk2rUqJHatm2rIUOGaNmyZZKkEydOKD4+XqNHj1bTpk3VvHlzjR492uWx\npVk7YWFhztf9wt9+VKpUSZL0888/65NPPtELL7ygVq1aKSIiQqNGjVKtWrX073//u9Sfx7PPPqsd\nO3aobdu2GjZsmP7+97/r6NGjzvsL10KVKlWcLSoX12rx4sVq06aNRo0apbp16yo6OlqjRo0qsi7q\n1aun0aNH64YbbnCeu3z58lLPFfBm9AADHlClShXNnTtXjz32mFasWKE//vGPLvd/9tlneuutt5Sc\nnKxTp04pLy+v2N1Ddwr/oQ0MDFRAQIDztqysLOc5y5cv1/Lly5WWlqYzZ84oJydH1113ncs4ERER\nLjt6ISEh+u2338o0F0kaM2aM7rjjDudxYTC9Wn744QedPXtWEydO1FNPPeW8PScnp9jzo6Ojr+j5\nFixYoDfeeENnz55VYGCgHnnkEf3pT38q1fMcPXpUhw8f1quvvuqyq5iTk6M6depIkpKTk1W9enWX\ncNuoUaMyz3Pv3r2Kiopyfo2Uh9TUVOXl5bm8Qe26665TtWrVnK0WhS7caa9evXq5XfHj5ptvdn7c\nsGFDHTt2TCdPntSBAweUl5fn8loW97qWZu248+2330qSSyuJdK4tIjU1tdTjxMTEaOPGjdq6dau2\nb9+uZcuWaeHChVqyZEmpvx6+/fZbpaSkqHnz5s7b8vPzdfbsWWVkZDh/K9GwYUOXxzVs2LBI/QBT\nEYABD3jkkUcUGxur//3f/9WLL76o1q1bq169epKk3bt36/HHH9fjjz+u9u3bKygoSKtWrdKrr77q\nkecu3CFcs2aNpk+frqefflrNmjVTYGCgFi1aVGRHztfXt8QxyiIsLEwRERGXN2kPmj17turXr+9y\nW+EPCxe60jcQDRw4UEOGDHHuwJXE3fNMmjRJbdu2dbnNz8+z34YdDkep63k1rjji4+P6i8ayfK25\ne20uvq+kz6U0n2Np105pLF26VEFBQS63XXx8KYGBgerSpYu6dOmi8ePH66677tKbb76pGTNmlOrx\nDodDffv21YgRI4rcd/EbVQG7IgADHlD4j+yf//xnbdiwQX/5y1+0dOlS+fr6aseOHbr55pv10EMP\nOc8/dOhQsf8wV6lSxWVHtyy+/PJLxcTEuOw+Hzx40NKXVSvcNXZ3NQh/f/9id8vr16+vgIAApaWl\nOdsMylO1atUuO/CHhYXp2muvVUpKiu69995iz7nhhhv022+/uezQJSUllbl+f/jDH7Ry5UqdPXvW\n7S5wSa9radSpU0c+Pj7au3evbrrpJklSWlqajh8/rrp167p9bFk+n8IfJrKyshQYGChJzjfRXfyD\nRlJSkqKioiRJ+/fvV2hoqKpWrao6derI19dXSUlJatCggfPcC5Vl7fj5+RX7uhW+Qe7w4cPq2LFj\nqT/HS/Hz89P1119f5M2D/v7+RfqtL5zL999/f8mv18I30F54zKXVYBf0AAMe5Ofnp5kzZ2rv3r3O\nX3XXr19fP/74o/7zn/8oNTVV77zzjj799NNid8KaNm2qvXv3asuWLcrIyNCpU6dK/dz169fXjh07\ntH37dv3888+aM2eOvvrqqwq5rFphkCu8dunRo0eVkZGhkydPupxXo0YNXX/99Xr33Xd16NAhl17H\nQjfeeKO2bt2q9PR0ZWdnO//Rr1q1qoYMGaJXXnlF//rXv5SSkqJdu3Zp9uzZWrNmTfl/kmU0YsQI\nLVmyREuWLNFPP/2kxMRELV682PmmsJiYGF1//fXON2ytXr1an3zyicsYp0+fVkZGhjIyMiLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7f93e0339cd0>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ad88a10>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 15
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
@@ -835,8 +804,8 @@
|
||||
"\n",
|
||||
"> $$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\hat{\\mathbf{x}}_{k|k-1} &= \\mathbf{\\Phi_k}\\hat{\\mathbf{x}}_{k-1} + \\mathbf{B u}_k\\;\\;\\;&(1) \\\\\n",
|
||||
"\\mathbf{P}_{k|k-1} &= \\mathbf{\\Phi_kP}_{k-1}\\mathbf{\\Phi}^T_k + \\mathbf{Q}_k\\;\\;\\;&(2)\n",
|
||||
"\\hat{\\textbf{x}}^-_{k+1} &= \\mathbf{F}_{k}\\hat{\\textbf{x}}_{k} + \\mathbf{B}_k\\mathbf{u}_k\\;\\;\\;&(1) \\\\\n",
|
||||
"\\textbf{P}^-_{k+1} &= \\mathbf{F}_k \\textbf{P}_k\\mathbf{F}_k^T + \\textbf{Q}_{k}\\;\\;\\;&(2)\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
@@ -844,11 +813,11 @@
|
||||
"\n",
|
||||
">$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\tilde{\\textbf{y}}_k &= \\textbf{z}_k - \\textbf{H}_k\\hat{\\textbf{x}}_{k\\mid k-1}\\;\\;\\;&(3) \\\\\n",
|
||||
"\\textbf{S}_k &= \\textbf{H}_k \\textbf{P}_{k\\mid k-1} \\textbf{H}_k^\\text{T} + \\textbf{R}_k\\;\\;\\;&(4) \\\\\n",
|
||||
"\\textbf{K}_k &= \\textbf{P}_{k\\mid k-1}\\textbf{H}_k^\\text{T}\\textbf{S}_k^{-1}\\;\\;\\;&(5) \\\\\n",
|
||||
"\\hat{\\textbf{x}}_{k\\mid k} &= \\hat{\\textbf{x}}_{k\\mid k-1} + \\textbf{K}_k\\tilde{\\textbf{y}}_k \\;\\;\\;&(6)\\\\\n",
|
||||
"\\textbf{P}_{k|k} &= (I - \\textbf{K}_k \\textbf{H}_k) \\textbf{P}_{k|k-1}\\;\\;\\;&(7)\n",
|
||||
"\\textbf{y}_k &= \\textbf{z}_k - \\textbf{H}_k\\hat{\\textbf{}x}^-_k\\;\\;\\;&(3) \\\\\n",
|
||||
"\\mathbf{S}_k &= \\textbf{H}_k\\textbf{P}^-_k\\textbf{H}_k^T + \\textbf{R}_k \\;\\;\\;&(4) \\\\\n",
|
||||
"\\textbf{K}_k &= \\textbf{P}^-_k\\textbf{H}_k^T\\mathbf{S}_k^{-1}\\;\\;\\;&(5) \\\\\n",
|
||||
"\\hat{\\textbf{x}}_k &= \\hat{\\textbf{x}}^-_k +\\textbf{K}_k\\textbf{y} \\;\\;\\;&(6)\\\\\n",
|
||||
"\\mathbf{P}_k &= (\\mathbf{I}-\\mathbf{K}_k\\mathbf{H}_k)\\mathbf{P}^-_k\\;\\;\\;&(7)\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
@@ -859,7 +828,13 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"These are nothing more than linear algebra equations that implement the algorithm we used in the last chapter, but using multidimensional Gaussians instead of univariate Gaussians, and optimized for a least squares fit. Each capital letter denotes a matrix or vector. The subscripts indicate which time step the data comes from; $k$ is now, $k-1$ is the previous step. $A^T$ is the transpose of the matrix A, and $A^{-1}$ is the inverse. Finally, the hat denotes an estimate, so $\\hat{x}_k$ is the estimate of $x$ at time $k$."
|
||||
"These are nothing more than linear algebra equations that implement the algorithm we used in the last chapter, but using multidimensional Gaussians instead of univariate Gaussians, and optimized for a least squares fit.\n",
|
||||
"\n",
|
||||
" The subscripts indicate which time step the data comes from; $k$ is now, $k+1$ is the next step. $A^T$ is the transpose of the matrix A, and $A^{-1}$ is the inverse. Finally, the hat denotes an estimate, so $\\hat{x}_k$ is the estimate of $x$ at time $k$.\n",
|
||||
"\n",
|
||||
"Different texts use different notation and variable names for the Kalman filter. Later we will expose you to these different forms to prepare you for reading the original literature. In the equations above I have adopted the variable names used by the Wikipedia article[2] on Kalman filters. Each bold letter denotes a matrix or vector. The subscripts indicate which time step the data comes from; $k$ is now, $k+1$ is the next step. The caret (^) indicates that the value is an estimate. Finally, I particularly like how Brown [3] uses a raised $^-$ to denote a prediction, and so I have adopted that approach. For a matrix $\\mathbf{A}$, $\\mathbf{A}^T$ signifies its transpose, and $\\mathbf{A}^{-1}$ its inverse. So, taken together, $\\hat{\\mathbf{x}}^-_{k+1}$ represents the prediction for the estimate of $\\mathbf{x}$ at time step $k+1$, where $\\mathbf{x}$ is some vector in the form $\\mathbf{x} = \\begin{bmatrix}x_1&x_2&..&x_n\\end{bmatrix}^T.$ The notation does not specify that $\\mathbf{x}$ is a column vector - we will learn the shapes and sizes of all of the variables later in the chapter.\n",
|
||||
"\n",
|
||||
"**author's note: do we really want to explain notation here?**\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -874,21 +849,19 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Different texts use different notation and variable names for the Kalman filter. Later we will expose you to these different forms to prepare you for reading the original literature. In the equations above I adopted the notation used by the Wikipedia article[2] on Kalman filters. I find the choices made there particularly clear and easy to read, and it has the added benefit of being open to all.\n",
|
||||
"\n",
|
||||
"However, I still find much of the notation very dense, and unnecessary for writing code. The subscripts indicate the time step, but we know the left hand side is for this time step, and the right hand side is for the previous step. For most of this book I'm going to use the following simplified equations, which express an algorithm.\n",
|
||||
"However, I still find the notation to be a bit dense, and unnecessarily complicated for writing code. The subscripts indicate the time step, but when we right code it is very clear what is being calculated at each time step. For most of this book I'm going to use the following simplified equations, which express an algorithm.\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\text{Predict Step}\\\\\n",
|
||||
"\\mathbf{x} &= \\mathbf{F x} + \\mathbf{B u}\\;\\;\\;&(1) \\\\\n",
|
||||
"\\mathbf{P} &= \\mathbf{FP{F}}^T + \\mathbf{Q}\\;\\;\\;&(2) \\\\\n",
|
||||
"\\mathbf{x}^- &:= \\mathbf{F x} + \\mathbf{B u}\\;\\;\\;&(1) \\\\\n",
|
||||
"\\mathbf{P } &:= \\mathbf{FP{F}}^T + \\mathbf{Q}\\;\\;\\;&(2) \\\\\n",
|
||||
"\\\\\n",
|
||||
"\\text{Update Step}\\\\\n",
|
||||
"\\tilde{\\textbf{y}} &= \\mathbf{z} - \\mathbf{H x} \\;\\;\\;&(3)\\\\\n",
|
||||
"\\mathbf{K}&= \\mathbf{PH}^T (\\mathbf{HPH}^T + \\mathbf{R})^{-1}\\;\\;\\;&(4) \\\\\n",
|
||||
"\\mathbf{x}&=\\mathbf{x} +\\mathbf{K\\tilde{\\textbf{y}}} \\;\\;\\;&(5)\\\\\n",
|
||||
"\\mathbf{P}&= (\\mathbf{I}-\\mathbf{KH})\\mathbf{P}\\;\\;\\;&(6)\n",
|
||||
"\\textbf{y} &:= \\mathbf{z} - \\mathbf{H x} \\;\\;\\;&(3)\\\\\n",
|
||||
"\\mathbf{K}&:= \\mathbf{PH}^T (\\mathbf{HPH}^T + \\mathbf{R})^{-1}\\;\\;\\;&(4) \\\\\n",
|
||||
"\\mathbf{x}&:=\\mathbf{x}^- +\\mathbf{K\\textbf{y}} \\;\\;\\;&(5)\\\\\n",
|
||||
"\\mathbf{P}&:= (\\mathbf{I}-\\mathbf{KH})\\mathbf{P}\\;\\;\\;&(6)\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$"
|
||||
]
|
||||
@@ -897,7 +870,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This is an algorithm, so $=$ denotes assignment, not equality. For example, equation (6) has P on both sides of the $=$. This equation updates the value of P by the computation on the right hand side. \n",
|
||||
"This is an algorithm, so $:=$ denotes assignment, not equality. For example, equation (6) has P on both sides of the $:=$. This equation updates the value of P by the computation on the right hand side; it does not imply that the two sides of the equation are equal (they are not). \n",
|
||||
"\n",
|
||||
"What do all of the variables mean? What is $\\mathbf{P}$, for example? Don't worry right now. Instead, I am just going to design a Kalman filter, and introduce the names as we go. Then we will just pass them into Python function that implement the equations above, and we will have our solution. Later sections will then delve into more detail about each step and equation. I think learning by example and practice is far easier than trying to memorize a dozen abstract facts at once. \n",
|
||||
"\n",
|
||||
@@ -934,18 +907,56 @@
|
||||
" \n",
|
||||
"That is the entire Kalman filter algorithm. It is both what we described above in words, and it is what the rather obscure Kalman Filter equations do. The Kalman filter equations just express this algorithm by using linear algebra. \n",
|
||||
"\n",
|
||||
"As I mentioned above, there is actually very little programming involved in creating a Kalman filter. We will just be defining several matrices and parameters that get passed into the Kalman filter algorithm code. Rather than try to explain each of the steps ahead of time, which can be a bit abstract and hard to follow, let's just do it for our by now well known dog tracking problem. Naturally this one example will not cover every use case of the Kalman filter, but we will learn by starting with a simple problem and then slowly start addressing more complicated situations.\n",
|
||||
"As I mentioned above, there is actually very little programming involved in creating a Kalman filter. We will just be defining several matrices and parameters that get passed into the Kalman filter algorithm code. Rather than try to explain each of the steps ahead of time, which can be a bit abstract and hard to follow, let's just do it for our by now well known dog tracking problem. Naturally this one example will not cover every use case of the Kalman filter, but we will learn by starting with a simple problem and then slowly start addressing more complicated situations."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"##### **Step 1:** Choose the State Variables and Set Initial Conditions\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"##### **Step 1:** Choose the State Variables\n",
|
||||
"In the previous 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",
|
||||
"*State variables* are the variables that the Kalman filter estimates. They include the *observed variables* - the data that is directly measured by a sensor, and the *unobserved variables*, which we can infer from the observed variables.\n",
|
||||
"In this chapter we will be tracking both the position and velocity of the dog, so we have two state variables. State variables can either be *observed variables* - directly measured by a sensor, or *unobserved variables* - inferred from the observed variables. For our dog tracking problem, our observed state variable is position, and th unobserved variable is velocity. \n",
|
||||
"\n",
|
||||
"For our dog tracking problem, our observed state variable is position, and the unobserved variable is velocity. \n",
|
||||
"In the previous chapter would denote the dog's position being 3.2 as:\n",
|
||||
"$$\\mu = 3.2$$\n",
|
||||
"\n",
|
||||
"In this chapter we will use the multivariate Gaussian as described at the beginning of this chapter. For example, if we wanted to specify a position of 10.0 and a velocity of 4.5, we would write:\n",
|
||||
"\n",
|
||||
"$$\\mu = \\begin{bmatrix}10.0\\\\4.5\\end{bmatrix}$$\n",
|
||||
"\n",
|
||||
"The Kalman filter is implemented using linear algebra. We use an $n\\times 1$ matrix to store $n$ state variables. For the dog tracking problem, we use $x$ to denote position, and the first derivative of $x$, $\\dot{x}$, for velocity. The Kalman filter equations use $\\mathbf{x}$ for the state, so we define $\\mathbf{x}$ as:\n",
|
||||
"\n",
|
||||
"$$\\mathbf{x} =\\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}$$"
|
||||
"$$\\mathbf{x} =\\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}$$\n",
|
||||
"\n",
|
||||
"We use $\\mathbf{x}$ instead of $\\mu$, but recognize this is just the mean of the multivariate Gaussian.\n",
|
||||
"\n",
|
||||
"The other half of the Gaussian is the covariance, $\\sigma^2$. The Kalman filter equations use the alternative symbol $\\mathbf{P}$, but it means the same thing. In the one dimensional Kalman filter we specified an initial value for $\\sigma^2$, and then the filter took care of updating it's value as measurements were added to the filter. The same thing happens in the multidimensional Kalman filter.\n",
|
||||
"\n",
|
||||
"In the last chapter we initialized the dog's position at 0.0, and set the $\\sigma^2=500$ to indicate that we were very unsure about this initial value. We need to do the same thing for the multidimensional Kalman filter. We will set the initial position to 0.0, the initial velocity to 0.0, and then set $\\sigma^2$ to a 500 for both the position and velocity to reflect our uncertainty. \n",
|
||||
"\n",
|
||||
"Recall that the diagonals of the covariance matrix contains the variance of each variable. So to initialize the Kalman filter to the values in the previous paragraph we would write:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\mathbf{x} &= \\begin{bmatrix}0 \\\\ 0\\end{bmatrix} \\\\\n",
|
||||
"\\mathbf{P} &= \\begin{bmatrix}500 & 0 \\\\ 0&500\\end{bmatrix} \\\\\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"I am often frustrated when books use the same value for multiple values, as it can be unclear which value in a matrix corresponds to which variable. ensure that there is no confusion let's look at the example of setting the initial position to 1, the initial velocity to 2.3, the $\\sigma^2$ of the position to 500, and the $\\sigma^2$ of the velocity to 400. In that case we would write:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\mathbf{x} &= \\begin{bmatrix}1 \\\\ 2.3\\end{bmatrix} \\\\\n",
|
||||
"\\mathbf{P} &= \\begin{bmatrix}500 & 0 \\\\ 0&400\\end{bmatrix} \\\\\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"We have chosen our state variables and set our initial conditions, so this step is complete."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -955,69 +966,81 @@
|
||||
"##### **Step 2:** Design State Transition Function\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"The next step in designing a Kalman filter is designing what is called the *State Transition Function.* This is a set of equations that mathematically describe the behavior of the system we are filtering. So, for the dog tracking problem we are tracking a moving object, so we just need the Newtonian equations for motion. In other words, these are the equations that we use to predict the next state from the current state. \n",
|
||||
"The next step in designing a Kalman filter is telling it how to predict the next state from the current state by providing it with equations that describe the physical model of the system. For example, for our dog tracking problem we are tracking a moving object, so we just need to provide it with the Newtonian equations for motion. If we were tracking a thrown ball we would have to provide equations for how a ball moves in a gravitational field, and perhaps include the effects of things like air drag. If we were writing a Kalman filter for a rocket we would have to tell it how the rocket responds to its thrusters and main engine. A Kalman filter for a bowling ball would incorporate the effects of friction and ball rotation. You get the idea. \n",
|
||||
"\n",
|
||||
"We know from elementary physics how to compute a new position given a previous position, velocity, and time, like so:\n",
|
||||
"In the language of Kalman filters the physical model is call the *process model*. That is probably a better term than *physical model* because the Kalman filter can be used to track non-physical things like stock prices. We describe the process model with a set of equations we call the *State Transition Function.* \n",
|
||||
"\n",
|
||||
"$$ \\hat{x} = {velocity}*{time} + x_{previous}$$\n",
|
||||
"\n",
|
||||
"In more formal mathematics we would write:\n",
|
||||
"We know from elementary physics how to compute a future position given our current position and velocity. Let $x$ be our current position, and $\\Delta t$ be the amount of time in the future, and $x^-$ be our predicted position. The velocity is then the derivative of $x$, which we notate as $\\dot{x}$. We can then write\n",
|
||||
"\n",
|
||||
"$$\\hat{x} = \\dot{x}(\\Delta t) + x$$\n",
|
||||
"$$x^- = \\dot{x}\\Delta t + x$$\n",
|
||||
"\n",
|
||||
"where $\\dot{x}$ is velocity, and $\\Delta t$ is the amount of time between $t-1$ and $t$. In our problems we will be running the Kalman filter at fixed time intervals, so $\\Delta t$ is a constant for us. We will just set it to $1$ and worry about the units later.\n",
|
||||
"Equation (1) of the Kalman filter $\\mathbf{x}^- = \\mathbf{Fx} + \\mathbf{B u}$ implements the *state transition function* that we are discussing. This requires us to formulate the motion equation above with matrices, so let's learn how to do that now. For the moment we will ignore the $\\mathbf{B u}$ term, as for our problem it turns out that it is equal to zero. Thus, we must express our equations in the form \n",
|
||||
"$\\mathbf{x}^- = \\mathbf{Fx}.$\n",
|
||||
"\n",
|
||||
"As in step one we must express this in the form of matrices so that our linear algebra software and solve the equations for us. The Kalman filter equations require that we write it in the form:\n",
|
||||
"A quick review on how to represent linear equations with matrices. Take the following two equations:\n",
|
||||
"$$2x+3y = 8\\\\3x-y=1$$\n",
|
||||
"\n",
|
||||
"$$ \\mathbf{\\hat{x}} = \\mathbf{Fx}$$\n",
|
||||
"We can put this in matrix form by writing:\n",
|
||||
"\n",
|
||||
"where as in step 1 $\\mathbf{x}$ is the matrix containing the state variables, and $\\mathbf{F}$ is the matrix that when multiplied by $\\mathbf{x}$ yields our equations. Note that this is just part of the Kalman filter equation (1) above. We will deal with the second half of equation (1) in the next step.\n",
|
||||
"\n",
|
||||
"Since $\\mathbf{x}$ is a $2{\\times}1$ matrix $\\mathbf{F}$ must be a $2{\\times}2$ matrix to yield another $2{\\times}1$ matrix as a result. The first row of the F is easy to derive:\n",
|
||||
"$$\n",
|
||||
"\\begin{bmatrix}2& 3 \\\\ 3& -1\\end{bmatrix}\\begin{bmatrix}x\\\\y\\end{bmatrix}=\\begin{bmatrix}8\\\\1\\end{bmatrix}$$\n",
|
||||
"If you perform the matrix multiplication in this equation the result will be the two equations above.\n",
|
||||
"\n",
|
||||
"So, given that $\\mathbf{x} = \\begin{bmatrix}x & \\dot{x}\\end{bmatrix}^T$ we can write:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"{\\begin{bmatrix}x\\\\\\dot{x}\\end{bmatrix}}' &=\\begin{bmatrix}1&\\Delta t \\\\ ?&?\\end{bmatrix} \\times \\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"\\mathbf{x}^- &= \\mathbf{Fx} \\\\\n",
|
||||
"\\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}^- &= \\mathbf{F}\\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"Since $\\mathbf{x}$ is a $2{\\times}1$ matrix $\\mathbf{F}$ must be a $2{\\times}2$ matrix to yield another $2{\\times}1$ matrix as a result. The first row of the F is easy to derive:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"{\\begin{bmatrix}x\\\\\\dot{x}\\end{bmatrix}}^- &=\\begin{bmatrix}1&\\Delta t \\\\ ?&?\\end{bmatrix} \\times \\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"When we multiply the first row of $\\mathbf{F}$ that out we get:\n",
|
||||
"\n",
|
||||
"$$ \n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\hat{x} &= 1 \\times x + \\Delta t * \\dot{x} \\mbox{, or} \\\\\n",
|
||||
"\\hat{x} &= \\dot{x}(\\Delta t) + x\n",
|
||||
"x^- &= 1 x + \\Delta t \\dot{x} \\mbox{, or} \\\\\n",
|
||||
"x^- &= \\dot{x}\\Delta t + x\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"which is our equation for computing the new position based on velocity, time, and the previous position.\n",
|
||||
"\n",
|
||||
"Now we have to account for the second row. I've let it somewhat unstated up to now, but we are assuming constant velocity for this problem. Naturally this assumption is not true; if our dog moves it must accelerate and deaccelerate. If you cast your mind back to the *g-h Filter* chapter we explored the effect of assuming constant velocity. So long as the acceleration is small compared to $\\Delta t$ the filter will still perform well. \n",
|
||||
"\n",
|
||||
"Therefore we will assume that\n",
|
||||
"\n",
|
||||
"$$\\hat{\\dot{x}} = \\dot{x}$$\n",
|
||||
"$$\\dot{x}^- = \\dot{x}$$\n",
|
||||
"\n",
|
||||
"which gives us the second row of $\\mathbf{F}$ as follows, once we set $\\Delta t = 1$:\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\hat{x} = {\\begin{bmatrix}x\\\\\\dot{x}\\end{bmatrix}} =\\begin{bmatrix}1&1 \\\\ 0&1\\end{bmatrix} \\times \\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"{\\begin{bmatrix}x\\\\\\dot{x}\\end{bmatrix}}^- =\\begin{bmatrix}1&1 \\\\ 0&1\\end{bmatrix} \\times \\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"Which, when multiplied out, yields our desired equations:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\hat{x} &= x + \\dot{x} \\\\\n",
|
||||
"\\hat{\\dot{x}} &= \\dot{x}\n",
|
||||
"x^- &= x + \\dot{x} \\\\\n",
|
||||
"\\dot{x}^- &= \\dot{x}\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"In the vocabulary of Kalman filters we call this *transforming the state matrix*. We take our state matrix, which for us is $(\\begin{smallmatrix}x \\\\ \\dot{x}\\end{smallmatrix})$,and multipy it by a matrix we will call $F$ to compute the new state. In this case, $F=(\\begin{smallmatrix}1&1\\\\0&1\\end{smallmatrix})$. \n",
|
||||
"In the vocabulary of Kalman filters we call this *transforming the state matrix*. We take our state matrix, which for us is $(\\begin{smallmatrix}x \\\\ \\dot{x}\\end{smallmatrix})$, and multipy it by a matrix we will call $\\mathbf{F}$ to compute the new state. In this case, $\\mathbf{F}=(\\begin{smallmatrix}1&1\\\\0&1\\end{smallmatrix})$. \n",
|
||||
"\n",
|
||||
"\n",
|
||||
"You will do this for every Kalman filter you ever design. Your state matrix will change depending on how many state random variables you have, and then you will create $F$ so that it updates your state based on whatever the physics of your problem dictates. $F$ is always a matrix of constants. If this is not fully clear, don't worry, we will do this many times in this book.\n",
|
||||
"\n",
|
||||
"Refer back to the first Kalman filter equation $\\hat{\\mathbf{x}}_{t|t-1} = \\mathbf{F_t}\\hat{\\mathbf{x}}_{t-1} + \\mathbf{B u}_t$. There is an unexplained $\\mathbf{B u}_t$ term in there, but shorn of all the diacritics it should be clear that we just designed $F$ for this equation!"
|
||||
"You will do this for every Kalman filter you ever design. Your state matrix will change depending on how many state random variables you have, and then you will create $\\mathbf{F}$ so that it updates your state based on whatever the physics of your problem dictates. $\\mathbf{F}$ is always a matrix of constants. Each row in $\\mathbf{F}$ is If this is not fully clear, don't worry, we will do this many times in this book."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1045,17 +1068,42 @@
|
||||
"source": [
|
||||
"##### **Step 4**: Design the Measurement Function\n",
|
||||
"\n",
|
||||
"Now we need a way to compute the state variables to our measurements. In our problem we have one sensor for the position, and it outputs position directly. We do not have a sensor for velocity. If we put this in linear algebra terms we get:\n",
|
||||
"The Kalman filter computes the update step in what we call *measurement space*. We mostly ignored this issue in the previous chapter because of the complication it adds. In the last chapter 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",
|
||||
"$$ residual = measurement - position$$\n",
|
||||
"\n",
|
||||
"However, consider what would happen if we were trying to track temperature using a thermometer that varies a voltage output depending on the temperature. The equation for the residual computation would be nonsense; you can't subtract a temperature from a voltage.\n",
|
||||
"\n",
|
||||
"$$ residual = z_{volts} - temp_C\\;\\;\\;(BAD!)$$\n",
|
||||
"\n",
|
||||
"The Kalman filter generalizes this problem by having you supply a *measurement function*. It is somewhat counterintuitive at first. As I already stated the Kalman filter performs its calculations in *measurement space.* It needs to do that because it only really makes sense to talk about the residual of the measurement in terms of the measurement. So it does something like this:\n",
|
||||
"\n",
|
||||
" residual = measurement - convert_to_measurement(predicted state)\n",
|
||||
"\n",
|
||||
"In other words, for the thermometer tracking problem, it would take the filter's current prediction of temperature, convert that to whatever voltage would represent that temperature, and then subtract it from the current thermometer voltage output. This gives it a residual in the correct units (volts).\n",
|
||||
"\n",
|
||||
"It does this with a *measurement function* matrix that you provide it. At first it might seem counterintuitive: to use the thermometer we need to know how to convert the output voltage into a temperature, but we tell the Kalman filter how to convert a temperature into a voltage!. But if you think about it, what you are really telling the filter is how your sensor works. Your sensor converts temperature into voltage, and you are just telling the Kalman filter how it does it. The Kalman filter equations can take that information and figure out how to perform the inverse operation without you explicitly telling it the computation.\n",
|
||||
"\n",
|
||||
"The Kalman filter equation that performs this step is:\n",
|
||||
"\n",
|
||||
"$$\\textbf{y} := \\mathbf{z} - \\mathbf{H x} \\;\\;\\;(3)$$\n",
|
||||
"\n",
|
||||
"where $\\textbf{y}$ is the residual, $\\textbf{z}$ is the measurement, and $\\textbf{H}$ is the measurement function. It is just a matrix that we multipy the state into to convert it into a measurement.\n",
|
||||
"\n",
|
||||
"For our dog tracking problem we have a sensor that measures position, but no sensor that measures velocity. So for a given state $\\mathbf{x}=\\begin{bmatrix}x & \\dot{x}\\end{bmatrix}^T$ we will want to multiply the position $x$ by 1 to get the corresponding measurement of the position, and multiply the velocity $\\dot{x}$ by 0 to get the corresponding measurement of velocity (of which there is none).\n",
|
||||
"\n",
|
||||
"We only have 1 measurement in this example, so the dimension of the residual matrix needs to be $1\\times 1$. $\\mathbf{x}$ is $2\\times 1$, so $\\mathbf{H}$ needs to be $1\\times 2$ to get the right result. If we put this in linear algebra terms we get:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"z = \\begin{bmatrix}1&0\\end{bmatrix} \\times \\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"\\begin{aligned}\n",
|
||||
" \\textbf{y} &= \\mathbf{z} - &\\begin{bmatrix}1&0\\end{bmatrix} &\\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}, or \\\\\n",
|
||||
"\\textbf{y} &= \\mathbf{z} - &\\textbf{H}&\\begin{bmatrix}x \\\\ \\dot{x}\\end{bmatrix}\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"In other words, the measurement sensor provides one times the sensor's measurement of $x$, and zero times the nonexistent velocity measurement. This is simple, because the problem is simple! A slightly more complicated problem might use a temperature sensor might, for example, output a voltage, and we would need to provide an equation to convert from voltage to temperature. \n",
|
||||
"And so, for our Kalman filter we set\n",
|
||||
"\n",
|
||||
"In the nomenclature of Kalman filters the $[1\\space\\space0]$ matrix is called $H$. If you scroll up to the Kalman filter equations you will see an $H$ term in the update step.\n",
|
||||
"\n",
|
||||
"$$\\tilde{y} = \\mathbf{z} - \\mathbf{H x}\\tag{3}$$\n",
|
||||
"$$\\mathbf{H}=\\begin{bmatrix}1&0\\end{bmatrix}$$\n",
|
||||
"\n",
|
||||
"Believe it or not, we have designed the majority of our Kalman filter!! All that is left is to model the noise in our sensors."
|
||||
]
|
||||
@@ -1066,7 +1114,7 @@
|
||||
"source": [
|
||||
"##### **Step 5**: Design the Measurement Noise Matrix\n",
|
||||
"\n",
|
||||
"The *measurement noise* is a matrix that models the noise in our sensors as a covariance matrix. This can be admittedly a very difficult thing to do in practice. 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 already read high if the temperature is high, and so the noise is not distributed equally on both sides of the mean. Later we will address this topic in detail. For now I just want you to get used to the idea of the measurement noise matrix so we will keep it deliberately simple.\n",
|
||||
"The *measurement noise* is a matrix that models the noise in our sensors as a covariance matrix. This can be admittedly a very difficult thing to do in practice. 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. Later we will address this topic in detail. For now I just want you to get used to the idea of the measurement noise matrix so we will keep it deliberately simple.\n",
|
||||
"\n",
|
||||
"In the last chapter we used a variance of 5 for our position sensor. Let's use the same value here. The Kalman filter equations uses the symbol $R$ for this matrix.\n",
|
||||
"\n",
|
||||
@@ -1083,26 +1131,35 @@
|
||||
"source": [
|
||||
"##### **Step 6**: Design the Process Noise Matrix\n",
|
||||
"\n",
|
||||
"What is *process noise*? Consider the motion of a thrown ball. In a vacuum and with constant gravitational force it moves in a parabola. However, if you throw the ball on the surface of the earth you will also need to model factors like rotation and air drag. However, even when you have done all of that there is usually things you cannot account for. For example, consider wind. On a windy day the ball's trajectory will differ from the computed trajectory, perhaps by a significant amount. Without wind sensors, we may have no way to model the wind. Wind can come from any direction, so it is likely to have a near Gaussian distribution. The Kalman filter models this as *process noise*, and calls it $\\small\\mathbf{Q}$.\n",
|
||||
"What is *process noise*? Consider the motion of a thrown ball. In a vacuum and with constant gravitational force it moves in a parabola. However, if you throw the ball on the surface of the earth you will also need to model factors like rotation and air drag. However, even when you have done all of that there is usually things you cannot account for. For example, consider wind. On a windy day the ball's trajectory will differ from the computed trajectory, perhaps by a significant amount. Without wind sensors, we may have no way to model the wind. The Kalman filter models this as *process noise*, and calls it $\\mathbf{Q}$.\n",
|
||||
"\n",
|
||||
"Astute readers will realize that we can inspect the ball's path and extract wind as an unobserved state variable, but the point to grasp here is there will always be some unmodelled noise in our process, and the Kalman filter gives us a way to model it.\n",
|
||||
"\n",
|
||||
"Designing the process noise matrix can be quite demanding. For our first example, we will set it to 0, like so: $\\small\\mathbf{Q}=0$. It is unlikely that you would do that for a real filter.\n",
|
||||
"Designing the process noise matrix can be quite demanding, and we will put it off until the Kalman math chapter. In this chapter we will focus on building an intuitive understanding on how modifying this matrix alters the behavior of the filter. \n",
|
||||
"\n",
|
||||
"As you might expect, the Kalman filter uses the process noise matrix during the prediction step because the prediction step is the step that uses the process model to predict the next state. It is used in equation (2) from the Kalman filter equations:\n",
|
||||
"\n",
|
||||
"$$\\mathbf{P} = \\mathbf{FP{F}}^T + \\mathbf{Q}$$\n",
|
||||
"\n",
|
||||
"If you look back at step one you will recall that $\\mathbf{P}$ is the covariance matrix. It will be of size $n\\times n$ where $n$ is the number of state variables. $\\mathbf{FP{F}}^T$ is just some linear algebra 'magic' that switches $\\mathbf{P}$ into state space. We will cover this in detail in the Kalman math chapter; for now I will just say that when the Kalman filter performs the math for Step 4 above it needed to convert $\\mathbf{P}$ into measurement space to compute the residual and Kalman gain, so here it it converted back into state space to perform the state prediction.\n",
|
||||
"\n",
|
||||
"In pseudocode we might express this equation as:\n",
|
||||
" \n",
|
||||
" P = to_state_space(P_in_measurement_space) + process_noise\n",
|
||||
"\n",
|
||||
"This is the multidimensional linear algebra analogue of the predict step in the one dimensional case, where we added the variance of the filter to the variance of the movement:\n",
|
||||
"\n",
|
||||
" sigma = sigma + movement_sigma\n",
|
||||
" \n",
|
||||
"$\\mathbf{P}$ is dimensioned $n\\times n$, so $\\mathbf{Q}$ must have the same dimensions. We are just adding matrices, so hopefully it is clear that each element in $\\mathbf{Q}$ specifies how much uncertainty is added to the system due to the process noise. We have not given the math for this yet, but if you suspect the math is difficult you would be correct. \n",
|
||||
"\n",
|
||||
"Fortunately you can get a long way with approximations. The filtered result will not be optimal, but in my opinion the promise of optimal results from Kalman filters is mostly wishful thinking. Consider, for example, tracking a car. In that problem the process noise would include things like potholes, wind gusts, changing drag due to turning, rolling down windows, and many more factors. We cannot realistically model that analytically, and so in practice we work out a simplified model, compute $\\mathbf{Q}$ based on that simplied model, and then add *a bit* to $\\small\\mathbf{Q}$ in hopes of taking the uncalculable factors into account. Then we use a lot of simulations and trial runs to see if the filter behaves well; if it doesn't we adjust $\\small\\mathbf{Q}$ until the filter performs well. In this chapter we will focus on forming an intuitive understanding on how adjusting $\\small\\mathbf{Q}$ affects the output of the filter. In the Kalman Filter Math chapter we will discuss the analytic computation of $\\small\\mathbf{Q}$, and also provide code that will compute it automatically for you.\n",
|
||||
"\n",
|
||||
"For our first example, we will set the diagonal of $\\small\\mathbf{Q}$ to a small value, and the off-diagonal terms to zero. This is typically not a particularly good choice for a real filter, but it is enough for us to begin forming an understanding of the performance of the filter for various values of $\\small\\mathbf{Q}$. \n",
|
||||
"\n",
|
||||
"> Some books and papers use $\\small\\mathbf{R}$ for measurement noise and $\\small\\mathbf{Q}$ for the process noise. Others do the opposite, using $\\small\\mathbf{Q}$ for measurement noise and $\\small\\mathbf{R}$ for the process noise! Read carefully, and make sure you don't get confused. I use the following mnemonic. Radars are used to measure positions, and they have measurement error. So, for me, $\\small\\mathbf{R}$ is the **R**adar's measurement noise. I've read a lot of Kalman filter literature in the context of radar tracking, so it makes sense to me. I don't have a good one for $\\small\\mathbf{Q}$, other than to note that it alphabetically follows the p in **P**rocess."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### **Step 7**: Design Initial Conditions\n",
|
||||
"\n",
|
||||
"Finally, we need to specify the initial conditions for the state variables and their associated covariance matrix. If you have a rough idea of the values you can use that as your initial settings, or, you could always read the sensors for the first time, and calculate a initial value. The Kalman filter will converge and find the solution even if your initial conditions are far off, but the more accurate they are the faster and better the output will be. \n",
|
||||
"\n",
|
||||
"The covariance matrix ($\\small{\\mathbf{P}}$) is a $n{\\times}n$ matrix that specifies the variances and covariances of each state variable. This is a complicated topic, and I'd rather demostrate the matrix rather than talk about it abstractly here. For now, recognize that the Kalman filter will be calculating the covariance matrix at each step, just like the 1-D filter computed the variance of the mean at each step. So as with those examples we can make an initial guess and trust that $\\small{\\mathbf{P}}$ will converge to a smaller value as the filter progresses. I find this description somewhat unsatisfactory for several reasons, but until you've seen some examples it is hard to talk about in an understandable way."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
@@ -1124,7 +1181,7 @@
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"import filterpy.kalman as kf\n",
|
||||
"dog_filter = kf.KalmanFilter (dim_x=2, dim_z=2)"
|
||||
"dog_filter = kf.KalmanFilter (dim_x=2, dim_z=1)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
@@ -1333,7 +1390,7 @@
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"plot_track (noise=30, R=5, Q=0, count=100)"
|
||||
"plot_track (noise=30, R=5, Q=0.01, count=100)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
@@ -1341,17 +1398,17 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x472cf50>"
|
||||
"<matplotlib.figure.Figure at 0x7f598dad15d0>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3f5e090>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ad40290>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1641,7 +1698,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 16
|
||||
"prompt_number": 20
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
@@ -1678,17 +1735,17 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x4400410>"
|
||||
"<matplotlib.figure.Figure at 0x7f598aca9410>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF9CAYAAAAHja6eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4k2X3wPFvkibpLntTW/YWUCwioCBQhoAMkVkUQXhl\niION6AsFXhRQVEQUAVkiKGXLFJQCKhTZgj9my2qZ3U3SJL8/KpVCC2maNH2a87muXjR5nud+7vRQ\nOL17cm7V6dOnrQghhBBCCOHm1K6egBBCCCGEEAWBJMZCCCGEEEIgibEQQgghhBCAJMZCCCGEEEIA\nkhgLIYQQQggBSGIshBBCCCEEIImxEEIIIYQQgCTGQggFqVGjRubHU089Rc+ePdm+fbvL53L3IzIy\n0uH3OXr0KC+//DL16tWjadOmzJw5E4vF4vD7PEp6ejrTp0/n6aefpkGDBgwbNoybN2/mepwffviB\nVq1aUa9ePV566SWOHj2aecxsNjNjxgw6dOhA/fr1adq0KaNGjeLatWuOfClCCJEjSYyFEIoyYcIE\n9u7dy4oVK6hWrRpvvvlmluQqP33++efs3bs38yMkJMSh49+6dYsBAwZQpkwZ1qxZw3vvvcfy5cv5\n/PPPHXofW3z22WdEREQwY8YMli1bxpUrVxg5cmSuxti3bx/vvfceYWFhREREUKlSJQYNGkR8fDwA\nBoOB06dPM2LECNatW8fnn3/O//3f/zFw4EDMZrMzXpYQQmQhibEQQlH8/PwoXrw4VapUYfTo0Vgs\nFg4dOuSSufj7+1O8ePHMD61W69Dx169fT1paGlOnTqVKlSqEhobSq1cvVqxY4dD7PIrFYmHlypUM\nHDiQ5s2bU7t2bcaPH8+BAwf4+++/bR5n+fLlNGnShLCwMCpXrszkyZMxGo1s2LABAG9vbxYuXEho\naCiPPfYY9evXZ9iwYZw5c4azZ8866+UJIUQmD1dPQAghcsNqzdjF3mQy8eOPP6JWq6lfv75N1165\ncoUOHTrkeHzBggU88cQTNs9lzJgxpKamEhgYSL9+/ejYsaPN19ri2LFjBAcH4+vrm/lcnTp1WLhw\nITExMVSsWPGRYwwcOJCoqKhsj3Xu3JkPPvjgkWPExMQQHx+f5WvToEEDPDw8OHbsGNWqVXv0iwGO\nHz9Oz549Mx/r9Xrq1av30BX/u6vJ/v7+Nt1DCCHyQhJjIYSivP/++0yePBmDwUBwcDBLliyxOTEu\nXbo069evz/F4qVKlbJ7H22+/TUhICDqdjp07dzJmzBhMJhNdu3a1eYxHuXXrFgEBAVmeK1KkSOYx\nWxLjadOmYTAYsj3m4+Nj0zzu1hIXKVKEGTNmsH37djZu3EhAQECu6oxv3rxJ0aJF2bFjB+PHj2fh\nwoUULVo0xzGSkpL48ssv6dy5M2XKlLH5PkIIYS9JjIUQivLmm2/SunVrTp06xbhx4zh58iRPPvmk\nTddqNBqbkklbvP7665mf16xZk6tXr7Jo0SKHJsYPo1KpbDovN8m+LYoVK0a5cuXQaDR2j+Hj40O5\ncuXw8vICsn8tRqORN998k6JFi/Lf//7X7nsJIURuSGIshFCU4sWLExgYSGBgINeuXWPOnDl06tQp\ncyX1YRxdSnGvWrVqsXnzZruuzUmxYsU4ffp0lufu3LmTecwWjiilKF68eOa9Bw0axKBBgzCbzcTH\nx2ces0Xx4sW5ffs2PXv2ZO3atUDGynfZsmWznGc0GhkxYgR37txh8eLFeHp62nwPIYTIC0mMhRCK\n1bNnT+bNm8eSJUsYMWLEI893ZCnF/c6ePUuFChXsvj47devWZevWrSQlJWXWGR87dowSJUrYfK+p\nU6diNBqzPWZrKUXFihUJCAjg4MGDmT84HDp0iPT0dOrVq5flXLPZzNWrV/Hx8aFo0aIPvJ6DBw9m\nPk5LS+Po0aOEhoZmPmcymRg5ciQ3btxg8eLF+Pn52TRHIYRwBM3w4cM/cPUkhBDCFp9//jmtWrWi\nRo0aQEZpRGJiIt999x19+/Z9ZFcItVpNQEBAjh8eHratFezYsYP9+/ej0+lITk5m48aNfPXVV4wc\nOZJatWplOXfNmjV06dKF8uXLU7NmzVy93sDAQFauXMnff/9N1apVOXDgAJ988gmvvPIKjRo1smkM\nX1/fHF/v3VKGR1GpVCQnJ7NkyRKqV69OYmIikydPplKlSgwcODDLuVeuXKFVq1bcunWLVq1aZTlW\npEgR5s6di7+/Pz4+PsyaNYvLly8zZcoUPD09SU9PZ8SIEVy4cIFPPvkEjUZDSkoKKSkp6HS6PJVv\nCCGELWTFWAihaH369OGbb75h9erVhIWF5cs99Xo9K1euZObMmQAEBQUxZcoUXnzxxQfOTUlJAaBk\nyZK5vk+xYsX45ptvmDp1Kl26dMFkMtGxY0cGDx6ctxdgh+HDh5OWlsbo0aMxGAw0bdo017W/TZo0\nITw8nHnz5vHRRx9Ro0YNvv7668w3GF67do1du3ahUqlo37595nUqlYolS5bY/MOAEELYS3X69Gmr\nvRcnJSXRtm1bBgwYwIABA9i8eTNz5swBYOzYsbRo0cJhExVCCCUaMWIEV65c4YcffsjzWJ999hlL\nly5l/vz5NGjQwAGzE0IIca88rRh/+eWX1KlTB5VKhdFoZNasWaxevRqDwUBYWJgkxkIIt2a1Wvnj\njz+YNWuWQ8YbPnw4RYoUkZ6+QgjhJHYnxufOnePWrVvUqVMHq9XK0aNHqVq1auY7pcuUKcOpU6cy\nawGFEMLdqFQqfvvtN4eO2a9fP4eOJ4QQ4l92bwk9e/Zshg8fnvn4xo0blCxZkpUrV/LTTz9RsmRJ\n4uLiHDJJIYQQQgghnM2uFeOff/6ZoKAgypYtm7k96113t/vcvn27zQ3ohRBCCCGEcDW7EuOjR4+y\nbds2du7cye3bt1Gr1fTu3Zvr169nnnP9+vVs34X9559/UqJECftnLIQQQgghhA0SExMfaKP5MHYl\nxiNHjmTkyJFARl9RHx8f+vbtS9u2bbl16xYGg4HY2Nhs64tLlChBw4YN7bmtKAA2bNhAx44dXT0N\nYQeJnbJJ/JRLYqdsEj9lO3ToUK7Od1gfY61WyzvvvEOvXr0AGD9+vKOGFgVIdHS0q6cg7CSxUzaJ\nn3JJ7JRN4ude8pwYDxs2LPPz9u3bZ2nKLoQQQgghhFLY3ZVCuKf7t3gVyiGxUzaJn3JJ7JRN4ude\nJDEWuVK9enVXT0HYSWKnbBI/5ZLYKZvEz704rMY4r6xWK3FxcZjNZldPRTxEfHw8AQEBub5Oo9FQ\nqlQpaeHnQpGRkTRt2tTV0xB2kvgpl8RO2SR+7qXAJMZxcXH4+fnh7e3t6qmIhyhXrpxd16WkpBAX\nF0fp0qUdPCMhhBBCCMcoMKUUZrNZkuJCzNvbW34b4GKy4qFsEj/lktgpm8TPvRSYxFgIIYQQQghX\nksRYCDcRGRnp6imIPJD4KZfETtkkfu5FEmOFadasGRUrVqR48eJYLBZXT0cIIYQQotCQxNjJihcv\nzoULFxw23p49e9i3b5/DxhPuQ+rklE3ip1wSO2WT+LkXSYydyGq1ZvnT0eMKIYQQQgjHkcTYBp9+\n+ikNGzakQoUKPPnkk6xduzbz2N69e2nVqhVBQUGEhIRkrua+9NJLPPbYYwA0b96cwMBAJkyYAGTs\nu35vKURkZCR16tSx6X5C2Evq5JRN4qdcEjtlk/i5lwLTx7ggK1KkCKtXr6Zy5cps27aN/v3707x5\ncxITE+nduzdfffUVbdq04ezZs9y8eROA1atXAxmlFHv27CEoKCjP9ytWrJgzXp4QQgghhEASY5uE\nhYVlft6mTRsCAgI4ffo0+/fvp2XLloSGhgJQpUoVqlSp4pT7/f333zRu3DjPYwv3JXVyyibxUy6J\nnbJJ/NyLYhLjYp86ZrX01ohbub7m+++/Z+7cuVy+fBmLxUJiYiImk4krV65QsWJFh8zLlvsJIYQQ\nQgjnUUxibE9C6wgxMTGMHDmS9evX06hRIwAqV66M1WqlfPnyHDly5KHXq1SqB57T6/UApKeno9Pp\nSExMtOl+d2m1WiBjt0C1WsrEhW0iIyNl5UPBJH7KJbFTNomfe5Gs6hGSk5NRqVSUKFGC9PR0Pvvs\nM+Lj41GpVHTr1o2ff/6ZLVu2YDabOXfuHL///nuW60uXLs3JkyezPFeiRAn8/f2JiooCYP369Y+8\n371KlSqFv78/e/fuddKrFkIIIYRwP5IYP0KNGjUYOnQorVq1olatWiQnJ2eWTwQGBrJ8+XJmzpxJ\npUqV6NWr1wObbkycOJHRo0dTu3ZtwsPDAdBoNEyePJnXX3+dDh06UKJEicyV5Yfd7y6NRsNHH33E\nkCFDCAwM5KeffsqHr4RQOlnxUDaJn3JJ7JRN4udeVKdPn87XprgxMTE0bNjwgeevXLlCuXLl8nMq\nIp9JjIUQQgiRnw4dOpSr94PJirEQbkJ6cSqbxE+5JHbKJvFzL5IYCyGEEEIIgSTGQrgNqZNTNomf\ncknslE3i514kMRZCCCGEEAJJjIVwG1Inp2wSP+WS2CmbxM+9SGIshBBCCCEEkhgL4TakTk7ZJH7K\nJbFTNomfe5HEWAghhBBCCCQxFsJtSJ2cskn8lEtip2wSP/ciibFwiOLFi3PhwgVXT0MIIYQQwm6S\nGIs8s1qtWf4UBZPUySmbxE+5JHbKJvFzL5IYP8KKFSto2bIltWvXZsCAAfTq1YuaNWty8uRJLBYL\nM2bMoH79+tSoUYOxY8eSnp4OwMWLF+ncuTOVKlXiscce49VXXyUhISFz3K1bt/LUU08RGBhIo0aN\n+PnnnzOPPf744/zyyy+Zj+9fjR06dCjjxo0jLCyMwMBAHn/8cZKSkgDYsGEDTZo0oVKlSrLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x4400810>"
|
||||
"<matplotlib.figure.Figure at 0x7f598a90ce10>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1730,8 +1787,8 @@
|
||||
"Let's make this concrete. Assume our state variables are $x=\\begin{bmatrix}x&\\dot{x}\\end{bmatrix}^T$. (**note**: it is customary to use this transpose form of writing an matrix in text. It is how we denote that $x$ is a column matrix without taking up a lot of line space). Then $\\textbf{Q}$ will contain:\n",
|
||||
"\n",
|
||||
"$$Q = \\begin{bmatrix}\n",
|
||||
"\\sigma_x^2 & p\\sigma_x\\sigma_{\\dot{x}} \\\\\n",
|
||||
"p\\sigma_x\\sigma_{\\dot{x}}& \\sigma_{\\dot{x}}^2\n",
|
||||
"\\sigma_x^2 & \\sigma_{x\\dot{x}} \\\\\n",
|
||||
"\\sigma_{\\dot{x}x}& \\sigma_{\\dot{x}}^2\n",
|
||||
"\\end{bmatrix}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
@@ -1801,9 +1858,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3f55f90>"
|
||||
"<matplotlib.figure.Figure at 0x7f598a84aa90>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1838,10 +1895,10 @@
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\mathbf{P} = \\begin{pmatrix}\n",
|
||||
" {{\\sigma}_{1}}^2 & p{\\sigma}_{1}{\\sigma}_{2} & \\cdots & p{\\sigma}_{1}{\\sigma}_{n} \\\\\n",
|
||||
" p{\\sigma}_{2}{\\sigma}_{1} &{{\\sigma}_{2}}^2 & \\cdots & p{\\sigma}_{2}{\\sigma}_{n} \\\\\n",
|
||||
" \\sigma_1^2 & \\sigma_{12} & \\cdots & \\sigma_{1n} \\\\\n",
|
||||
" \\sigma_{21} &\\sigma_2^2 & \\cdots & \\sigma_{2n} \\\\\n",
|
||||
" \\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
|
||||
" p{\\sigma}_{n}{\\sigma}_{1} & p{\\sigma}_{n}{\\sigma}_{2} & \\cdots & {{\\sigma}_{n}}^2\n",
|
||||
" \\sigma_{n1} & \\sigma_{n2} & \\cdots & \\sigma_n^2\n",
|
||||
" \\end{pmatrix}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
@@ -1849,10 +1906,10 @@
|
||||
"\n",
|
||||
"The diagonal contains the variance of each of our state variables. So, if our state variables are\n",
|
||||
"\n",
|
||||
"$$\\begin{pmatrix}x\\\\\\dot{x}\\end{pmatrix}$$\n",
|
||||
"$$\\textbf{x}=\\begin{pmatrix}x\\\\\\dot{x}\\end{pmatrix}$$\n",
|
||||
"\n",
|
||||
"and the covariance matrix happens to be\n",
|
||||
"$$\\begin{pmatrix}2&0\\\\0&6\\end{pmatrix}$$\n",
|
||||
"$$\\textbf{P}=\\begin{pmatrix}2&0\\\\0&6\\end{pmatrix}$$\n",
|
||||
"\n",
|
||||
"we know that the variance of $x$ is 2, and the variance of $\\dot{x}$ is 6. The off diagonal elements are all 0, so we also know that $x$ and $\\dot{x}$ are not correlated. Recall the ellipses that we drew of the covariance matrices. Let's look at the ellipse for the matrix."
|
||||
]
|
||||
@@ -1872,7 +1929,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGNCAYAAAActsnoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VPXd9/HPLJnJHhapECCtO0ujgggEEUWjQu5CLdga\nERQFHxG0oHJ7U8Uiaqu43BXFBbUuFRQX1IIE64ZWy6bCo1CWKlLCoggImSQkk9meP/JAax0gmczk\nnN/J+3VdXBcnJMNXP8w53/zyPb/j2rhxY0wAAACAg7mtLgAAAABINZpeAAAAOB5NLwAAAByPphcA\nAACOR9MLAAAAx6PpBQAAgOPR9AJAkqxYsUJdunSxugxJ0qhRozRr1iyrywAA26DpBYAUCwQCmj59\nus4//3ydcsopGjhwoG6//XYFAoFGvU44HNZdd92loqIi9ejRQ9dee6327NmToqoBwFloegEgxXbv\n3q09e/bo5ptv1htvvKHf//73WrJkia6//vpGvc5DDz2k1157TTNmzNCcOXO0Y8cOTZo0KUVVA4Cz\neK0uAACc7thjj9WDDz548Lhz5866/PLLNWPGDFVVVSk7O/uIrxGNRjVv3jyNHTtWAwYMkCTdfPPN\nGjlypP7xj3/oxBNPTFn9AOAErPQCgAUCgYDS09Pl8/ka9Plbt25VRUWFTjvttIMf69Gjh7xer9as\nWZOqMgHAMWh6AaCZff3115ozZ46uuOKKBje9B2Z3W7VqpRkzZqi4uFihUEh5eXnM9QJAA9D0AkAz\nCgQCGjdunHr16qXrrrsuoddo06aN8vPz5fF4klwdADgXTS8ANJPKykpdeeWVOvroozVz5ky5XK4G\nf23btm0lSfv27dNVV12lP/3pT3K73aqoqDj4ZwCAQ6PpBYBmUFVVpTFjxqht27Z6+OGHlZaW1qiv\n79y5s/Ly8vTJJ58c/NiqVasUDod18sknJ7tcAHAcdm8AgBSrqqrSlVdeKa/Xq9tuu0379u07+Gdt\n27aV233k9Qe3261LLrlEf/zjH9W1a1e1adNGv//979W7d2+dcMIJqSwfAByBphcAUuzvf/+7Pv/8\nc7lcLg0cOPDgx10ul959913l5+c36HWuu+461dbW6qabblIwGFT//v01ffr0VJUNAI5C0wsAKdan\nTx9t2LChya/j8Xg0ZcoUTZkyJQlVAUDLwkwvAAAAHI+mFwCSqDE7MgAAmo9r48aNMauLAAAAAFKJ\nlV4AAAA4Hk0vACTJihUr1KVLF6vLkCSNGjVKs2bNsroMALANml4AaAa7du3ShAkT1KNHDxUVFWnG\njBmKRqONfp0FCxZoyJAhOvnkk3XGGWfovvvuS0G1AOA8bFkGAM1g4sSJqqur09y5c7Vr1y5NnjxZ\nWVlZuvbaaxv8GgsWLNAtt9yiG264QWeffbYikYi+/vrrFFYNAM5B0wsAKbZhwwatWrVK8+bNU7du\n3SRJo0eP1ty5cxvV9D744IMaPXq0rrjiioMfO/7445NeLwA4EeMNAJBia9askdfr1amnnnrwY717\n99Z3332nrVu3Nug1duzYoW3btqlDhw4qLS1V//79dcUVV2j9+vWpKhsAHIWmFwBSbM+ePWrVqpUk\nafjw4br++uvVpk0bSdJ3333XoNfYuXOnJGn27Nm69NJLNXv2bLVp00ZXXHGFKisrU1M4ADgITS8A\nNINYrH5L9Pz8fB199NGN/voDN70NGTJEQ4YMUffu3XX77berqqpK77//fjJLBQBHYqYXAFKsbdu2\nqqiokCQ99NBDkqSPP/5Ykg6u+B5J69atJUk/+clPDn4sKytLrVq10rfffpvEagHAmVjpBYAUKyws\nVDgc1urVqw9+bMWKFWrTpo06d+7coNcoKChQdnb292aAa2pqtG/fPrVv3z7pNQOA09D0AkCKdenS\nRT179tSdd96pv//97/rggw/07LPPasSIEQ1+Da/Xq4suukjz5s3Te++9p82bN+t3v/udcnNzddZZ\nZ6WwegBwBsYbAKAZzJw5U7fddptGjhwpv9+viy66SBMmTGjUa9xwww0Kh8OaOnWqamtr1b17dz35\n5JPKzs5OUdUA4BwJNb179+7V2LFjFQ6HFYvFNG7cOJWUlCS7NgBwjHbt2unhhx9u0mv4fD5NnTpV\nU6dOTVJVANByJNT05uTkaM6cOcrIyNDevXtVUlKiQYMGye1mWgIAAAD2k1DT6/V65fXWf2kgEJDP\n50tqUQBgKpfLZXUJAIA4XBs3bowl8oXV1dUqLS1VeXm57r//fhUXFye7NgAAACApEm56D9i0aZPG\njRunP//5z8rMzExWXQAAAEDSNHn3huOOO075+fnatGmTCgsLD3589erVOuqoo5r68gAAAMBhVVZW\nqlu3bof9nISa3p07d8rn86l169batWuXNm/erE6dOn3vc4466ij17NkzkZeHDSxcuFBDhgyxugwk\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3f76b50>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ad13750>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1900,7 +1957,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGNCAYAAAActsnoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOXZx/HfTGayL0DABQhVEMGFLWJRCAg1BaSKiFoR\nFxQRkIraalncEDfE1lq3iiCKFC1acSkW2RQFRFEJle0lUOCFsBq27MskM+8fvKDoAMkwk3OeM9/P\ndXHJCZPJDT9PcufJPc/jys3NDQgAAABwMLfVBQAAAACRRtMLAAAAx6PpBQAAgOPR9AIAAMDxaHoB\nAADgeDS9AAAAcDyaXgBRafny5WrdurXVZRhnzJgxGjt2rNVlAECt0fQCwI8UFhZq/Pjx6tmzp9q1\na6cePXro0UcfVWFhYa2ep6qqShMmTNDFF1+sDh066M4779S+ffvCWmt1dbUmTpyo3/zmN2rfvr2y\nsrL0xz/+Ubt37w75OSdPnqzWrVvrxRdfDPrnLpcr5OcGACvR9ALAj+zdu1f79u3T/fffr48++khP\nPvmkFi1apN///ve1ep4XXnhB77//viZOnKgZM2Zo586duueee8Jaa0VFhXJzc3XXXXfpww8/1Isv\nvqiNGzdqyJAhqq6urvXzrVq1SrNnz1bDhg3DWicA2AFNLwD8SPPmzfX888+re/fuysjI0MUXX6xB\ngwZp2bJlKi4urtFz+P1+zZw5U0OGDFG3bt103nnn6f7779c333yjDRs2hK3WxMREvfbaa+rVq5d+\n8YtfqH379rrzzjv13//+V5s2barVc5WUlGjMmDF64oknFBsbG7YaAcAuaHoB4AQKCwsVHx9f42Yw\nLy9PBQUFuuCCC468rUOHDvJ4PFq9enWkypQkFRQUSJJSU1Nr9X6PP/64srOz1bZt20iUBQCWo+kF\ngOPYtWuXZsyYoVtvvbXGTe/h2d169epp4sSJys7Ols/nU1paWtjnen+suLhYkyZN0pVXXqnTTjut\nxu83Z84crVmzRiNHjoxYbQBgNY/VBQCAXRUWFmr48OHq2LFjyA1hgwYN1LhxY8XExIS5uqNVVlbq\n7rvvVv369TV+/Pgav9/u3bv16KOPaurUqfJ6vRGsEACsRdMLAEEUFRVp8ODBOvXUU/Xcc8/VateC\n9PR0SdLBgwd1++236/bbb1d1dbUKCgqO/Fk4VVZW6q677tLBgwc1bdo0xcfH1/h916xZo4KCAl1/\n/fVHPd/LL7+s2bNna968eWGvFwCsQNMLAD9RXFys2267Tenp6XrxxRePuQJaWlqq/fv3q0GDBkpM\nTDzy9oyMDKWlpenbb789Mtebk5OjqqqqsM/M+nw+3XPPPdq7d6+mTZumlJSUoI+rrKzU999/r7S0\ntKMe07lzZ82ZM+fIdSAQ0C233KKePXtq0KBBYa0VAKzETC8A/EhxcbEGDx4sj8ejRx55RAcPHlR+\nfr7y8/Pl9/uPeuzcuXOVnZ39s9VQt9ut66+/XlOnTtXixYu1Zs0aPfnkk/rlL3+pli1bhq3W6upq\n3XXXXdqyZYuefvpplZeXH6nV5/Md9diVK1cqOztbb7zxxlFvT0xM1JlnnnnkV/PmzeXxeFSvXj1l\nZGSErVYAsBorvQDwI2vXrtWqVavkcrnUo0ePI293uVz65JNP1Lhx46PedvjXT40cOVLl5eUaNWqU\nKioqlJWVVatZ25rYtWuXFi1aJJfLpT59+hxV1/Tp03XhhRce9XgOlgAQzVy5ubkBq4sAgLq2fPly\nDRo0SOvXr7e6FKMcPoJ4woQJFlcCALXDeAMAoMYCAdZJAJiJphdA1OLH/bXHvxkAUzHeAAAAAMdj\npRcAAACOR9MLICotX75crVu3troM44wZM+bIi9kAwCQ0vQDwI4WFhRo/frx69uypdu3aqUePHnr0\n0UdVWFgY8nM+/PDDat26td5///0wVvqDadOmqVevXmrTpo26d++u6dOn1/o5XnnlFXXt2lXt2rXT\noEGDtHXr1qCPY6YXgKnYpxcAfmTv3r3at2+f7r//frVo0ULbt2/X/fffr61bt2rq1Km1fr6FCxfq\nf//3fyVFpmF8+eWXNXXqVI0ZM0adOnVSSUlJrRv0f/7zn3rxxRc1YcIEtWzZUk8//bSGDh2qf//7\n3/J4+DIBwBn4bAYAP9K8eXM9//zzR64zMjI0aNAgTZw4UcXFxUpOTq7xc+3Zs0dPPvmkpk+fruzs\n7LDXWlZWpsmTJ2v06NG65pprQn6eN998U1dddZUuv/xySdLjjz+uHj16aMmSJUcd0AEAJmO8AQBO\noLCwUPHx8YqNja3x+wQCAY0ePVrDhg1T06ZNI1LXmjVrVFZWpoSEBF155ZXq2rWrRowYoby8vBo/\nR2VlpTZs2KCOHTseedvpp5+upk2bavXq1ZEoGwAsQdMLAMexa9cuzZgxQ7feemutmt4pU6YoJiZG\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3f58f10>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ac96390>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1970,7 +2027,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF9CAYAAAAHja6eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVdX6wPHvGTjngAhOqDkgDiQOpFgqmlqpOdAPzYHS\nNPWa3rqZZZpDZmampuaUZlfNcEpFvamJmTnkPJAzljnkhANOqcjMGfbvD5JExgMHNsP7eZ6e2Gfv\nvdbihU7vWaz9Ls2ZM2cUhBBCCCGEKOa0ag9ACCGEEEKIgkASYyGEEEIIIZDEWAghhBBCCEASYyGE\nEEIIIQBJjIUQQgghhAAkMRZCCCGEEAKQxFgIIYQQQghAEmMhhHC4UaNG4ePjg4+PD/Xr1+fFF19k\nxowZJCQkZOv+sLCwlPsf/lOnTh2SkpJSrrFYLHz++ec0a9YMPz8/3nnnHf76669U7Vy8eJE+ffrQ\noEEDnnvuOb755huHfp9CCFHU6NUegBBCFEV+fn589dVXmM1mwsLCGDt2LDExMYwdOzbbbezfvx9F\n+WcPJoPBkPL1nDlzWLduHdOmTaNs2bJ8/PHHDBkyhGXLlgGQlJTEwIEDqVGjBmvWrOH06dOMHj2a\ncuXK0aVLF8d9o0IIUYTIjLEQQuQBvV5P2bJlqVixIp07d6ZTp05s3brVrjbKlClD2bJlU/55yGaz\nERISwoABA2jVqhX16tVj9OjRHDp0iHPnzgGwe/durl69yoQJE3jyySfp1KkTnTp1SkmchRBCpCUz\nxkIIkQc0Gk2qY4PBgNlsZuDAgRw+fDjdezp37sy4ceNSjl988UUSEhKoXbs27733Hr6+vgBcuXKF\nqKgonn766ZRr/fz80Ov1hIeH4+3tzcmTJ/H09KR8+fIp1zRp0oQffvgBi8WCXi9v/0II8Th5ZxRC\niDzwcAmEoigcO3aM0NBQWrZsyciRI0lMTEz3nhIlSgBQvnx5Jk6cSL169YiNjWXp0qX06tWL9evX\nU6NGjZS1xKVKlWLKlCls3bqVjRs34u7unnLu7t27lC5dmoSEBAICAujYsSNNmzbFarVy//59ypUr\nlw9REEKIwkUSYyGEyANHjhzBz88Pi8WCzWbjxRdf5OOPP6ZUqVJZ3lu9enWqV6+ecuzn50dAQADL\nly/n448/TnVtmTJlqFSpEjqdLt22tFotlSpVoly5cqnWKwshhEhLEmMhhMgDvr6+TJs2DScnJ8qX\nL49Wm/xIx4ABAzhy5Ei69zy+lOIhrVZL7dq1uXr1KkDKeuP79+8zcOBABg4ciNVqJSoqKuVcmTJl\nuHv3LgaDge+++w6A9evXo9PpspWcCyFEcSSJsRBC5AGj0UjVqlXTvD5x4sRUZdce9XApxeMUReHC\nhQs0bdoUgKpVq+Lu7s7hw4dT1hkfPXoUi8XCU089BSQn5vPnz+fmzZtUqFAB+KcMnKwvFkKI9Mm7\noxBC5IGMli08TFIzExwcTOXKlXnyySdJSkpixYoVREREMGvWLCB5Brlnz558++231KlThzJlyjBp\n0iSaNGmCt7c3AM899xxVq1bl448/5oMPPuD06dOEhoYyYcIEx32TQghRxEhiLIQQDqbRaNJUpbCH\nxWJhypQp3LlzB2dnZ+rUqcOSJUuoWbNmyjWDBw8mISGBESNGkJiYSIsWLfj0009Tzjs5ObFgwQI+\n+eQTunfvTqlSpXjvvfd4+eWXc/W9CSFEUaY5c+aMPI0hhBBCCCGKPdngQwghhBBCCCQxFkIIIYQQ\nApDEWAghhBBCCEASYyGEEEIIIQAVqlJcu3YNm82W390KIYQQQohixmazUa1atWxfn++Jsc1mo1Gj\nRvndrfhbaGgogYGBag+jWJLYq0viry6Jv3ok9uqS+Kvr6NGjdl0vSymKmYiICLWHUGxJ7NUl8VeX\nxF89Ent1SfwLF0mMhRBCCCGEQBLjYqdt27ZqD6HYktirS+KvLom/eiT26pL4Fy75vvPdlStXZI2x\nEEIIIYTIc0ePHqVq1arZvj7fH77LiKIo3Lp1C6vVqvZQirSoqCjc3d3zvV+dTkf58uXRaDT53ndB\nsXfvXlq0aKH2MIotib+6JP7qkdirS+JfuBSYxPjWrVuULFkSFxcXtYdSpFWqVEmVfuPi4rh16xYV\nKlRQpX8hhBBCiKwUmKUU169fVy1pE/lDfsZCCCGEyE/2LqWQh++EEEIIIYRAEmMh8s3evXvVHkKx\nJvFXl8RfPRJ7dUn8CxdJjAuZli1bUrVqVcqWLStbawshhBBCOJAkxnmsbNmyXLp0yWHt7dmzh/37\n9zusPZF/5KlkdUn81SXxV4/EXl0S/8JFEuM8pChKqn87ul0hhBBCCOE4khhnw+zZs2nUqBFVqlTh\nmWeeYf369Snn9u3bR9u2bfHy8qJp06Yps7lBQUFUq1YNgFatWuHp6clHH30EJO+b/uhSiL1791K/\nfv1s9ScKL1lnpi6Jv7ok/uqR2KtL4l+45KiO8Z49e5g+fXrK8Z9//sn//vc/Lly4wJdffgnAqFGj\neOGFFxwzSpWVKlWKNWvWULNmTbZs2ULfvn1p1aoV0dHRvPbaayxYsIB27dpx/vx5/vrrLwDWrFkD\nJC+l2LNnD15eXrnur0yZMnnx7QkhhBBCCHKYGLds2ZKWLVsCcPv2bXr37k3NmjUZNGgQa9asITEx\nkT59+hSZxLhPnz4pX7dr1w53d3fOnDnDgQMHaN26Ne3btwegVq1a1KpVK0/6O3v2LP7+/rluW6hH\n1pmpS+KvLom/eiT26pL4Fy653vnuxx9/pEOHDpw4cQJvb++UWc2KFSty+vRpfHx8cj1IgDKzHTNb\nevfdu3bfs2rVKubOncu1a9ew2WxER0djNpu5fv26XUWjc9ufEEIIIYonTVQU+m3bMHfrpvZQirRc\nJ8ahoaFMmjSJixcv4uHhQUhICO7u7nh4eHDr1i2HJcY5SWgd4cqVKwwZMoQNGzbQuHFjAGrWrImi\nKFSuXJkTJ05ker9Go0nzmtFoBMBisWAwGIiOjs5Wfw85OTkBYLVa0WplmXhhsXfvXpk5UJHEX10S\nf/VI7NXlqPgrGg0lhgzhfmAgGAwOGJlIT66yqgsXLpCQkEDt2rVTErcePXrQsWNHIP2ksLCJjY1F\no9FQrlw5LBYLc+bMISoqCo1GQ7du3fjll1/YvHkzVquVCxcuEBYWlur+ChUqcOrUqVSvlStXDjc3\nN44cOQLAhg0bsuzvUeXLl8fNzY19+/bl0XcthBBCiALFzQ1r9erowsPVHkmRlqsZ440bNxIQEAAk\nJ2u3b99OOXf79m08PDzSve/tt9/G09MTAHd3d3x9falRo0ZuhpJnfHx8GDRoEG3btkWn09G/f/+U\n5ROenp4sX76cTz/9lDfffJOKFSsya9asVPePGTOGESNGMHz4cHr27MmYMWPQ6XSMHz+ef//733h6\netKoUaOUDxGZ9feQTqfjiy++4K233iIuLo758+enfBgp6B4+nfvw03NxOm7RokWBGk9xO5b4S/zl\nWI4L+3H9atWocOAA1meeKRDjKYjHD7+OiIgAYMCAAdhDc+bMmRwXxW3fvj3z58/Hy8uLpKQkOnbs\nmPLwXd++fdmyZUuae65cuUKjRo3SvH79+nUqVaqU06GIQkB+xkIIIUTOOa1di2HtWmK/+07toRQa\nR48etet5sBwvpThx4gQlSpRIKUNmMBgYNmwYPXv2pF+/fowePTqnTQtRJD36aVbkP4m/uiT+6pHY\nq8sR8XcZMgTN7dtYmjZFf/AgyEZfeUaf0xsbNGjA2rVrU70WEBCQsrRCCCGEEELkjubGDZxCQ4mb\nPh10OhKGDYPERDCZ1B5akZTjxFgIYZ+H66CEOiT+6pL4q0dir67cxt9p924szz4LOh0Aif/5jyOG\nJTIgtb6EEEIIIQoo/c6dmJ9/Xu1hFBuSGAuRT2Sdn7ok/uqS+KtHYq+uXMVfUXDatQvLc885bkAi\nU5IYCyGEEEIUQNqzZ1F0OmwFtKRtUZSrcm05IeXaii/5GQshhBB2sFjQXr2K7e8KYMJ++VauTQgh\nhBBC5CG9Pt2kWL9jB8bZs/N/PMWAJMZC5BNZ56cuib+6JP7qkdirKy/ir5QogeH77x3erpDEWDhI\n2bJluXTpktrDEEIIIYo8a8OG6C5cgAcP1B5KkSOJscg15e8deBTZiSdTUktUXRJ/dUn81SOxV1ee\nxN9gwNKwIfpff3V828WcJMZZWLFiBa1bt6ZevXr079+fnj17UqdOHU6dOoXNZmPKlCk0bNgQHx8f\nRo0ahcViAeDy5ct07tyZGjVqUK1aNf71r3/x4JFPdj///DNNmjTB09OTxo0b88svv6Sca9CgAbt2\n7Uo5fnw2dtCgQXz44Yf06dMHT09PGjRoQExMDAChoaE0b96cGjVq8Oqrr3Lz5s2UewIDA3nyyScZ\nO3YsTZs2pXXr1sTHxwNw79493nzzTXx8fPDz82Pp0qWp+hs8eDABAQF4enoyePDglHNBQUFUq1YN\ngFatWuHp6clHH33kqPALIYQQxZLm7t1Mz1v8/dGHheXTaIoPSYyzwWg0cuDAATZv3swbb7xB7969\nWbduHV999RU///wzmzdv5vDhw5w5c4b58+cDkJSURN++ffntt9/47bffuHfvHlOmTElpc8iQIYwe\nPZqIiAjWrl3LE088kXJOo9Gg0WgyHdPq1avp3bs3ly9fZvny5ej1eo4cOcJ7773H3Llz+fPPP3nq\nqad4//33U+5p2rQp8+bN45tvvmHLli2YTCZ+/fvT5ltvvYXBYODEiROsW7eOKVOmcPz48ZR7d+7c\nyTfffMP+/fv54YcfOHr0KABr1qwhIiICgD179hAREcHEiRNzGfGiSdb5qUviry6Jv3ok9uLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x27ee990>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ac9a750>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1999,7 +2056,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3ff7c90>"
|
||||
"<matplotlib.figure.Figure at 0x7f598aebfb50>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2033,7 +2090,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3e62110>"
|
||||
"<matplotlib.figure.Figure at 0x7f598aca9990>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2064,7 +2121,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3e62050>"
|
||||
"<matplotlib.figure.Figure at 0x7f598ac98f10>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2135,17 +2192,17 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x3f55850>"
|
||||
"<matplotlib.figure.Figure at 0x7f598a8e2650>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x4552050>"
|
||||
"<matplotlib.figure.Figure at 0x7f598aca9650>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -2212,7 +2269,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x409bd90>"
|
||||
"<matplotlib.figure.Figure at 0x7f598aebfcd0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
+60
-1
@@ -7,6 +7,9 @@ Created on Thu May 1 16:56:49 2014
|
||||
import numpy as np
|
||||
from matplotlib.patches import Ellipse
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import cm
|
||||
from mpl_toolkits.mplot3d import Axes3D
|
||||
|
||||
import stats
|
||||
|
||||
def show_residual_chart():
|
||||
@@ -29,6 +32,7 @@ def show_residual_chart():
|
||||
ec="r",
|
||||
shrinkA=5, shrinkB=5))
|
||||
plt.title("Kalman Filter Prediction Update Step")
|
||||
plt.axis('equal')
|
||||
plt.show()
|
||||
|
||||
|
||||
@@ -46,6 +50,7 @@ def show_position_chart():
|
||||
plt.yticks(np.arange(1,4,1))
|
||||
plt.show()
|
||||
|
||||
|
||||
def show_position_prediction_chart():
|
||||
""" displays 3 measurements, with the next position predicted"""
|
||||
|
||||
@@ -90,6 +95,7 @@ def show_x_error_chart():
|
||||
|
||||
plt.show()
|
||||
|
||||
|
||||
def show_x_with_unobserved():
|
||||
""" shows x=1,2,3 with velocity superimposed on top """
|
||||
|
||||
@@ -122,6 +128,59 @@ def show_x_with_unobserved():
|
||||
|
||||
|
||||
|
||||
def plot_3d_covariance(mean, cov):
|
||||
""" plots a 2x2 covariance matrix positioned at mean. mean will be plotted
|
||||
in x and y, and the probability in the z axis.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
mean : 2x1 tuple-like object
|
||||
mean for x and y coordinates. For example (2.3, 7.5)
|
||||
|
||||
cov : 2x2 nd.array
|
||||
the covariance matrix
|
||||
|
||||
"""
|
||||
|
||||
# compute width and height of covariance ellipse so we can choose
|
||||
# appropriate ranges for x and y
|
||||
o,w,h = stats.covariance_ellipse(cov,3)
|
||||
# rotate width and height to x,y axis
|
||||
wx = abs(w*np.cos(o) + h*np.sin(o))*1.2
|
||||
wy = abs(h*np.cos(o) - w*np.sin(o))*1.2
|
||||
|
||||
|
||||
# ensure axis are of the same size so everything is plotted with the same
|
||||
# scale
|
||||
if wx > wy:
|
||||
w = wx
|
||||
else:
|
||||
w = wy
|
||||
|
||||
minx = mean[0] - w
|
||||
maxx = mean[0] + w
|
||||
miny = mean[1] - w
|
||||
maxy = mean[1] + w
|
||||
|
||||
xs = np.arange(minx, maxx, (maxx-minx)/40.)
|
||||
ys = np.arange(miny, maxy, (maxy-miny)/40.)
|
||||
xv, yv = np.meshgrid (xs, ys)
|
||||
|
||||
zs = np.array([100.* stats.multivariate_gaussian(np.array([x,y]),mean,cov) \
|
||||
for x,y in zip(np.ravel(xv), np.ravel(yv))])
|
||||
zv = zs.reshape(xv.shape)
|
||||
|
||||
ax = plt.figure().add_subplot(111, projection='3d')
|
||||
ax.plot_surface(xv, yv, zv, rstride=1, cstride=1, cmap=cm.autumn)
|
||||
|
||||
ax.set_xlabel('X')
|
||||
ax.set_ylabel('Y')
|
||||
|
||||
ax.contour(xv, yv, zv, zdir='x', offset=minx-1, cmap=cm.autumn)
|
||||
ax.contour(xv, yv, zv, zdir='y', offset=maxy, cmap=cm.BuGn)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
show_residual_chart()
|
||||
plot_3d_covariance((2,7), np.array([[8.,0],[0,4.]]))
|
||||
#show_residual_chart()
|
||||
@@ -133,19 +133,46 @@ def plot_gaussian(mean, variance,
|
||||
plt.ylabel(ylabel)
|
||||
|
||||
|
||||
def covariance_ellipse(P):
|
||||
def covariance_ellipse(P, deviations=1):
|
||||
""" returns a tuple defining the ellipse representing the 2 dimensional
|
||||
covariance matrix P.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
P : nd.array shape (2,2)
|
||||
covariance matrix
|
||||
|
||||
deviations : int (optional, default = 1)
|
||||
# of standard deviations. Default is 1.
|
||||
|
||||
Returns (angle_radians, width_radius, height_radius)
|
||||
"""
|
||||
U,s,v = linalg.svd(P)
|
||||
orientation = math.atan2(U[1,0],U[0,0])
|
||||
width = math.sqrt(s[0])
|
||||
height = math.sqrt(s[1])
|
||||
width = deviations*math.sqrt(s[0])
|
||||
height = deviations*math.sqrt(s[1])
|
||||
|
||||
assert width >= height
|
||||
|
||||
return (orientation, width, height)
|
||||
|
||||
|
||||
def is_inside_ellipse(x,y, ex, ey, orientation, width, height):
|
||||
|
||||
co = np.cos(orientation)
|
||||
so = np.sin(orientation)
|
||||
|
||||
xx = x*co + y*so
|
||||
yy = y*co - x*so
|
||||
|
||||
return (xx / width)**2 + (yy / height)**2 <= 1.
|
||||
|
||||
|
||||
return ((x-ex)*co - (y-ey)*so)**2/width**2 + \
|
||||
((x-ex)*so + (y-ey)*co)**2/height**2 <= 1
|
||||
|
||||
|
||||
|
||||
def plot_covariance_ellipse(mean, cov=None, variance = 1.0,
|
||||
ellipse=None, title=None, axis_equal=True,
|
||||
facecolor='none', edgecolor='blue'):
|
||||
@@ -191,7 +218,8 @@ def plot_covariance_ellipse(mean, cov=None, variance = 1.0,
|
||||
height = ellipse[2] * 2.
|
||||
|
||||
for var in variance:
|
||||
e = Ellipse(xy=mean, width=var*width, height=var*height, angle=angle,
|
||||
sd = np.sqrt(var)
|
||||
e = Ellipse(xy=mean, width=sd*width, height=sd*height, angle=angle,
|
||||
facecolor=facecolor,
|
||||
edgecolor=edgecolor,
|
||||
lw=1)
|
||||
@@ -214,23 +242,55 @@ def _to_cov(x,n):
|
||||
|
||||
|
||||
def test_gaussian():
|
||||
import scipy.stats
|
||||
import scipy.stats
|
||||
|
||||
mean = 3.
|
||||
var = 1.5
|
||||
std = var*0.5
|
||||
mean = 3.
|
||||
var = 1.5
|
||||
std = var*0.5
|
||||
|
||||
for i in np.arange(-5,5,0.1):
|
||||
p0 = scipy.stats.norm(mean, std).pdf(i)
|
||||
p1 = gaussian(i, mean, var)
|
||||
for i in np.arange(-5,5,0.1):
|
||||
p0 = scipy.stats.norm(mean, std).pdf(i)
|
||||
p1 = gaussian(i, mean, var)
|
||||
|
||||
assert abs(p0-p1) < 1.e15
|
||||
assert abs(p0-p1) < 1.e15
|
||||
|
||||
|
||||
def do_plot_test():
|
||||
|
||||
from numpy.random import multivariate_normal
|
||||
p = np.array([[32, 15],[15., 40.]])
|
||||
|
||||
x,y = multivariate_normal(mean=(0,0), cov=p, size=5000).T
|
||||
sd = 2
|
||||
a,w,h = covariance_ellipse(p,sd)
|
||||
print (np.degrees(a), w, h)
|
||||
|
||||
count = 0
|
||||
color=[]
|
||||
for i in range(len(x)):
|
||||
if is_inside_ellipse(x[i], y[i], 0, 0, a, w, h):
|
||||
color.append('b')
|
||||
count += 1
|
||||
else:
|
||||
color.append('r')
|
||||
plt.scatter(x,y,alpha=0.2, c=color)
|
||||
|
||||
|
||||
plt.axis('equal')
|
||||
|
||||
plot_covariance_ellipse(mean=(0., 0.),
|
||||
cov = p,
|
||||
variance=sd*sd)
|
||||
|
||||
print (count / len(x))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
from scipy.stats import norm
|
||||
|
||||
do_plot_test()
|
||||
|
||||
test_gaussian()
|
||||
|
||||
# test conversion of scalar to covariance matrix
|
||||
@@ -249,6 +309,7 @@ if __name__ == '__main__':
|
||||
cov = np.array([[1.0, 1.0],
|
||||
[1.0, 1.1]])
|
||||
|
||||
plt.figure()
|
||||
P = np.array([[2,0],[0,2]])
|
||||
plot_covariance_ellipse((2,7), cov=cov, variance=[1,2], title='my title')
|
||||
plt.show()
|
||||
|
||||
Reference in new issue
Block a user