{
 "metadata": {
  "name": "",
  "signature": "sha256:bacbdf37e5f8b4f5a0841d27be72d89c6cfab901e53ba2bc642b422618558c14"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from __future__ import division, print_function\n",
      "%matplotlib inline\n",
      "import sys\n",
      "sys.path.insert(0,'..') # allow us to format the book\n",
      "sys.path.insert(0,'../code') \n",
      "\n",
      "# use same formatting as rest of book so that the plots are\n",
      "# consistant with that look and feel.\n",
      "import book_format\n",
      "book_format.load_style(directory='..')\n",
      "\n",
      "\n",
      "\n",
      "def update(mu1, var1, mu2, var2):\n",
      "    mean = (var1*mu2 + var2*mu1) / (var1+var2)\n",
      "    variance = 1 / (1/var1 + 1/var2)\n",
      "    return (mean, variance)\n",
      "\n",
      "def predict(pos, variance, movement, movement_variance):\n",
      "    return (pos + movement, variance + movement_variance)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This notebook creates the animations for the Kalman Filter chapter. It is not really intended to be a readable part of the book, but of course you are free to look at the source code, and even modify it. However, if you are interested in running your own animations, I'll point you to the examples subdirectory of the book, which contains a number of python scripts that you can run and modify from an IDE or the command line. This module saves the animations to GIF files, which is quite slow and not very interactive. "
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def plot_3d_covariance(ax, mean, cov):\n",
      "    \"\"\" plots a 2x2 covariance matrix positioned at mean. mean will be plotted\n",
      "    in x and y, and the probability in the z axis.\n",
      "\n",
      "    Parameters\n",
      "    ----------\n",
      "    mean :  2x1 tuple-like object\n",
      "        mean for x and y coordinates. For example (2.3, 7.5)\n",
      "\n",
      "    cov : 2x2 nd.array\n",
      "       the covariance matrix\n",
      "\n",
      "    \"\"\"\n",
      "\n",
      "    # compute width and height of covariance ellipse so we can choose\n",
      "    # appropriate ranges for x and y\n",
      "    o,w,h = stats.covariance_ellipse(cov,3)\n",
      "    # rotate width and height to x,y axis\n",
      "    wx = abs(w*np.cos(o) + h*np.sin(o))*1.2\n",
      "    wy = abs(h*np.cos(o) - w*np.sin(o))*1.2\n",
      "\n",
      "\n",
      "    # ensure axis are of the same size so everything is plotted with the same\n",
      "    # scale\n",
      "    if wx > wy:\n",
      "        w = wx\n",
      "    else:\n",
      "        w = wy\n",
      "\n",
      "    minx = mean[0] - w\n",
      "    maxx = mean[0] + w\n",
      "    miny = mean[1] - w\n",
      "    maxy = mean[1] + w\n",
      "\n",
      "    xs = np.arange(minx, maxx, (maxx-minx)/40.)\n",
      "    ys = np.arange(miny, maxy, (maxy-miny)/40.)\n",
      "    xv, yv = np.meshgrid (xs, ys)\n",
      "\n",
      "    zs = np.array([100.* stats.multivariate_gaussian(np.array([x,y]),mean,cov) \\\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=minx-1, cmap=cm.autumn)\n",
      "    ax.contour(xv, yv, zv, zdir='y', offset=maxy, cmap=cm.BuGn)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from __future__ import print_function, division\n",
      "import matplotlib.pyplot as plt\n",
      "import numpy.random as random\n",
      "import math\n",
      "import stats\n",
      "from gif_animate import animate\n",
      "\n",
      "\n",
      "\n",
      "sensor_error = 1.2**2\n",
      "movement_error = .2\n",
      "movement = 0\n",
      "voltage = (25,20) #who knows what the first value is?\n",
      "\n",
      "volts = [14.44, 18.74, 17.21, 15.98, 16.76, 14.8, 16.01, 16.90, 15.41, 17.31,\n",
      "        16.39, 17.96]\n",
      "ps = [voltage[0]]\n",
      "\n",
      "\n",
      "i = 0\n",
      "pred = 0\n",
      "def volt_animate(frame):\n",
      "    global i, ps, voltage, Z, x, pred\n",
      "    \n",
      "    step = frame % 4\n",
      "    plt.subplot(211)\n",
      "    plt.ylim([14,26])\n",
      "\n",
      "    if step == 0:\n",
      "        prev = voltage[0]\n",
      "        voltage = predict(voltage[0], voltage[1], movement, movement_error)\n",
      "        pred = voltage[0]\n",
      "        plt.plot ([i, i+1], [prev, pred], c='g') \n",
      "        \n",
      "    elif step == 1:\n",
      "        Z = volts[i]\n",
      "        i += 1\n",
      "        \n",
      "        plt.scatter(i, Z, marker='+', s=64, color='r')\n",
      "\n",
      "    elif step == 2:\n",
      "        plt.plot ([i,i], [pred, Z], c='r', alpha=0.3)\n",
      "\n",
      "    else:\n",
      "        voltage = update(voltage[0], voltage[1], Z, sensor_error)\n",
      "        ps.append(voltage[0])\n",
      "        plt.plot(ps, c='b')\n",
      "        \n",
      "    plt.subplot(212)\n",
      "    plt.cla()\n",
      "    stats.plot_gaussian(voltage[0], voltage[1], xlim=[0,32])\n",
      "    plt.ylim([0,1])\n",
      "    plt.tight_layout()\n",
      "        \n",
      "N=12\n",
      "animate('05_volt_animate.gif', volt_animate, N*3, 350)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nHD9+HH/9618xa9YsqUuzidamKV2yZAlWrVqF3r17IyYmBqmpqQgICMCMGTOaf1ErjZo1SUZGhiCT\nyQS5XC7IZDLtQy6XC4cOHZK6PJvYtGmTEBUVJXh5eQkJCQnCjz/+KHVJkjH2syCTyYRXX31V6tLs\ngqtfriEIgvD1118LAwYMELy9vYXY2Fjh/fffl7okyVRXVwvPPvusEBUVJfj4+Ag9evQQXnrpJaG+\nvl7q0myiKT/0f2/MmTNHu87KlSuF8PBwwdvbWxg1apSQl5fX4mtySjgiIiIdzn0tBBERkYkYjERE\nRDoYjERERDoYjERERDoYjERERDoYjERERDoYjERERDoYjERERDoYjERERDoYjERERDoYjERERDoY\njERERDoYjERERDoYjERERDoYjERERDoYjERERDpaDcbDhw9j4sSJ6Nq1K+RyOdLT01t90RMnTmDk\nyJHw9fVF165d8frrr1ukWCIiImtrNRhramrQv39/rF+/Hj4+PpDJZC2uX1lZibFjxyI8PBw5OTlY\nv3491qxZg3Xr1lmsaCIiImuRCYIgtHXlgIAAbNy4ETNnzmx2nbS0NCxfvhylpaXw8vICALzxxhtI\nS0vDpUuX2l8xERGRFVn8HOORI0dw//33a0MRABITE1FcXIzCwkJLvx0REZFFuVv6BZVKJbp16yZq\nCw0N1T7XvXt3bXtFRYWl356IiEhEoVCYtL7Fe4ytnYMkIiKyZxYPxrCwMCiVSlFbaWmp9jkiIiJ7\nZvFDqUOHDsWyZctQX1+vPc+4f/9+dOnSRXQYVZ+pXV1nkJOTAwBISEiQuBLbc+V9B7j/3H/uP2Dd\n/W/Pqbo2Xa6Rm5uL3NxcqNVqFBYWIjc3F0VFRQCA5cuXY8yYMdr1Z8yYAV9fX8yePRt5eXn48ssv\n8dZbbyE5OdnsIomIiGyl1WDMzs5GXFwc4uLiUFdXh5SUFMTFxSElJQWAZkBNQUGBdv0OHTpg//79\nKC4uRkJCAp555hk899xzWLp0qfX2goiIyEJaPZQ6atQoqNXqZp/fsmWLQds999yDQ4cOta8yIiIi\nCXCuVCIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0M\nRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIi\nIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh0MRiIiIh1tCsZNmzYhOjoaPj4+\nSEhIQGZmZovr7927F0OGDEGHDh3QuXNnTJo0Cfn5+RYpmIiIyJpaDcbt27djyZIlWLFiBXJzczFs\n2DAkJSWhqKjI6Prnzp3DpEmTMGrUKOTm5uL7779HXV0dxo8fb/HiiYiILK3VYFy3bh3mzJmDuXPn\nIjY2Fu+99x7Cw8ORlpZmdP3c3Fyo1WqsXr0aPXr0wIABA7Bs2TKcP38eZWVlFt8BIiIiS2oxGBsa\nGnDs2DEkJiaK2hMTE5GVlWV0m+HDh8Pf3x8fffQRVCoVqqqq8Le//Q2DBw9GYGCg5SonIiKyghaD\n8dq1a1CpVAgNDRW1h4SEQKlUGt0mPDwce/fuxYoVK+Dt7Y2OHTsiLy8PX331leWqJiIishJ3S79g\nQUEBJk2ahDlz5mDGjBmorKzEK6+8gqlTp+LAgQOQyWRGt8vJybF0KQ6D++66uP/cf1dmzf2PiYkx\ne9sWgzE4OBhubm4oLS0VtZeWliI8PNzoNps3b0ZkZCTeeustbdu2bdsQGRmJI0eOYNiwYWYXS0RE\nZG0tBqOnpyfi4+Oxb98+TJ48Wdu+f/9+TJkyxeg2giBALhcfoW1aVqvVzb5XQkJCm4t2Fk3/W+K+\nux7uP/cf4P5bc/8rKirM3rbVUanJycn429/+ho8//hinTp3C4sWLoVQq8dRTTwEAli9fjjFjxmjX\nnzhxIo4dO4bXX38d+fn5OHbsGObMmYNu3bohPj7e7EKJiIhsodVzjFOnTsX169eRmpqKkpIS9OvX\nD3v37kVkZCQAQKlUoqCgQLv+fffdh+3bt+PNN9/E22+/DV9fXwwdOhTffvstfHx8rLcnREREFtCm\nwTcLFizAggULjD63ZcsWg7Y//OEP+MMf/tC+yoiIiCTAuVKJiIh0MBiJiIh0MBiJiIh0MBiJiIh0\nMBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJ\niIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0\nMBiJiIh0MBiJiIh0MBiJiIh0MBiJiIh0tCkYN23ahOjoaPj4+CAhIQGZmZmtbvPuu++id+/e8Pb2\nRkREBJYvX97uYomIiKzNvbUVtm/fjiVLliAtLQ333XcfNm7ciKSkJJw8eRKRkZFGt0lOTsbXX3+N\ntWvXol+/fqioqEBJSYnFiyciIrK0VoNx3bp1mDNnDubOnQsAeO+99/Dtt98iLS0Nq1atMlj/zJkz\n2LBhA06cOIHY2Fht+4ABAyxYNhERkXW0eCi1oaEBx44dQ2Jioqg9MTERWVlZRrfZvXs3evTogb17\n96JHjx6Ijo7G7NmzcfXqVctVTUREZCUtBuO1a9egUqkQGhoqag8JCYFSqTS6TUFBAQoLC7Fjxw58\n8skn2Lp1K06fPo0JEyZAEATLVU7kQtSCGr+c+wm7ftyC7NOHoFI1Sl0SkdNq9VCqqdRqNerr67F1\n61b07NkTALB161bExsYiJycHgwYNMrpdTk6OpUtxGNx319WW/RcEAf/O342Cq79q2/b/9E+M7jMd\nbnI3a5Zndfz+uf/WEhMTY/a2LfYYg4OD4ebmhtLSUlF7aWkpwsPDjW4THh4Od3d3bSgCQM+ePeHm\n5oaLFy+aXSiRq7pw9VdRKAKAsuI3nCz+SaKKiJxbiz1GT09PxMfHY9++fZg8ebK2ff/+/ZgyZYrR\nbe677z40NjaioKAAPXr0AKA5vKpSqdC9e/dm3yshIcGc+h1a0/+WuO+up637LwgC9m1LN/rc2dIc\nPDHhabi7eVi8Pmvj98/9B6y7/xUVFWZv2+p1jMnJyfjb3/6Gjz/+GKdOncLixYuhVCrx1FNPAQCW\nL1+OMWPGaNcfM2YM4uLi8Kc//Qm5ubk4fvw4/vSnP2HIkCEu+0NAZK6iK+ehLCsy+lxNXRVOFR63\ncUVEzq/VYJw6dSreffddpKamYuDAgcjKysLevXu11zAqlUoUFBRo15fJZNizZw9CQkIwYsQIjBs3\nDt26dcPu3buttxdETuromcMtPp9z+pCNKiFyHW0afLNgwQIsWLDA6HNbtmwxaAsLC8OOHTvaVxkR\n4fTFXNHyyHsfwaHcPdrlMxd/gVpQQy7j7I5ElsJ/TUR2qrLmBkqu3xmwJpPJMe53j8PXy1/bdrO+\nGpev/iZBdUTOi8FIZKfyL50QLUeG3AU/7wD07NpXb73/2rIsIqfHYCSyU78pz4iWY7rec/vPfqL2\nguJTNquJyBUwGIns1KUrBaLlqLBeAIDo8N6i9qLS8zaricgVMBiJ7JBaUOPSVXEwdg3RXBccHtQd\nbvI74+bKq6+h6uYNm9ZH5MwYjER26NqNEtTfqtMu+3r5IzAgBADg4e6BiGDxZBlFV9hrJLIUBiOR\nHSq6YthblMlk2uVuIT1Fz+sfdiUi8zEYieyQ/mHUyNuHUZvo9xiVZZesXhORq2AwEtmhy1cviJa7\ndhYHY1hQpGi5pIwT9BNZCoORyA6Vll8WLYcHdRMthwWKl6+UXYZarbJ6XUSugMFIZGfqb9WhvOqq\ndlkmk6NzxwjROgG+Cvj5dNAu31I14HrlFZvVSOTMGIxEduZKebFoOahDCDzcPQ3WCwsUH05t7i4c\nRGQaBiORnblSLh5IE9qpq9H1wvWCUXdeVSIyH4ORyM6UlonPL4YGGg9G/QE47DESWQaDkcjOlBr0\nGLsYXU+/J3nthtJqNRG5EgYjkZ3RH5HaXI8xuGOYaPlqRYnVaiJyJQxGIjsiCAKu6g2+CWmmx9jJ\nP1g0Z2pNbSVu1ldbtT4iV8BgJLIjlTfLcUvVoF329vSFn3eA0XXlcjcEKUJFbTycStR+DEYiO3K9\nQnwtYpAiVDRHqr7OinDR8rUKBiNRezEYiezI9cpS0XJQh9Bm1tTQP8947QbPMxK1F4ORyI5c1+vx\nBXUIaXH9YIX+ABz2GInai8FIZEf0p3XTP4eor3NHHkolsjQGI5EdMflQqv45Rh5KJWo3BiORHSmr\n0AvGVnqMgR06Qya788+4oqYMDbfqrVIbkatgMBLZCZWqEeXV10Vtga2cY3R380BgQGdRGw+nErUP\ng5HITpRVXYUgqLXLHXw7wdPdq9XtDEamcgYconZhMBLZiTK9gTeBipZ7i02CO4iDUf9aSCIyTZuC\ncdOmTYiOjoaPjw8SEhKQmZnZphfPz89HQEAAAgKMz9xBRHeYOvBGu57eecjrlTyUStQerQbj9u3b\nsWTJEqxYsQK5ubkYNmwYkpKSUFTU8i1uGhoaMG3aNIwcObLFmTuISOO63sCb4FYG3jQxmBZO73WI\nyDStBuO6deswZ84czJ07F7GxsXjvvfcQHh6OtLS0FrdbtmwZ7r33XkyZMgWCIFisYCJnpd9jDGxr\nj7GDfo+RwUjUHi0GY0NDA44dO4bExERRe2JiIrKysprd7uuvv8bXX3+N999/n6FI1Eb6Pca2HkrV\nn/2mrOIK1DqDeIjINO4tPXnt2jWoVCqEhor/gYaEhECpNH4eo7i4GPPmzcOuXbvg6+vb5kJycnLa\nvK6z4b67Lt39Ly0T34exuLAUlaVtuybRw80Lt1SadW+pGpCZdQi+XvZ/bp/fP/ffWmJiYsze1uKj\nUp944gksWLAAgwYNsvRLEzmtW6oG1N26qV2WQQZfrw5t3j7Au5Noubr+hsVqI3I1LfYYg4OD4ebm\nhtJS8SGe0tJShIeHG90mIyMDhw8fxquvvgpAc+NVtVoNDw8PpKWl4cknnzS6XUJCgjn1O7Sm/y1x\n312P/v4XX/sN+OnO84GKEAweNLjNr/eL8nuUnb9zFCc4vCMS7rbfz5bfP/cfsO7+V1RUmL1ti8Ho\n6emJ+Ph47Nu3D5MnT9a279+/H1OmTDG6za+//ipa3rVrF9544w1kZ2cjIiLC7EKJnJnB5OFtPL+o\nXV/vPKP+6xFR27UYjACQnJyMJ554AoMHD8awYcPwwQcfQKlU4qmnngIALF++HNnZ2fj+++8BAH36\n9BFt//PPP0Mulxu0E9Ed5g680a6vfy0jp4UjMlurwTh16lRcv34dqampKCkpQb9+/bB3715ERkYC\nAJRKJQoKClp8DV7HSNQyw4v72zbrzZ319YORl2wQmavVYASABQsWYMGCBUaf27JlS4vbzp49G7Nn\nzza5MCJXYngfxrBm1jROfzIAXstIZD7OlUpkB/QPfbZ2uyl9nQJCIMOdIzMV1WW41dhgkdqIXA2D\nkUhigiAYGXxj2qFUD3cPKPwD77wmBJRVXbVIfUSuhsFIJLHq2ko03KrTLnu6e8HfR2Hy6xiMTOV5\nRiKzMBiJJFamP/BGEWrWgDX9XiZHphKZh8FIJDH9u2GYeqmGdjtey0hkEQxGIokZXKph4sCbJgYj\nU9ljJDILg5FIYvqHUgNNHHjTRL+neY2XbBCZhcFIJLHrFe2bDk67nUGPsZS3fSMyA4ORSGKGs96Y\nF4wdfDvBw81Tu1zXcBM366vbVRuRK2IwEklIrVYZXG9o7jlGmUyGQIX+yFQeTiUyFYORSEI3qq9D\nrVZpl/18OsDb08fs1wvuoD8ylcFIZCoGI5GE9C/VCDbzMGqTIL0eo/7rE1HrGIxEEjKcI9W0ycP1\nBen1GMsYjEQmYzASSUj/UKf+tYim0j8/ea2S1zISmYrBSCQhS81609z2HHxDZDoGI5GELH4oVa/H\nWFZ1VTS4h4hax2AkkpD+7DTtPZTq7ekjujOHWq3Cjerr7XpNIlfDYCSSSENjPWpqK7XLcrkbOvoH\ntft1De6ywUs2iEzCYCSSSHX9DdFyUEAI5HK3dr+u/uFYXrJBZBoGI5FEquvKRcvmznijz/C+jAxG\nIlMwGIkkUlWn12Ns58Cb5l6Hh1KJTMNgJJKIfo+xvQNvmnsd9hiJTMNgJJKIQY+xndcwNvc67DES\nmYbBSCQRw3OMljmU2jEgGHLZnX/aVTdvoP5WnUVem8gVMBiJJKAW1KiurxC1WepQqpvcDZ06dBa1\n8XAqUdsxGIkkcLO+Emrhzow0vt4B8PHys9jr83AqkfnaHIybNm1CdHQ0fHx8kJCQgMzMzGbXPXjw\nIH7/+98jIiICfn5+GDBgALZs2WKRgomcQWVdmWg5pGOERV+fA3CIzNemYNy+fTuWLFmCFStWIDc3\nF8OGDUNSUhKKioqMrn/kyBEMGDAAX3zxBfLy8rBgwQLMmzcP//jHPyxaPJGjqqwVT9MW0smywRjI\nHiOR2dzbstK6deswZ84czJ07FwDw3nvv4dtvv0VaWhpWrVplsP7y5ctFy0899RQyMjLwxRdfYPr0\n6RYom8ixVegHo8V7jHrXMrLHSNRmrfYYGxoacOzYMSQmJoraExMTkZWV1eY3qqioQGBgoOkVEjmh\nylq9Q6mdulj09XmOkch8rfYYr127BpVKhdBQ8T+0kJAQKJVtuwnqnj17cODAAZOClMiZGR5KtXAw\nGjnHKAgCZDKZRd+HyBm16VBqe/z73//GH//4R7z//vtISEhodr2cnBxrl2K3uO+upVF1CzV6l2pc\nPF+M4t+uWuw9BEGAh5sXbqnqAWju5HE4KwN+Xh0s9h6W4Irfvy7uv/X2PyYmxuxtWz2UGhwcDDc3\nN5SWig/FlJaWIjw8vMVtMzMzMX78eLz++uuYP3++2UUSOZMqvQv7/b0UcHfzsOh7yGQyKHyDRW0V\nNy0XvETOrNUeo6enJ+Lj47Fv3z5MnjxZ275//35MmTKl2e0OHz6MRx55BK+99hr+8pe/tFpIS71J\nZ9X0vyXuu2s5np8F5N5Z7hrWwyqfw9nyI7h28rJ2OSDYBwkD7ePzduXvH+D+22L/KyoqWl+pGW06\nlJqcnIwnnngCgwcPxrBhw/DBBx9AqVTiqaeeAqAZhZqdnY3vv/8egOY6xocffhiLFi3C9OnTteci\n3dzc0Llz52bfh8gVXC2/LFoOtfD5xSZhQZGi5dIy45dXEZFYm4Jx6tSpuH79OlJTU1FSUoJ+/fph\n7969iIzU/MNTKpUoKCjQrp+eno66ujqsWbMGa9as0bZHRUWJ1iNyRVduFIuWO1v4Uo0mYYHiYFRe\nv2SV9yFyNm0efLNgwQIsWLDA6HP6s9ps2bKFM90QNaPk+kXRstV6jPrBWFbEkalEbcC5UolsSK1W\nQal3SDM8qLtV3qtjQDA8Pby1yzfrq1F180YLWxARwGAksqlrFaW41digXfbz6YAAX4VV3ksukyOs\nU1dRm34oE5EhBiORDZVcLxQtRwR1t+qhTf0BOAxGotYxGIlsqPiaXjAGW+cwapNQvfOMJdcZjESt\nYTAS2VCxXo/RWucXta+vF4yXr16w6vsROQMGI5ENldi4x9g1pIdo+fK1C1CrVc2sTUQAg5HIZmrr\nb+LqjRJRm/4lFZam8AtEgM+dwT23GhtQWl7cwhZExGAkspFLV89DgKBdVvgEw9vTx6rvKZPJ0DXk\nLoM6iKh5DEYiG7lYKg6kIP+WJ+G3lEi9w6lFVzj7FFFLGIxENnKxNF+0HORvnang9HXpLA7GS1fY\nYyRqCYORyEYuXjknWg6WrMd4HioOwCFqFoORyAZqaitxveLOPU1lkKGTX6hN3juoQ6hoAE79rToU\nX/vNJu9N5IgYjEQ2cL74lGi5o1+IxW9O3ByZTIboiLtFbQV69RDRHQxGIhs4dzlPtBzaoZtN379H\nRG/RMoORqHkMRiIbOHf5V9Gy7YOxj2i5oPgUBEFoZm0i18ZgJLKym/XVuHxFPBVbqMK2wdi1czQ8\n3Dy1yxU1ZQaTDRCRBoORyMrOXz4purA/PKgbvD38bFqDu5sHovUOp54qPGbTGogcBYORyMryLuSI\nlnt2uUeSOvpExYmWT/7GYCQyhsFIZEVqQY1fL2SL2vpGx0tSy93dxe977tKvaGisl6QWInvGYCSy\noqLS86isKdcue3l4I6Zrf0lqCQvsik4BnbXLt1QNOHPxF0lqIbJnDEYiK/rl/E+i5d7dB8LD3TbX\nL+qTyWToGyXuNR49c1iSWojsGYORyEpUahWyT2WI2vr1GCxRNRrxsfeLlk+c/xm19TclqobIPjEY\niazkdOFxVNSUaZc9PbzR/64hElYEREfcjUC9w6m557IkrIjI/jAYiazk3ye+Ey3HxQy3+v0XWyOX\nyZHQe6So7dDxr3ixP5EOBiORFRRdKTAYjTqk71iJqhEb0ncMZLI7//SLrxfiVOFxCSsisi8MRiIr\n+Oanf4iWu4X0RHR4rETViAUrwnBvz6Gitj1HtkHNW1ERAWAwEllcbn6WQW8xacg0yGQyiSoyNDr+\nUbbmEVcAAAlaSURBVNHypSsF+PG/30hUDZF9aVMwbtq0CdHR0fDx8UFCQgIyMzNbXP/EiRMYOXIk\nfH190bVrV7z++usWKZbI3l29UYLtGR+I2qLCYtEnSpqL+pvTLbQnBsYMF7X9K/MTFCrzJaqIyH60\nGozbt2/HkiVLsGLFCuTm5mLYsGFISkpCUVGR0fUrKysxduxYhIeHIycnB+vXr8eaNWuwbt06ixdP\nZE9Kyy5h0z9Xoqa2UtvmJnfHtNEL7Kq32OSxEXPhpTMY6JaqAZv/lYrflGclrIpIeq0G47p16zBn\nzhzMnTsXsbGxeO+99xAeHo60tDSj63/66aeoq6tDeno6+vTpg8mTJ2PZsmUMRnJaVTdv4Lufd2LN\nZ8/hemWp6LmkIdMQERwlTWGtUPgHYsqoeaK26toKrN/5InZn/g0V1WXNbEnk3NxberKhoQHHjh3D\n888/L2pPTExEVpbxa5+OHDmC+++/H15eXqL1X375ZRQWFqJ79+5Gt7tYek603PLw8eafa3Erc1+z\nxZHsLW3X8vuVVlwEAJy/7KPT2sIWdlV/C6/YwnZNd5koLj8PADhV6Nau17N1/WpBhZq6alTXVqKs\n8gouXS1AUek5qAW1wbqDeo/CmITHzKrBVgbf/QBKrl/ED0f/qW1TqRvxw9FdOHB0N7p0jkbXkB7o\nrAiHv68C3p6+8Pb0gZvcDTKZDHKZHDKZ7t/b1jO+VlUMwPDfvau4Xq255Rf333r7r/Du3PpKzWgx\nGK9duwaVSoXQ0FBRe0hICJRKpdFtlEolunUT32uuaXulUtlsMK797Lk2F+1svvu19XWc1fcnpa7A\nOgbf/QCmj14Iucz+x7dNGP4E3ORu2Jf9uahdgIBLVwtw6WqB1d5773+t9tIO4WsXn6rWmvv/+ux0\ns7dtMRjNYe65lPbsBJE9qq6uafa5mJgYAEBFRYWtymnR/X0n4P6+E6Qug8gutPjf2eDgYLi5uaG0\nVHzepLS0FOHh4Ua3CQsLM+hNNm0fFhbWnlqJiIisrsVg9PT0RHx8PPbt2ydq379/P4YNG2Z0m6FD\nh+LHH39EfX29aP0uXbo0exiViIjIXsiEVkYo7NixA0888QQ2bdqEYcOG4YMPPsCWLVuQl5eHyMhI\nLF++HNnZ2fj+++8BaC7XiI2NxahRo7BixQqcOXMGc+bMwcqVK7F06VKb7BQREZG5Wj3HOHXqVFy/\nfh2pqakoKSlBv379sHfvXkRGRgLQDKgpKLhzcr5Dhw7Yv38/Fi5ciISEBAQGBuK5555jKBIRkUNo\ntcdIRETkSiQbS27qNHPOYuXKlZDL5aJHRESE1GVZzeHDhzFx4kR07doVcrkc6emGo49XrlyJLl26\nwNfXFw888ABOnnSeazha2//Zs2cb/Dw0d/7e0axevRqDBg2CQqFASEgIJk6ciLy8PIP1nPX7b8v+\nO/P3v3HjRgwYMAAKhQIKhQLDhg3D3r17RevY63cvSTCaOs2cs+nduzeUSqX2ceLECalLspqamhr0\n798f69evh4+Pj8HlPG+99RbWrVuHDRs2IDs7GyEhIRg7diyqq6slqtiyWtt/mUyGsWPHin4e9H95\nOKpDhw5h0aJFOHLkCA4cOAB3d3eMGTMG5eXl2nWc+ftvy/478/cfGRmJt99+G8ePH8fRo0fx4IMP\nYtKkSfjlF83Fi3b93QsSGDx4sDBv3jxRW0xMjLB8+XIpyrGplJQU4Z577pG6DEn4+/sL6enp2mW1\nWi2EhYUJq1at0rbV1tYKAQEBwubNm6Uo0ar0918QBGHWrFnCI488IlFFtlVdXS24ubkJe/bsEQTB\n9b5//f0XBNf6/gVBEAIDA4UPP/zQ7r97m/cYm6aZS0xMFLW3NM2csykoKECXLl3Qo0cPTJ8+HRcu\nXJC6JElcuHABpaWlop8Fb29vjBgxwmV+FmQyGTIzMxEaGorY2FjMmzcPV69elbosq6isrIRarUan\nTp0AuN73r7//gOt8/yqVCp999hnq6uowYsQIu//ubR6M5kwz50yGDBmC9PR0fPfdd/joo4+gVCox\nbNgwlJW53oTNTd+3q/4sAMC4ceOwdetWHDhwAO+88w5+/vlnPPjgg2hoaJC6NItbvHgxBg4ciKFD\nNTdJdrXvX3//Aef//k+cOAF/f394e3tj3rx52LFjB2JjY+3+u7f4lHDUsnHjxmn/fs8992Do0KGI\njo5Geno6L2nRYY+3abKGxx9/XPv3vn37Ij4+Ht27d8fXX3+NRx99tIUtHUtycjKysrKQmZnZpu/W\n2b7/5vbf2b//3r1747///S8qKiqwc+dOTJs2DRkZGS1uYw/fvc17jOZMM+fMfH190bdvX5w753qz\n7DdNEWjsZ8FVpw8MDw9H165dnernYenSpdi+fTsOHDiAqKgobburfP/N7b8xzvb9e3h4oEePHhg4\ncCBWrVqFIUOGYOPGjdrf9fb63ds8GM2ZZs6Z1dXV4dSpUy75n4Lo6GiEhYWJfhbq6uqQmZnpkj8L\nAHD16lVcvnzZaX4eFi9erA2FXr16iZ5zhe+/pf03xtm+f30qlQpqtdruv3u3lStXrrT1m3bo0AEp\nKSmIiIiAj48PUlNTkZmZiS1btkChUNi6HJt67rnn4O3tDbVajbNnz2LRokUoKCjA5s2bnXLfa2pq\ncPLkSSiVSnz88cfo168fFAoFbt26BYVCAZVKhTfffBOxsbFQqVRITk5GaWkpPvzwQ3h6ekpdfru1\ntP/u7u548cUX0aFDBzQ2NiI3NxdPPvkk1Go1NmzY4PD7v3DhQnzyySfYuXMnunbtiurqalRXV0Mm\nk8HT0xMymcypv//W9r+mpsapv/8XXnhB+7uuqKgI7777Lv7+97/j7bffxl133WXf371Uw2E3bdok\nREVFCV5eXkJCQoLw448//v/27hjHQRiIwrBMYTiBJaDwVWgQF6CgxDeBa9FwCsQFuAPlS5VossVu\nkw1R9H+SJRdTzGiK19lXtfJWwzCoqip571XXtfq+177vV7f1b9Z1lXNOzjllWfa4p5QeNdM0qSxL\nFUWhpmm0bduFHb/Wb/Of56mu6xRCkPdeMUallHQcx9Vtv8TPme9nnuenum/d/1/zf/v+x3FUjFF5\nniuEoLZttSzLU82n7p4n4QAAMD7/e3EAAN6IYAQAwCAYAQAwCEYAAAyCEQAAg2AEAMAgGAEAMAhG\nAAAMghEAAOMGDuCcAxTgf1AAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f2d5f871b70>"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src='05_volt_animate.gif'>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from __future__ import print_function, division\n",
      "import matplotlib.pyplot as plt\n",
      "import numpy.random as random\n",
      "import math\n",
      "import stats\n",
      "from gif_animate import animate\n",
      "\n",
      "# assume dog is always moving 1m to the right\n",
      "movement = 1\n",
      "movement_error = .05\n",
      "sensor_error = 4.5\n",
      "pos = (0, 100)   # gaussian N(0,100)\n",
      "\n",
      "# this is the recorded output of a run of the dog sensor with an initial\n",
      "# seed of 200\n",
      "ZS = [-2.07, 6.05, 4.51, 3.47, 5.76, 5.93, 6.53, 9.01, 7.53, 11.68, \n",
      "      11.15, 14.76, 13.45, 16.15, 19.05, 14.87, 20.90, 15.75, \n",
      "      17.16, 20.50]\n",
      "zs = []\n",
      "ps = []\n",
      "\n",
      "N=20\n",
      "\n",
      "def dog_animate(frame):\n",
      "    global pos, zs, ps,  N, ZS\n",
      "    pos = predict(pos[0], pos[1], movement, movement_error)    \n",
      "    Z = ZS[frame]\n",
      "    zs.append(Z)\n",
      "    \n",
      "    pos = update(pos[0], pos[1], Z, sensor_error)\n",
      "    ps.append(pos[0])\n",
      "\n",
      "\n",
      "    plt.subplot(211)\n",
      "    plt.plot(zs,c='r', linestyle='dashed')\n",
      "\n",
      "    plt.xlim([0,N*1.2])\n",
      "    plt.ylim([0,N*1.2])\n",
      "\n",
      "    if len(ps) > 1:\n",
      "        plt.plot(ps, c='#8EBA42')\n",
      "        \n",
      "    plt.subplot(212)\n",
      "    plt.cla()\n",
      "    stats.plot_gaussian(pos[0], pos[1], xlim=[0,N*1.2])\n",
      "    plt.ylim(0, 1)\n",
      "    plt.tight_layout()\n",
      "\n",
      "\n",
      "animate('05_dog_track.gif', dog_animate, N, 200)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nbO2Dx9V+eGwbJCUlmf3cbDCGhobCw8MDSqVS1K5UKiGXy42u89577yE2Nhavvvqqtm3dunWIjY3F\n7t27kZaWZmntRERELc5sMMpkMqSkpGDr1q0YPXq0tn3btm0YO3as0XU0Gg2kUvEV2vpltVptcl+p\nqakWF03m1f/NkMfU9nhs7YPH1X54bA2VlZWZ/bzRUalz5szB6tWrsXLlShw7dgwzZ86EQqHAtGnT\nAABz587F8OHDtf1HjhyJffv24aWXXsKpU6ewb98+TJ48Ge3bt0dKSkoz/zhERET21eg9xnHjxuHy\n5ctYtGgRioqK0K1bN2zatAmxsbEAAIVCgby8PG3/AQMGYP369XjllVfw2muvwc/PD/3798fmzZvh\n6+trvz8JERGRDVg0+Gb69OmYPn260c9WrVpl0DZmzBiMGTOmeZURERE5AOdKJSIi0sFgJCIi0sFg\nJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi\n0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFg\nJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0sFgJCIi0mFRMC5fvhwJCQnw9fVFamoqsrKyGl3n\nzTffRKdOneDj44OoqCjMnTu32cUSERHZm2djHdavX49Zs2ZhxYoVGDBgAN555x1kZmbi6NGjiI2N\nNbrOnDlzsHHjRrzxxhvo1q0bysrKUFRUZPPiiYiIbK3RYFyyZAkmT56MKVOmAADeeustbN68GStW\nrMDixYsN+p84cQLLli3DoUOHkJycrG3v0aOHDcsmIiKyD7OXUmtra7Fv3z5kZGSI2jMyMpCdnW10\nne+++w6JiYnYtGkTEhMTkZCQgEmTJqG4uNh2VRMREdmJ2WAsKSmBSqVCRESEqD08PBwKhcLoOnl5\necjPz8eGDRvw8ccfY+3atTh+/DjuvvtuaDQa21VORERkB41eSrWWWq1GTU0N1q5diw4dOgAA1q5d\ni+TkZOTk5KBPnz5G18vJybF1Ka0ej6n98NjaB4+r/fDYNkhKSjL7udkzxtDQUHh4eECpVIralUol\n5HK50XXkcjk8PT21oQgAHTp0gIeHB86fP29p3URE1AI0Gg2U5eeRV3wYZdcvO7ocp2D2jFEmkyEl\n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\nAAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f2d585b7e10>"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src='05_dog_track.gif'>"
     ]
    }
   ],
   "metadata": {}
  }
 ]
}