Started progress on the multidimensional kalman filter

This commit is contained in:
Roger Labbe committed 2014-05-01 01:30:47 -05:00
1 parent 6faab88559
commit 82717d4830
3 files changed
+500 -88

No files matched your search

+215 -86
View File
@@ -50,7 +50,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 34
"prompt_number": 12
},
{
"cell_type": "markdown",
@@ -74,11 +74,11 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"0.0883 1.1333 1.3527 -0.1540 1.0787 1.1940 -0.4908 0.9334 -1.3604 -1.5230 -1.1513 -1.0829 0.5573 0.7816 0.0587 -0.0605 0.0651 -0.4040 0.3429 0.2245\n"
"0.9827 0.4385 1.6524 0.6318 -0.2302 -1.0772 -0.0953 0.1147 1.1092 1.6671 0.1331 0.5139 -0.5076 -0.9376 -0.7724 0.4346 -0.3805 -1.9624 -0.3980 -0.9907\n"
]
}
],
"prompt_number": 35
"prompt_number": 13
},
{
"cell_type": "markdown",
@@ -117,7 +117,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2626cd0>"
"<matplotlib.figure.Figure at 0x28aa590>"
]
},
{
@@ -128,7 +128,7 @@
]
}
],
"prompt_number": 36
"prompt_number": 14
},
{
"cell_type": "markdown",
@@ -167,13 +167,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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\ndIJH/3pQZ86c0ZydnbWdO3dqmZmZhuPNmzfXdu3aZXh88eJFrWLFilpOTo4hUVy4cMFwvn379tq6\ndes0TdO0zp07a9OmTdMuXbpk9LM++ugjbeDAgYbHubm5Wr169bTdu3drmqZp7u7u2tKlS+9xnyzq\nn4QQFiMtTdMcHDTt779N/7Mf9ffaarqeSipVPKgmTZrw+eefM336dFxcXBg8eDAXL14kLi6OPn36\n4OjoiKOjI97e3tja2hq2hwVwdXU1fF+1alWuX78OwOLFizl9+jTNmzenffv2bN26FYCEhAQa3FZi\nWKfTUb9+faNtZevXr//gb0II8Wj0ehK7vcKzHa5Su7a5g3lwVpMozGnw4MH8+uuv6PV6dDodEyZM\noEGDBmzfvp2UlBTDV0ZGBnXq1Lnn6zVp0oTVq1dz6dIlJkyYQL9+/cjIyKBu3brobytar2ka586d\nM9otUEp0CGFCmgZhYWj+/nx3xoeR46qZO6KHIomilJ0+fZrw8HBu3bpFpUqVqFy5Mra2tvzzn/9k\n8uTJxMfHA3Dp0iU2b958X6+5cuVKLl26BICDgwM6nY4KFSrQv39/tm7dSnh4OFlZWcydO5fKlSvT\nsWPHUnt/Qghj58/nfZNX6ZXFi/lhfASbvCbSuatlzjSURFHKbt26xaRJk6hduzZ16tTh8uXLzJw5\nk7fffptevXrRrVs37O3t6dChAwcPHjQ8r7i//H/88Ud8fX2xs7Pj3XffZe3atVSqVIlmzZqxcuVK\nxowZQ+3atdm6dSvff/+9TIMVwkQOHlQL3n7dkKgWPAQGkrtnLxOW+zBlSslvKGQquryBDoug0+kK\nrRJb1HHx4OReCvHwRo6Ec+dUrabIrYnUbePKd9/BRx+pldLmShSP+nstiUIYkXspxMO5cQPq1YMj\nR2DlSti8GXbvVqU6Jk6EF180X2yP+nstXU9CCJHnzBm1evqBXLsGwMaNqjR4/fowYYKqtxQUBOnp\n0Lt3ycdqSpIohBAiT5cu8Pnn93lx3owmPD3h0iWWLlU1lkDVcVq2DJKSYNq0grpOlkq6noQRuZfC\nWv39NzRqBFWqwNGjULduMRfr9TB8uKoRvnQp8XY++PnBhQtq86B8OTmqRpO5SdeTEEKUgOhoaN9e\nbSQ0YUIRF+W3Ivz9ITDQUKNp2TIYONA4SUDZSBIlQeZNCiEEKlH4+cGUKdC8OezZowaijVLine truncated
"text": [
"<matplotlib.figure.Figure at 0x2d34b90>"
"<matplotlib.figure.Figure at 0x2e8cb50>"
]
}
],
"prompt_number": 37
"prompt_number": 15
},
{
"cell_type": "markdown",
@@ -200,13 +200,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2a0f350>"
"<matplotlib.figure.Figure at 0x28b11d0>"
]
}
],
"prompt_number": 38
"prompt_number": 16
},
{
"cell_type": "code",
@@ -220,13 +220,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2ebbf50>"
"<matplotlib.figure.Figure at 0x2917e10>"
]
}
],
"prompt_number": 39
"prompt_number": 17
},
{
"cell_type": "markdown",
@@ -259,11 +259,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x23a25d0>"
"<matplotlib.figure.Figure at 0x2d9ff90>"
]
}
],
"prompt_number": 40
"prompt_number": 18
},
{
"cell_type": "markdown",
@@ -281,10 +281,10 @@
"collapsed": false,
"input": [
"dog = dog_sensor (23, 0, 5)\n",
"ys = range (100)\n",
"xs = []\n",
"for i in ys:\n",
" xs.append (dog.sense())\n",
"xs = range (100)\n",
"ys = []\n",
"for i in xs:\n",
" ys.append (dog.sense())\n",
" \n",
"plot (xs,ys)\n",
"show()"
@@ -295,13 +295,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2a20490>"
"<matplotlib.figure.Figure at 0x2e5a390>"
]
}
],
"prompt_number": 41
"prompt_number": 19
},
{
"cell_type": "markdown",
@@ -379,11 +379,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAEACAYAAABS29YJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcTekfB/DPrW5SoUXSKi0SrbQwpIxoNGQZS2RvaMwY\nYzbDDGMd2yxmaJAZDIOUNUtiLGEMsjNKYoqUbJU2Wm7P74/zE6lu99a999zb/b5fr/tyl7N8Sufb\n6TnPeR4BY4yBEEJIo6bBdwBCCCHyR8WeEELUABV7QghRA1TsCSFEDVCxJ4QQNUDFnhBC1ECdxT4+\nPh7t27eHg4MDli5dWu3z2NhYuLm5wcPDA507d8axY8ckXpcQQohiCMT1sxeJRHB0dMSRI0dgYWEB\nLy8vREVFwcnJqXKZoqIi6OnpAQCuX7+OQYMG4fbt2xKtSwghRDHEntknJibC3t4eNjY2EAqFCAkJ\nQWxsbJVlXhZ6ACgsLETLli0lXpcQQohiiC32mZmZsLKyqnxtaWmJzMzMasvt2bMHTk5O6Nu3L1as\nWCHVuoQQQuRPbLEXCAQSbWTgwIFITk7Gvn37MHr0aNAIDIQQoly0xH1oYWGBjIyMytcZGRmwtLSs\ndXlfX1+Ul5cjJycHlpaWEq1rb2+PO3fu1Cc7IYSoLTs7O9y+fVvyFZgYZWVlzNbWlqWlpbGSkhLm\n5ubGkpKSqixz+/ZtVlFRwRhj7OLFi8zW1lbidf9/cVhcBKU3Z84cviM0COXnlyrnV+XsjKl+fmlr\np9gzey0tLURERCAwMBAikQhhYWFwcnJCZGQkACA8PBw7d+7Epk2bIBQKoa+vj23btoldlxBCiOKJ\nLfYA0LdvX/Tt27fKe+Hh4ZXPp0+fjunTp0u8LiGEEMWjO2gbyN/fn+8IDUL5+aXK+VU5O6D6+aUl\n9qYqhQQQCKj3DiGESEna2llnMw4hhLzJyMgIubm5fMdQC4aGhsjJyWnwdujMnhAiNTpuFae277W0\n/wfUZk8IIWqAij0hhKgBKvaEEKIGqNgTQtTa5MmTsXDhQpkvK056ejo0NDRQUVHR4G1Jii7QEkKk\nRsdtw6Snp8PW1hbl5eXQ0BB/zk0XaAkhpIEUeWbNNyr2hJBGJzk5Gf7+/jA0NISzszP27dsHABg3\nbhwmT56MoKAg6Ovr4/jx4xg3bhxmz55due6yZctgbm4OS0tL/P7779DQ0MB///1Xuf7LZRMSEmBp\naYmffvoJpqamMDc3xx9//FG5nQMHDsDDwwMtWrSAtbU15s2bp7hvQA2o2BNCGpWysjL0798f77zz\nDh4/foyVK1ciNDQUt27dAgBERUVh9uzZKCwsRPfu3SEQCCrn7oiPj8fy5ctx9OhRpKamIiEhocq2\nX18WAB4+fIj8/HxkZWVh3bp1+Oijj/Ds2TMAgL6+PjZv3oxnz57hwIEDWL16Na+z9VGxJ4TIhUAg\nm4e0zp49i6KiIsyYMQNaWlro2bMn+vXrh6ioKAgEAgwcOBBdu3YFADRp0qTKujExMZgwYQKcnJzQ\ntGnTGs/GX28nFwqF+Pbbb6GpqYm+fftCX18fKSkpAAA/Pz907NgRAODi4oKQkBCcOHFC+i9IRqjY\nE0LkgjHZPKSVlZVVZUpUAGjTpk3ltKjiJmB68OBBtelUxTE2Nq5ygVVXVxeFhYUAgHPnzqFnz55o\n1aoVDAwMEBkZiadPn0r99cgKFXtCSKNibm6OjIyMKmfgd+/ehYWFBQDx062amZlVm2HvTZJO1zpy\n5EgMHDgQ9+/fR15eHj744ANeLwhTsSeENCpdunSBrq4uli1bhrKyMiQkJGD//v0YMWJEjV0VGWOV\n7w8bNgwbNmzAzZs3UVxcjAULFtS6bF0KCwthaGgIbW1tJCYmYuvWrRL/opAHKvaEkEZFKBRi3759\nOHjwIExMTDBlyhT8+eefaNeuXbULrEDVi67vvPMOpk6dip49e6Jdu3bV2vbfXF9c8V61ahW+/fZb\nNG/eHAsWLMDw4cOr7VeR6KYqQojU1OW4TU5OhouLC0pLS+u8+Ule6KYqQgiRg927d6OkpAS5ubn4\n6quvEBwczFuhlyXV/woIIUSG1q5dC1NTU9jb20MoFGL16tV8R5IJasYhhEiNjlvFoWYcQgghEqNi\nTwghaoCKPSGEqAEq9oQQogao2BNCiBqgYk8IITWYO3cuRo8eXevnW7ZsQWBgoETb+uOPP+Dr6yur\naPVCxZ4QQmrw+nAGNc0ZGxoaikOHDvERrV7qLPbx8fFo3749HBwcsHTp0mqfb9myBW5ubnB1dUW3\nbt1w7dq1ys9sbGzg6uoKDw8PeHt7yzY5IYTIUW2DpqkqscVeJBJhypQpiI+PR1JSEqKiopCcnFxl\nGVtbW5w8eRLXrl3D7NmzMWnSpMrPBAIBEhIScPnyZSQmJsrnKyCEkNfY2Njghx9+gKurK5o1a4aw\nsDA8fPgQffv2RYsWLdC7d2/k5eUhISGh2rj3NjY2OHbsWOXrl2f3PXr0AAAYGBigefPmOHv2bLWm\nGQ0NDaxcuRJ2dnYwMTHB9OnTa/zl8NFHH+GLL76o8l5wcDB+/vlnmX0PaiK22CcmJsLe3h42NjYQ\nCoUICQmpNq1W165d0aJFCwCAj48P7t+/X+VzVf5NSNQPYwwPCh7geNpxrLu0DnGpcUjLTUMFU5+J\nqVWdQCDArl27cPToUaSkpGD//v3o27cvlixZgkePHqGiogIrVqyocdTJN997Wb9OnToFAHj27Bny\n8/PRpUuXGve9Z88eXLx4EZcuXUJsbCzWr19fbZlx48YhKiqqcttPnjzB0aNHERoa2qCvuy5a4j7M\nzMysNmvLuXPnal1+3bp1CAoKqnwtEAgQEBAATU1NhIeHY+LEiTKITIjsVbAKHLh1AEtOL8HNJzfR\n0aQj2hq2xYOCB0h6nISmwqaY/tZ0jHEbgyZaTereIIFgnmyG8GVzpD9h/Pjjj2FiYgIA8PX1hamp\nKdzc3AAAgwYNwtGjR+Hn5yd5BglPWr/66isYGBjAwMAA06ZNQ1RUFMLCwqos4+XlhRYtWuDo0aMI\nCAjAtm3b0LNnz8q88iK22Esz3vLx48exfv16nD59uvK906dPw8zMDI8fP0bv3r3Rvn173q9IE/Km\nu3l3MXzHcJSKSjGj+wy85/QeNDU0Kz9njOHUvVNY8vcSfHfqO2wbsg1dLGs+syOv1KdIy4qpqWnl\n86ZNm1Z5raOjUzl1oKy9fnJsbW2NrKysGpcbM2YMNm/ejICAAGzevBmffvqpXPK8Tmyxt7CwqDZF\nV01zMl67dg0TJ05EfHw8DA0NK983MzMDAJiYmGDQoEFITEyssdjPnTu38rm/vz/8/f2l/ToIqZdD\ntw9h7J6x+PKtL/FZ189q/dO+R5se6NGmB/am7EVwVDDm+M3Bh14f8jrzEJFcTWfmenp6KC4urnwt\nEonw+PHjGteX9P/53r17cHJyqnz+cirEN40aNQouLi64evUqbt68iYEDB9a57YSEBCQkJEiUoyZi\ni72npydSU1ORnp4Oc3NzREdHIyoqqsoy9+7dw+DBg7F582bY29tXvl9cXAyRSIRmzZqhqKgIhw8f\nxpw5c2rcz+vFnhBFif43GtMOTUP0kGj42Uj2J32wYzDOhJ3BoOhBuJ9/H4sDFss5JZGXdu3a4cWL\nF4iLi0Pv3r2xaNEilJSU1LisiYkJNDQ0cOfOHTg4ONS6zR9++AE+Pj4oKCjAihUr8Pnnn9e4nKWl\nJTw9PTFmzBgMGTKkciYscd48EZ43b16d67xO7AVaLS0tREREIDAwEB06dMDw4cPh5OSEyMhIREZG\nAgDmz5+P3NxcTJ48uUoXy+zsbPj6+sLd3R0+Pj7o168f+vTpI1U4QuQlLjUOU+On4tCoQxIX+pfs\njOxwbOwxxKbEYtnpZXJKSGTpzakEBQIBmjdvjlWrVuH999+HpaUl9PX1qzTDvD4Foa6uLr755ht0\n69YNRkZGOHfuXI1THA4YMACdO3eGh4cH+vXrV9leX9OyY8eOxfXr18XeuCVLNJ49UTtnMs4geFsw\n9obsRVerrvXezv38+/Dd4ItZvrMQ1ims7hUaETpuq9PQ0MDt27dha2sr0fKnTp3CqFGjcPfuXbHL\n0Xj2hNTDk+InGLZjGDYM2NCgQg8Als0tcWjUIcw4OgOXH1yWUUKiDsrKyvDzzz8rtIciFXuiNhhj\nGB87HiEdQ9CvXT+ZbLOdcTuseGcFhu8YjoKSAplsk6gmSS/iJicnw9DQEA8fPsS0adPknOoVasYh\namP5meXYdmMbTo0/BW1NbZlu+/2976NEVII/B/0p0+0qKzpuFYeacQiRQurTVHx36jtEvRcl80IP\nAL+88wsSMxMRezO27oUJ4QEVe9LoMcbwUdxHmNl9JmwNJbt4Ji09bT2sfnc1psZPRWGpfG7YIaQh\nqNiTRi/6RjQeFj3EVJ+pct3P223fRo82PTD/xHy57oeQ+qA2e9KoPXvxDB1WdcCOoTsa3PtGEg8L\nH8JltQuOjjkKF1MXue+PL0ZGRsjNzeU7hlowNDRETk5OtfelrZ1U7Emj9vXRr5FdmI31A6qPPigv\nEYkR2H9rP+JHxStsn0T90AVaQv7vQcEDRF6MxDx/6W4rb6hJnSchNScVx9OOK3S/hIhDxZ40WgtO\nLsB49/GwamFV98IypK2pjQU9F2Dm0Zn0VytRGlTsSaN0O+c2Ym7EYGb3mbzsP8Q5BC/KX2DPzT28\n7J+QN1GxJ43S3IS5+LTLpzDWNeZl/xoCDSzutRizjs+iWa6IUqBiTxqdOzl3cOjOIXzs8zGvOd6x\nfwd6Qj260YooBSr2pNFZdnoZPuj8AZo3ac5rDoFAgK99v8aivxdR2z3hHRV70qhk5mdie9Line truncated
"text": [
"<matplotlib.figure.Figure at 0x2edc850>"
"<matplotlib.figure.Figure at 0x2e8f250>"
]
}
],
"prompt_number": 42
"prompt_number": 20
},
{
"cell_type": "markdown",
@@ -424,11 +424,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2d31810>"
"<matplotlib.figure.Figure at 0x2e6d650>"
]
}
],
"prompt_number": 56
"prompt_number": 21
},
{
"cell_type": "markdown",
@@ -463,7 +463,8 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "markdown",
@@ -481,7 +482,8 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "markdown",
@@ -511,30 +513,30 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"time: 0 position = 1.132 variance = 2.500\n",
"time: 1 position = 0.798 variance = 1.667\n",
"time: 2 position = 0.279 variance = 1.250\n",
"time: 3 position = 0.121 variance = 1.000\n",
"time: 4 position = 0.017 variance = 0.833\n",
"time: 5 position = 0.071 variance = 0.714\n",
"time: 6 position = 0.213 variance = 0.625\n",
"time: 7 position = 0.191 variance = 0.556\n",
"time: 8 position = 0.223 variance = 0.500\n",
"time: 9 position = 0.257 variance = 0.455\n",
"time: 10 position = 0.398 variance = 0.417\n",
"time: 11 position = 0.450 variance = 0.385\n",
"time: 12 position = 0.537 variance = 0.357\n",
"time: 13 position = 0.603 variance = 0.333\n",
"time: 14 position = 0.548 variance = 0.312\n",
"time: 15 position = 0.624 variance = 0.294\n",
"time: 16 position = 0.566 variance = 0.278\n",
"time: 17 position = 0.492 variance = 0.263\n",
"time: 18 position = 0.505 variance = 0.250\n",
"time: 19 position = 0.568 variance = 0.238\n"
"time: 0 position = 1.497 variance = 2.500\n",
"time: 1 position = 0.809 variance = 1.667\n",
"time: 2 position = 0.817 variance = 1.250\n",
"time: 3 position = 0.485 variance = 1.000\n",
"time: 4 position = 0.576 variance = 0.833\n",
"time: 5 position = 0.681 variance = 0.714\n",
"time: 6 position = 0.650 variance = 0.625\n",
"time: 7 position = 0.618 variance = 0.556\n",
"time: 8 position = 0.763 variance = 0.500\n",
"time: 9 position = 0.728 variance = 0.455\n",
"time: 10 position = 0.611 variance = 0.417\n",
"time: 11 position = 0.546 variance = 0.385\n",
"time: 12 position = 0.529 variance = 0.357\n",
"time: 13 position = 0.541 variance = 0.333\n",
"time: 14 position = 0.527 variance = 0.312\n",
"time: 15 position = 0.432 variance = 0.294\n",
"time: 16 position = 0.351 variance = 0.278\n",
"time: 17 position = 0.326 variance = 0.263\n",
"time: 18 position = 0.337 variance = 0.250\n",
"time: 19 position = 0.350 variance = 0.238\n"
]
}
],
"prompt_number": 55
"prompt_number": 24
},
{
"cell_type": "markdown",
@@ -593,7 +595,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 58
"prompt_number": 25
},
{
"cell_type": "markdown",
@@ -643,47 +645,47 @@
"stream": "stdout",
"text": [
"UPDATE: 1.0000 , 502.0000\n",
"SENSE: 1.9162 , 9.8047\n",
"SENSE: 2.5641 , 9.8047\n",
"\n",
"UPDATE: 2.9162 , 11.8047\n",
"SENSE: 3.8256 , 5.4138\n",
"UPDATE: 3.5641 , 11.8047\n",
"SENSE: 0.8489 , 5.4138\n",
"\n",
"UPDATE: 4.8256 , 7.4138\n",
"SENSE: -0.0667 , 4.2574\n",
"UPDATE: 1.8489 , 7.4138\n",
"SENSE: 2.1796 , 4.2574\n",
"\n",
"UPDATE: 0.9333 , 6.2574\n",
"SENSE: 5.1593 , 3.8490\n",
"UPDATE: 3.1796 , 6.2574\n",
"SENSE: 3.1866 , 3.8490\n",
"\n",
"UPDATE: 6.1593 , 5.8490\n",
"SENSE: 4.9393 , 3.6904\n",
"UPDATE: 4.1866 , 5.8490\n",
"SENSE: 3.7578 , 3.6904\n",
"\n",
"UPDATE: 5.9393 , 5.6904\n",
"SENSE: 5.9086 , 3.6267\n",
"UPDATE: 4.7578 , 5.6904\n",
"SENSE: 4.2545 , 3.6267\n",
"\n",
"UPDATE: 6.9086 , 5.6267\n",
"SENSE: 6.2753 , 3.6007\n",
"UPDATE: 5.2545 , 5.6267\n",
"SENSE: 5.4039 , 3.6007\n",
"\n",
"UPDATE: 7.2753 , 5.6007\n",
"SENSE: 8.0741 , 3.5900\n",
"UPDATE: 6.4039 , 5.6007\n",
"SENSE: 7.8103 , 3.5900\n",
"\n",
"UPDATE: 9.0741 , 5.5900\n",
"SENSE: 8.0308 , 3.5856\n",
"UPDATE: 8.8103 , 5.5900\n",
"SENSE: 8.9480 , 3.5856\n",
"\n",
"UPDATE: 9.0308 , 5.5856\n",
"SENSE: 9.3586 , 3.5838\n",
"UPDATE: 9.9480 , 5.5856\n",
"SENSE: 11.1128 , 3.5838\n",
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEACAYAAACnJV25AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlYVdX6B/DvYcoJFJBJwYuCE4hAmTOKE2mOqJlammld\nrWy4lqX3Zuq95ZT6OPzqZllpaZpDaKWSmR000GsmlOWMIIg4ECijAof1+2PFUWQ6cIZ9hu/nec4D\nHDd7vwi8rPPutd6lEkIIEBGR1bBTOgAiIjIsJnYiIivDxE5EZGWY2ImIrAwTOxGRlWFiJyKyMnon\n9qlTp8LLywshISHa5xYsWABfX1+Eh4cjPDwcsbGx+l6GiIh0pHdif/rppyslbpVKhVmzZiExMRGJ\niYkYPHiwvpchIiId6Z3YIyIi4OrqWul5rnsiIlKG0Wrsa9euRWhoKKZNm4abN28a6zJERHQfoyT2\n5557DikpKUhKSoKPjw9effVVY1yGiIiq4GCMk3p6emrff+aZZzB8+PBKxwQGBiI5OdkYlycisloB\nAQG4cOFCjccYZcSemZmpfT8mJqbCjJlyycnJEEKY3WP+/PmKx8CYGJMtxsWYdHvoMiDWe8Q+YcIE\nxMXFISsrC35+fli4cCHUajWSkpKgUqnQunVrrFu3Tt/LEBGRjvRO7Fu2bKn03NSpU/U9LRER1RNX\nnt4nMjJS6RAqYUy6YUy6M8e4GJPhqIQQikw4V6lUUOjSREQWS5fcaZRZMfpwc3NDTk6O0mGQAlxd\nXZGdna10GEQWz+xG7BzJ2y5+74lqp8vvCWvsRERWhomdiMjKMLETEVkZJnYiIivDxE5Gt2HDBkRE\nRCgdBpHNYGK3UqWlpUqHQEQKYWKvA39/fyxfvhydO3eGs7Mzpk2bhmvXrmHIkCFo2rQpBg0apO09\nf/ToUfTs2ROurq4ICwtDXFyc9jyffvopgoKC4OLigoCAAHz44Yfaf8vKysKwYcPg6uoKd3d39OnT\nR/tvdnZ2uHjxovbjKVOmYN68eQAAtVoNX19fLFu2DD4+Ppg2bRqEEFiyZAkCAwPRvHlzPP7449o1\nAqmpqbCzs8OGDRvQqlUruLu744MPPsDPP/+Mzp07w9XVFS+++GKFr/+TTz5BUFAQ3NzcMHjwYKSl\npVWIbd26dWjXrh1cXV0xc+ZMAMDp06fx3HPP4ciRI3B2doabm5uhvh1EVB2hkOourWBItfL39xc9\nevQQ169fFxkZGcLT01OEh4eLpKQkcfv2bdG/f3+xcOFCcfnyZeHu7i727dsnhBDi+++/F+7u7iIr\nK0sIIcSePXvExYsXhRBCxMXFiUaNGonExEQhhBBz5swRM2bMEKWlpaK0tFT89NNP2uurVCqRnJys\n/XjKlCli3rx5QgghfvzxR+Hg4CDmzJkjiouLRVFRkVi1apXo0aOHyMjIEMXFxWL69OliwoQJQggh\nUlJShEqlEs8995y4c+eO2L9/v3BychKjRo0SN27c0H59cXFxQgghdu3aJQIDA8WZM2eERqMRb7/9\ntujZs2eF2IYPHy5u3bol0tLShIeHh4iNjRVCCLFhwwbRu3fvWv9/zfl7T2QudPk9scwR+4IFgEpV\n+bFgge7HV3dsLV588UV4eHigRYsWiIiIQI8ePRAaGooHHngA0dHRSExMxObNm/Hoo49q93odOHAg\nunTpgj179gAAHn30UbRu3RoA0KdPH0RFReHQoUMAACcnJ2RmZiI1NRX29vbo1atXjfGIexYq2NnZ\nYeHChXB0dESDBg2wbt06vP3222jRogUcHR0xf/587NixA2VlZdrPmTdvHpycnDBo0CA4Oztj4sSJ\naN68ufbrS0pKAgB88MEHmDt3Ltq3bw87OzvMnTsXSUlJSE9P155rzpw5cHFxgZ+fH/r166f9XMFF\nR0QmZbmJXYjKj5oSu67H1sLLy0v7fsOGDSt83KBBA+Tn5+PSpUvYvn07XF1dtY/4+HhcvXoVALBv\n3z50794d7u7ucHV1xd69e/Hnn38CAGbPno3AwEBERUUhICAAS5cu1Tk2Dw8PODk5aT9OTU1FdHS0\nNoagoCA4ODjg2rVrOn09DRs2RH5+PgDg0qVLePnll7Xncnd3BwBkZGRoj/f29ta+36hRIxQUFOgc\nOxEZjmUmdjNy72hUpVIBAPz8/DBp0iTk5ORoH3l5eXj99ddx584djBkzBq+//jquX7+OnJwcPPro\no9rzNGnSBMuXL0dycjK+/vprrFy5Ej/++CMAmSwLCwu118vMzNRe897rl2vVqhViY2MrxFFYWAgf\nH586f52tWrXChx9+WOFcBQUF6N69e62fe39cRGRcTOwGVJ6cn3zySXzzzTfYv38/NBoNbt++DbVa\njYyMDBQXF6O4uBjNmzeHnZ0d9u3bh/3792vP8e233+LChQsQQsDFxQX29vaws5PfprCwMGzevBka\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEACAYAAACqOy3+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlYlNXbB/AvCGhuCKiQAmG4sYNZpKWiCaWJeyqmJlhq\n5VLZopZpi4qlJqYtZmqpudSv3CW1HDQUrRdR01xAUMAlN1AEZDvvHydGUZZhtmdm+H6ua65geJ7z\n3ITeHO+zWQkhBIiIyOxYKx0AERFphwmciMhMMYETEZkpJnAiIjPFBE5EZKaYwImIzJRGCTwqKgrO\nzs7w8/O772vz5s2DtbU1rl27pvfgiIioYhol8MjISMTGxt73fnp6Onbu3ImHHnpI74EREVHlNErg\nnTp1goODw33vv/HGG/jkk0/0HhQREVVN6xr4xo0b4erqCn9/f33GQ0REGrLR5qbc3FzMmjULO3fu\nVL/HFflERMalVQJPSUlBWloaAgICAAAZGRl45JFHcPDgQTRt2rTMtS1btkRKSorukRIR1SCenp5I\nTk6u/CKhodTUVOHr61vu1zw8PMTVq1fL/Vo1HmE006dPVzqE+zAmzZliXIxJM4xJc5rkTo1q4BER\nEejYsSNOnToFNzc3LF++vMzXraystPwdQ0RE2tKohLJmzZpKv37mzBm9BENERJqrkSsxQ0JClA7h\nPoxJc6YYF2PSDGPSL6v/ai2Ge4CVFWeoEBFVkya5U6tZKPrg6OiI69evK/V4UoiDgwO3XSDSE8V6\n4OyZ10z8uRNpRpO/KzWyBk5EZAmYwImIzBQTOBGRmWICJyIyU0zgpBcrVqxAp06dlA6DqEZhAjdj\nRUVFSodARApiAr+Hh4cH5s6dC39/fzRo0ACjRo3CpUuX0KNHD9jb2yM0NBRZWVkAgISEBHTs2BEO\nDg4IDAxEXFycup3ly5fD29sbDRs2hKenJ5YsWaL+2pUrV9CrVy84ODjAyckJnTt3Vn/N2tq6zNYE\nI0eOxLRp0wAAKpUKrq6u+OSTT/Dggw9i1KhREEIgOjoaLVu2ROPGjTF48GD1/Pq0tDRYW1tjxYoV\ncHd3h5OTE7766iv8+eef8Pf3h4ODA8aPH1/m+1+2bBm8vb3h6OiIZ555BufOnSsT29dff43WrVvD\nwcEB48aNAwD8888/ePnll7F//340aNAAjo6O+vpxEFFlDLWTVqmKHmGER2vFw8NDdOjQQfz7778i\nMzNTNG3aVAQFBYmkpCSRn58vunXrJj744AORkZEhnJycxPbt24UQQuzcuVM4OTmJK1euCCGE2Lp1\nqzhz5owQQoi4uDhRt25dcejQISGEEJMnTxZjx44VRUVFoqioSPzxxx/q51tZWYmUlBT15yNHjhTT\npk0TQgixe/duYWNjIyZPniwKCgpEXl6eWLBggejQoYPIzMwUBQUFYsyYMSIiIkIIIXeQtLKyEi+/\n/LK4ffu22LFjh7CzsxN9+/YVly9fVn9/cXFxQgghNmzYIFq2bClOnDghiouLxccffyw6duxYJrbw\n8HCRnZ0tzp07J5o0aSJiY2OFEEKsWLFCPPnkk1X+/zXVnzuRok6cEGLjxjJvafJ3xXR74DNmAFZW\n979mzND8+oqurcL48ePRpEkTNGvWDJ06dUKHDh0QEBCA2rVro1+/fjh06BBWr16Nnj174plnngEA\ndO/eHe3bt8fWrVsBAD179kSLFi0AAJ07d0ZYWBj27NkDALCzs8OFCxeQlpaGWrVq4Yknnqg0HnHX\nZH5ra2t88MEHsLW1RZ06dfD111/j448/RrNmzWBra4vp06fjp59+QklJifqeadOmwc7ODqGhoWjQ\noAGGDh2Kxo0bq7+/pKQkAMBXX32FKVOmoE2bNrC2tsaUKVOQlJSE9PR0dVuTJ09Gw4YN4ebmhq5d\nu6rvFVycQ6Sd4mIgMhK46++Zpkw7gQtx/6uyBK7ptVVwdnZWf/zAAw+U+bxOnTrIycnB2bNn8eOP\nP8LBwUH9io+Px8WLFwEA27dvx+OPPw4nJyc4ODhg27ZtuHr1KgDgrbfeQsuWLREWFgZPT0/MmTNH\n49iaNGkCOzs79edpaWno16+fOgZvb2/Y2Njg0qVLGn0/DzzwAHJycgAAZ8+excSJE9VtOTk5AQAy\nMzPV17u4uKg/rlu3Lm7duqVx7ERUjgULgNq1gZdfrvatppvATcjdvcvSvc/d3NwwfPhwXL9+Xf26\nefMm3n77bdy+fRsDBgzA22+/jX///RfXr19Hz5491e3Ur18fc+fORUpKCjZt2oT58+dj9+7dAGRS\nzM3NVT/vwoULZfZbv3fvdXd3d8TGxpaJIzc3Fw8++GC1v093d3csWbKkTFu3bt3C448/XuW93BOe\nSAsnTwLR0cC33wLW1U/HTODVVJqEhw0bhs2bN2PHjh0oLi5Gfn4+VCoVMjMzUVBQgIKCAjRu3BjW\n1tbYvn07duzYoW5jy5YtSE5OhhACDRs2RK1atWD93w8vMDAQq1evRnFxMWJjY9Vll4qMHTsWU6dO\nVQ82Xr58GZs2bdLqexo7dixmzZqF48ePAwCys7Px448/Vnpf6b3Ozs7IyMhAYWFhtZ5NVGOVlk5m\nzAAeflirJpjANXBvD9jKygqurq7YuHEjZs2ahaZNm8Ld3R3z5s2DEAINGjTAwoULMWjQIDg6OmLN\nmjXo06ePuo3k5GR1Pbpjx4549dVX0aVLFwBATEwMNm/eDAcHB/zwww/o169fhbEAwMSJE9G7d2+E\nhYWhYcOG6NChAw4ePFjh9ZV9f3379sU777yDIUOGwN7eHn5+fvj1118rbKv0/wUAPPXUU/Dx8YGL\ni8t956ISUTkyM4G2bbUqnZTiboRkVPy5E2mGuxESEVkwjRJ4VFQUnJ2d4efnp37vrbfegpeXFwIC\nAtC/f39kZ2cbLEgiIrqfRgk8MjISsbGxZd4LCwvDsWPHcPjwYbRu3RqzZ882SIBERFQ+jRJ4p06d\n4ODgUOa90NBQ9cyJ4OBgZGRk6D86IiJLUVws53zfvq23JvVSA1+2bBl69uypj6aIiCxTTAzwyy+A\nra3emtT5UOOZM2fCzs4OQ4cO1Uc8RESW5+RJYNYs4MABrRbsVESnBL5ixQps27YNv/32W6XXzbhr\nSXtISAhCQkJ0eSwRkfkoLgaiooDp0wFPzwovU6lUUKlU1Wpa43ngaWlpCA8Px9GjRwEAsbGxmDRp\nEuLi4tC4ceOKH8B54HQX/typxpk/H9i4Edi9u1q9b73NA4+IiEDHjh1x8uRJuLm5YdmyZRg/fjxy\ncnIQGhqKoKAgvPLKKxoHZupOnjyJwMBA9TL3mTNnApC/Id3c3BSOjojMyunTwLJlei2dlOJKzHKM\nGjUKjRo1wrx588q8r1KpMHz4cPX2qh4eHli2bBm6deumRJhmyZR/7kSmhCsxtXT27Fl4e3tXeZ0u\nyejujaCIiLTBBH6Pbt26QaVSYdy4cWjQoAGef/559ZFmdxs+fDjOnTuH8PBwNGjQAHPnzgVQ+TFr\nISEheO+99/DEE0+gXr16SE1NNdr3RUSWhwn8Hr///js6deqExYsX4+bNm7Czsyt3R7+VK1fC3d0d\nW7Zswc2bN/Hmm28iMzMTvXr1wvvvv4/r169j7ty5GDBggPogBwBYtWoVli5dipycHLi7uxvzWyMi\nC2OyCby809S0eemDpqWOVatWVXrMmpWVFUaOHAkvLy9YW1vDxkbnafhEZGrWrwdOnTLKo0w2gZd3\nmpo2L2Oq6pg1AJzFQmTJTp8GXnnFIDNOysMuoAYqOhShvOPNhg8fjiVLllS7LSIyc6Un7EybBrRs\naZRHmmwP3FRUNlvE2dkZKSkp6s8rO2bt7vaIyAJ9/rnseY8fb7RHMoFX4e5jw0o/LzVlyhR8/PHH\ncHBwwPz58ys9Zq28+4nIQpw+DXz8sV4W7OTkAOPGaXYtF/KQUfHnThZp0ybg/Hlg7FidmklNBfr2\nBdq1A1asqPrvChM4GRV/7kTl270biIgApk6VVRhr66r/rnAQk4hIQUIAixYBM2cCq1cDTz2l+b1M\n4ERECrl9W846/PNPYN8+4OGHq3c/BzGJiBRw4QLQtSuQlaVd8gaYwImIqi85GVi5UuvbDx4EHnsM\n6NED+PFHoH597dphAiciqo6SEnnCzl17HFXH998Dzz4r697Tpuk261CxGriDgwPnRNdADg4OSodA\npJtFi+TI44QJ1bqtqAh4+20541ClAnx8dA9FsWmERERmJzkZePxxYP9+oFUrjW+7dg0YPFhusLd2\nLeDoWPU9PNCBiEhfSksn775breR97JisdwcEANu2aZa8NcUETkTGce4cMGsWkJGhdCTauXwZ8PKq\nVulkwwYgJEQeSD93LqDvHaQ1SuBRUVFwdnaGn5+f+r1r164hNDQUrVu3RlhYGLKysvQbGRFZFhcX\nID0d8PcHBg0C9uwx/p7PunB2Br7+GqhVq8pLS0qADz+UKyq3bQOGDzdMSBol8MjISMTGxpZ5Lzo6\nGqGhoTh16hSeeuopREdHGyRAIrIQdnbAl18CaWlAly7AmDGyrrB9u9KR6dXNm8DAgUBsrFyg8+ij\nhnuWxoOYaWlpCA8Px9GjRwEAbdu2RVxcHJydnXHx4kWEhITgxIkT9z+Ag5hEVB4hgN9+Axo0AIKD\nlY5GL86cAfr0kd/O4sVA7drat2XQQcxLly7B2dkZgNwX+9KlS9o2RUQ1kZUV0L27xSTv334DOnSQ\n/7D45hvdkrem9FJSv3fP7HvNmDFD/XFISAhCQkL08VgislRZWUDnzvKEm8hIoFEj48dQUgLMmSMH\nLevVq/AyIYCYGCA6Gli3Tg5aakOlUkGlUlXvJqGh1NRU4evrq/68TZs24sKFC0IIIc6fPyLine truncated
"text": [
"<matplotlib.figure.Figure at 0x2d4add0>"
"<matplotlib.figure.Figure at 0x2917fd0>"
]
}
],
"prompt_number": 120
"prompt_number": 26
},
{
"cell_type": "markdown",
@@ -766,6 +768,7 @@
"collapsed": false,
"input": [
"sensor_error = 30000\n",
"movement_error = 2\n",
"pos = (0,500)\n",
"\n",
"dog = dog_sensor (pos[0], velocity=movement, noise=sensor_error)\n",
@@ -773,7 +776,7 @@
"zs = []\n",
"ps = []\n",
"\n",
"for i in range(100):\n",
"for i in range(1000):\n",
" pos = update (pos[0], pos[1], movement, movement_error)\n",
" \n",
" Z = dog.sense()\n",
@@ -794,19 +797,19 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x34f2fd0>"
"<matplotlib.figure.Figure at 0x28b19d0>"
]
}
],
"prompt_number": 121
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this example the noise is extreme Yet the filter still outputs a nearly straight line! This is an astonishing result! What do you think might be the cause of this performance? If you are not sure, don't worry, we will discuss it latter.\n",
"In this example the noise is extreme yet the filter still outputs a nearly straight line! This is an astonishing result! What do you think might be the cause of this performance? If you are not sure, don't worry, we will discuss it latter.\n",
"\n",
"Now let's lets look at the results when we make a bad initial estimate of position. To avoid obscuring the results I'll reduce the sensor variance to 30, but set the initial position to 1000m. Can the filter recover from a 1000m initial error?"
]
@@ -816,6 +819,7 @@
"collapsed": false,
"input": [
"sensor_error = 30\n",
"movement_error = 2\n",
"pos = (1000,500)\n",
"\n",
"dog = dog_sensor (0, velocity=movement, noise=sensor_error)\n",
@@ -844,13 +848,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEACAYAAABfxaZOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8TNf7wPHPRGIPYkuQEEJE7GpXmkoTpaWWNkVr70Zt\nrWrxq+JbJFql+m19W0Wlqqhu9lAlilpasQchEpKQWCJ2st3fH0cm+zqTzCTzvF+veTVz5869Z27q\nyZnnnvMcnaZpGkIIISyClakbIIQQouhI0BdCCAsiQV8IISyIBH0hhLAgEvSFEMKCSNAXQggLkqeg\nP3LkSOzt7WnevLl+2+TJk2nSpAktW7akf//+3Lp1S/+ar68vjRo1ws3Nje3btxu/1UIIIQokT0F/\nxIgRBAQEpNvm7e3NqVOnOHbsGK6urvj6+gIQHBzM2rVrCQ4OJiAggDFjxpCcnGz8lgshhMi3PAX9\nrl27Ymdnl26bl5cXVlbq7R06dCAyMhKA9evXM2jQIGxsbHB2dqZhw4YcOnTIyM0WQghREEbJ6S9f\nvpxevXoBcPnyZRwdHfWvOTo6EhUVZYzTCCGEMJDBQX/OnDmULl2awYMHZ7uPTqcz9DRCCCGMwNqQ\nN69YsYItW7bw559/6rfVqVOHiIgI/fPIyEjq1KmT6b0NGzYkNDTUkNMLIYTFcXFx4fz58wU/gJZH\nYWFhWrNmzfTPt27dqrm7u2vXrl1Lt9+pU6e0li1bao8ePdIuXLigNWjQQEtOTs50vHycusSbMWOG\nqZtgNuRapJJrkUquRSpDY2eeevqDBg1i9+7dXL9+HScnJ2bNmoWvry/x8fF4eXkB0KlTJxYvXoy7\nuzs+Pj64u7tjbW3N4sWLJb0jhBBmIk9Bf/Xq1Zm2jRw5Mtv9p02bxrRp0wreKiGEEIVCZuSaAQ8P\nD1M3wWzItUgl1yKVXAvj0T3OERX9iXU6THRqIYQotgyNnQaN3ikMVatW5ebNm6ZuhjABOzs7YmNj\nTd0MIUo0s+vpyzcAyyW/eyFyZ+i/E8npCyGEBZGgL4QQFkSCvhBCWBAJ+kIIYUEk6ItCt2LFCrp2\n7WrqZgghkKBfYiUmJpq6CUIIMyRBPx+cnZ2ZP38+LVq0wNbWllGjRhETE0PPnj2pXLkyXl5exMXF\nAXDgwAE6d+6MnZ0drVq1Yvfu3frjfPfdd7i7u1OpUiVcXFxYsmSJ/rXr16/z/PPPY2dnR7Vq1ejW\nrZv+NSsrKy5cuKB/Pnz4cKZPnw5AYGAgjo6OfPLJJ9SqVYtRo0ahaRp+fn40bNiQ6tWr8/LLL+vn\nQISHh2NlZcWKFSuoW7cu1apV4+uvv+aff/6hRYsW2NnZMW7cuHSff/ny5bi7u1O1alWeffZZLl26\nlK5t33zzDa6urtjZ2TF27FgATp8+zejRo9m/fz+2trZUrVrVWL8OIURBGFSuzQDZndqETcqVs7Oz\n1qlTJ+3q1ataVFSUVrNmTa1169ba0aNHtYcPH2rdu3fXZs2apUVGRmrVqlXTtm7dqmmapv3xxx9a\ntWrVtOvXr2uapmmbN2/WLly4oGmapu3evVsrX768duTIEU3TNG3KlCnaW2+9pSUmJmqJiYna3r17\n9efX6XRaaGio/vnw4cO16dOna5qmabt27dKsra21KVOmaPHx8dqDBw+0zz//XOvUqZMWFRWlxcfH\na2+++aY2aNAgTdNU1VSdTqeNHj1ae/TokbZ9+3atdOnSWt++fbVr167pP9/u3bs1TdO033//XWvY\nsKF25swZLSkpSZs9e7bWuXPndG3r3bu3duvWLe3SpUtajRo1tICAAE3TNG3FihXak08+mev1Neff\nvRDmwtB/J8Wzpz9zJuh0mR8zZ+Z9/+z2zcW4ceOoUaMGtWvXpmvXrnTq1ImWLVtSpkwZ+vXrx5Ej\nR1i1ahW9evXi2WefBeCZZ56hbdu2bN68GYBevXpRv359ALp164a3tzd//fUXAKVLl+bKlSuEh4dT\nqlQpunTpkmN7tDSTNKysrJg1axY2NjaULVuWb775htmzZ1O7dm1sbGyYMWMGP//8c7o1i6dPn07p\n0qXx8vLC1taWwYMHU716df3nO3r0KABff/01U6dOpXHjxlhZWTF16lSOHj2abu2EKVOmUKlSJZyc\nnHj66af179VkwpUQZqP4Bn1Ny/zIKejndd9c2Nvb638uV65cuudly5bl7t27XLx4kXXr1mFnZ6d/\n7Nu3j+joaAC2bt1Kx44dqVatGnZ2dmzZsoUbN24AMHnyZBo2bIi3tzcuLi7Mmzcvz22rUaMGpUuX\n1j8PDw+nX79++jaklLuOiYnJ0+cpV64cd+/eBeDixYtMmDBBf6xq1aoBpFsK08HBQf9z+fLluXfv\nXp7bLoQoGsUz6JuRtL3YlHUDnJycGDJkCDdv3tQ/7ty5w/vvv8+jR48YMGAA77//PlevXuXmzZv0\n6tVLf5yKFSsyf/58QkND2bBhAwsWLGDXrl2ACqT379/Xn+/KlSvp1irIuG5B3bp1CQgISNeO+/fv\nU6tWrXx/zrp167JkyZJ0x7p37x4dO3bM9b2ynoIQ5kOCvhGlBO5XX32VjRs3sn37dpKSknj48CGB\ngYFERUURHx9PfHw81atXx8rKiq1bt7J9+3b9MTZt2sT58+fRNI1KlSpRqlQprKzUr6lVq1asWrWK\npKQkAgIC9Cmh7Lz11ltMmzZNf8P12rVrbNiwoUCf6a233mLu3LkEBwcDcOvWLdatW5fj+1Lea29v\nT2RkJAkJCfk6txDC+CToGyhjT1un0+Ho6Mj69euZO3cuNWvWpG7dunz22WdomoatrS1ffPEFPj4+\nVK1aldWrV/PCCy/oj3H+/Hl9fr1z5868/fbbPPXUUwAsWrSIjRs3Ymdnx48//ki/fv2ybQvAhAkT\n6NOnD97e3lSqVIlOnTpx6NChbPfP6fP17duXDz74gIEDB1K5cmWaN2/Otm3bsj1WyrUA8PT0pGnT\npjg4OFCzZs1czymEKDxSZVOYDfndC5E7qbIphBAiz8xuERUhhLB4167B5ctgYwNlyoCLi9EOLUFf\nCCHMza5dMHs2JCaCrS0cPGi0Q0tOX5gN+d0LkTvJ6QshhMizPAX9kSNHYm9vT/PmzfXbYmNj8fLy\nwtXVFW9vb32hMQBfX18aNWqEm5tbujHoQgghTCtPQX/EiBEEBASk2+bn54eXlxchISF4enri5+cH\nQHBwMGvXriU4OJiAgADGjBmTrtaLEEII08lT0O/atSt2dnbptm3YsIFhw4YBMGzYMH7//XcA1q9f\nz6BBg7CxscHZ2ZmGDRummxAkhBDCdAqc04+JidEX57K3t9cX8bp8+TKOjo76/RwdHdMV5Sruzp49\nS6tWrfQlEubMmQOoevZOTk4mbp0QotgbPBhCQwvt8EYZspl2yn12r2dlZppKlx4eHnh4eBijOYXq\nk08+wdPTU182ODvOzs4sX76c7t27F1HLhBDFnqbBpk3w1Vf6TVu2BHLwYCDGqltY4KBvb29PdHQ0\nDg4OXLlyRV9TpU6dOulqrEdGRlKnTp0sjzGzgOWNTenixYt07tw51/0MGVaV8j6pTimEhbl2Dayt\n4XE6PT4ePv3Ug2HDPBg+XO0ya9Ysg05R4PROnz598Pf3B8Df35++ffvqt69Zs4b4+HjCwsI4d+4c\n7du3N6iR5qJ79+4EBgYyduxYbG1teeWVV/TLFaY1ZMgQLl26RO/evbG1tWX+/PlAzksoenh48OGH\nH9KlSxcqVKhAWFhYkX0uIYSZCA2Fhg0B1ekfMwYqVYIhQ4x4jrwsrzVw4ECtVq1amo2Njebo6Kgt\nX75cu3Hjhubp6ak1atRI8/Ly0m7evKnff86cOZqLi4vWuHFj/ZJ5GWV36jw2yWQ8PDy0ZcuWaZqW\neblCR0dH/X7Ozs7an3/+qX+e2xKKTz31lFavXj0tODhYS0pK0hISEorqI5kNc//dC1Hovv9e0x4v\naTp/vqa1bKlpd+6k38XQfyd5Su+sXr06y+07duzIcvu0adOYNm1awf4K5YGxsh7GmPyp5fEgP/zw\nQ7ZLKA4dOhSdTsfw4cNp0qQJgL6GvhDCDJw5A5Mnw8aNhXue8+ehYUM2bIAFC2D/fqhY0binKJa1\nd4rjTP2UJRQ3pvmfJjExMd2NXhn9I4SZOnBA1cApbGPHcvEijOqp7ufWrWv8UxTLoG9OsrvZmtXS\nhUOGDGHJkiX5PpYQwsQOHoQOHeCvv6BVK5VoLwRa9Rq8NRQmTlSnKwySQzCAlmZJwIzs7e0JTTPW\nNqclFNMeTwhhhg4cUFF45kyVczGGqVNVdz6NH36AK1fg/feNc4qsSNA3QMb5CWl/njp1KrNnz8bO\nzo4FCxbkuIRiVu8XQpiJ+/chJARat4Y2beDwYcOPefs2fP45fPmlflNMDLz3HixfrsroFxYprSzM\nhvzuhVn6+2945x2V4lm9Gn75BX7+2eDDRv0VyrVew6h96Hequ1Vn0CCoXx8elzHLlqH/TiToC7Mh\nv3thtu7cUTdyz56FZ58FA+bRaBosXQrTpkGthEtEJdbkbkJZGjSAoCAoVy7n90s9fSGEyK+RI+H4\n8bzvb2vL8eOw42IjLlytSEJMbLqXExPh0CGYNw+ef16l669cyXyY69ehf39YvBh274bjq09x4505\nxMXB0aELKLf4MwM/WO5k9I4QwvK4usL8+fD993na/fRp8PSEZs2sCLPZw5W6lbG1Vb12TYNHj6BB\nA3j6aRg6FPbsAXd3GDAAvL3h1Ck4ckTdAx4+HNasUUvf4t4TevakHMDZ49C1ayF+aEXSO8JsyO9e\nFJm4OLXY+NGjkMv8mHv31MCdd96BUaPUtoQEdQidTj1Kl848jP/6ddWjP3wYWrRQIz3btoLine truncated
"text": [
"<matplotlib.figure.Figure at 0x286de90>"
"<matplotlib.figure.Figure at 0x2e60150>"
]
}
],
"prompt_number": 133
"prompt_number": 28
},
{
"cell_type": "markdown",
@@ -866,6 +870,7 @@
"collapsed": false,
"input": [
"sensor_error = 30000\n",
"movement_error = 2\n",
"pos = (1000,500)\n",
"\n",
"dog = dog_sensor (0, velocity=movement, noise=sensor_error)\n",
@@ -894,27 +899,151 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEACAYAAAC3adEgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsXXmcTfX/fu69M2NmMIxtLGOM7GPP8rWWLGPJGimJbBVF\nSrKVUEKSoqJEFFlSQkTysyYUIRrL2I19X2afe8/vj2fe8znnbjMYDM7zes3rzr33LJ9z7r3v572/\nLZqmaTBhwoQJEyZSYb3XCzBhwoQJE1kLJjGYMGHChAkDTGIwYcKECRMGmMRgwoQJEyYMMInBhAkT\nJkwYYBKDCRMmTJgwIEPE0KNHD4SEhKBixYppr40cORKhoaGoWrUqqlatihUrVqS9N3bsWJQqVQpl\ny5bFqlWr0l7fvn07KlasiFKlSqF///6ZeBkmTJgwYSKzkCFi6N69O1auXGl4zWKxYMCAAdixYwd2\n7NiB5s2bAwCioqKwYMECREVFYeXKlXjllVcgpRJ9+vTBjBkzEB0djejoaJdjmjBhwoSJe48MEUP9\n+vURHBzs8rq72rglS5agU6dO8PX1RXh4OEqWLImtW7fi9OnTuH79OmrWrAkA6Nq1KxYvXnybyzdh\nwoQJE5mN24oxfPbZZ6hcuTJ69uyJK1euAABOnTqF0NDQtG1CQ0Nx8uRJl9eLFCmCkydP3s7pTZgw\nYcLEHcAtE0OfPn1w5MgR7Ny5E4UKFcKbb76ZmesyYcKECRP3CD63umOBAgXS/u/VqxdatWoFgJbA\niRMn0t6LiYlBaGgoihQpgpiYGMPrRYoUcXvskiVL4tChQ7e6NBMmTJh4KFGiRAkcPHjwto9zyxbD\n6dOn0/7/+eef0zKWWrdujfnz5yMpKQlHjhxBdHQ0atasiYIFCyIoKAhbt26FpmmYPXs22rZt6/bY\nhw4dgqZp5p+mYcSIEfd8DVnlz7wX5r14aO+Fw8G/dLbLLIU6QxZDp06dsH79ely4cAFFixbFqFGj\nsG7dOuzcuRMWiwXFixfHV199BQCIiIhAx44dERERAR8fH0yZMgUWiwUAMGXKFHTr1g3x8fFo0aIF\nmjVrlikXYcKECRMPNIoUAf7+m493ARkihnnz5rm81qNHD4/bDxs2DMOGDXN5vVq1ati9e/dNLM+E\nCRMmTMBiAbS7NyHBrHzO4mjQoMG9XkKWgXkvFMx7ofBQ3Iu7TAwWTbuLZ8sgLBYLsuCyTJgwYeLe\noGhRYNMmICzM62aZJTtvOSvpXiBPnjy4fPnyvV6GibuM4OBgXLp06V4vw4SJe4eYGMBuv2unu6+I\n4fLly6Yl8RBCkhdMmHiokZx81051X7mSTBfTwwnzczfx0MNmAxITAR/vunxm/VbM4LMJEyZMZGVo\nGuBwkBzuEkxiMGHChImsDIeDWUl30aVqEoMJEyZMZGXY7XfVWgBMYjBxDzFr1izUr1//Xi/DhIms\nj8jIu3o6kxgeMqSkpNzrJZgwYeJm4OcHLFtmVj7fbwgPD8eECRNQqVIl5MyZEz179sTZs2fRvHlz\n5MqVC02aNEmbV7FlyxbUqVMHwcHBqFKlCtavX592nJkzZyIiIgJBQUEoUaIEpk2blvbehQsX0LJl\nSwQHByNv3rx47LHH0t6zWq04fPhw2vNu3bph+PDhAIB169YhNDQU48ePR6FChdCzZ09omoZx48ah\nZMmSyJcvH5555pm0+pCjR4/CarVi1qxZCAsLQ968efHll1/i77//RqVKlRAcHIx+/foZrv+bb75B\nREQE8uTJg2bNmuH48eOGtX311VcoXbo0goOD0bdvXwDA3r170adPH2zevBk5c+ZEnjx5MuvjMGHi\nwUPp0kB09N07n5YF4WlZWXS5Wnh4uFa7dm3t3Llz2smTJ7UCBQpoVatW1Xbu3KklJCRoDRs21EaN\nGqXFxMRoefPm1VasWKFpmqb9/vvvWt68ebULFy5omqZpy5cv1w4fPqxpmqatX79eCwwM1Hbs2KFp\nmqYNGTJE6927t5aSkqKlpKRof/zxR9r5LRaLdujQobTn3bp104YPH65pmqatXbtW8/Hx0YYMGaIl\nJSVp8fHx2qeffqrVrl1bO3nypJaUlKS9/PLLWqdOnTRN07QjR45oFotF69Onj5aYmKitWrVK8/Pz\n09q2baudP38+7frWr1+vaZqmLV68WCtZsqS2b98+zW63a6NHj9bq1KljWFurVq20q1evasePH9fy\n58+vrVy5UtM0TZs1a5ZWr169dO9vVv3cTZi4ayhVStP27Ut3s8z6rTxYFsPIkSp6r/8bOTLj23va\nNh3069cP+fPnR+HChVG/fn3Url0blStXRrZs2dCuXTvs2LED33//vaGrbOPGjVG9enUsX74cANCi\nRQsUL14cAPDYY48hMjISGzZsAAD4+fnh9OnTOHr0KGw2G+rWret1PZrO7LRarRg1ahR8fX3h7++P\n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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x286dad0>"
"<matplotlib.figure.Figure at 0x2d9aa10>"
]
}
],
"prompt_number": 136
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This time the filter does struggle. Notice that the previous example only computed 100 updates, whereas this example uses 1000. By my eye it takes the filter 400 or so iterations to become reasonable accurate, but maybe over 600 before the results are good. "
"This time the filter does struggle. Notice that the previous example only computed 100 updates, whereas this example uses 1000. By my eye it takes the filter 400 or so iterations to become reasonable accurate, but maybe over 600 before the results are good. Kalman filters are good, but we cannot expect miracles. If we have extremely noisy data and extremely bad initial conditions, this is as good as it gets.\n",
"\n",
"Finally, let's make the suggest change of making our initial position guess just be the first sensor measurement."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sensor_error = 30000\n",
"movement_error = 2\n",
"pos = None\n",
"\n",
"dog = dog_sensor (0, velocity=movement, noise=sensor_error)\n",
"\n",
"zs = []\n",
"ps = []\n",
"\n",
"for i in range(1000):\n",
" Z = dog.sense()\n",
" zs.append(Z)\n",
" if pos == None:\n",
" pos = (Z, 500)\n",
" \n",
" pos = sense (pos[0], pos[1], Z, sensor_error)\n",
" ps.append(pos[0])\n",
"\n",
" pos = update (pos[0], pos[1], movement, movement_error)\n",
"\n",
"p1, = plot (zs,c='r', linestyle='dashed')\n",
"p2, = plot (ps, c='b')\n",
"legend ([p1,p2], ['measurement', 'filter'], 2)\n",
"show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2930650>"
]
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This simple change significantly improves the results. On some runs it takes 200 iterations or so to settle to a good solution, but other runs it converges very rapidly. This all depends on whether the initial measurement $Z$ had a small amount or large amount of noise. \n",
"\n",
"200 iterations may seem like a lot, but the amount of noise we are injecting is truly huge. In the real world we use sensors like thermometers, laser rangefinders, GPS satellites, computer vision, and so on. None have the enormous error as shown here. A reasonable value for the variance for a cheap thermometer might be 10, for example, and our code is using 30,000 for the variance. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Explaining the Results"
"####Explaining the Results\n",
"\n",
"So how does the Kalman filter do so well? I have glossed over one aspect of the filter as it becomes confusing to address too many points at the same time. In these example we do not have 1 sensor but 2. The first sensor is the RFID sensor that outputs the position measurement, and the second sensor measures our dog's movement using an intertial tracker. How does our filter perform if that tracker is also noisy? Let's see:\n",
"\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sensor_error = 30000\n",
"movement_sensor = 30000\n",
"pos = (0,500)\n",
"\n",
"dog = dog_sensor (0, velocity=movement, noise=sensor_error)\n",
"\n",
"zs = []\n",
"ps = []\n",
"\n",
"for i in range(1000):\n",
" Z = dog.sense()\n",
" zs.append(Z)\n",
" \n",
" pos = sense (pos[0], pos[1], Z, sensor_error)\n",
" ps.append(pos[0])\n",
"\n",
" pos = update (pos[0], pos[1], movement, movement_error)\n",
"\n",
"p1, = plot (zs,c='r', linestyle='dashed')\n",
"p2, = plot (ps, c='b')\n",
"legend ([p1,p2], ['measurement', 'filter'], 2)\n",
"show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x28aaad0>"
]
}
],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This result is worse than the example where only the measurement sensor was noisy. Instead of being mostly straight, this time the filter's output is distintly jagged. But, it still mostly tracks the dog. What is happening here?\n",
"\n",
"This illustrates the effects of *multi-sensor fusion*. Suppose the dog is actually at 10.0, and we get subsequent measurement readings of -289.78 and 301.43. From that information alone it is impossible to tell if the dog is standing still during very noisy measurements, or perhaps sprinting from -289 to 301 and being accurately measured. But we have a second source of information, his velocity. Even when the velocity is also noisy, it constrains what our beliefs might be. For example, suppose with the readings of -289.78 to 301.43 we get a velocity reading of 590. That matches the difference between the two positions quite well, so this will lead us to believe the RFID sensor and the velocity sensor. Now suppose we got a velocity reading of 1.7. This doesn't match our RFID reading very well. Finally, suppose the velocity reading was -678.8. This completely contradicts the RFID reading - we may not be sure from these few values which sensor is most inaccurate, but perhaps by now you will trust that the gaussians expressing our beliefs will correctly handle these cases. It's a bit hard to talk about while working with 1D problems, so we will take this topic up in great detail in the next chapter where we develop multidimensional Kalman filters. Remark\n",
"\n",
"Besides that issue, we are modelling the noise in our sensors using gaussians which model their real world performance. We are multiplying the gaussians (probabilities) when we get a new position measurement, adding the gaussians when we get a movement update. This is algorithmically correct (this is how the histogram filter works) and mathematically correct - why wouldn't it work? \n",
"\n",
"#### Summary\n",
"This takes some time to assimulate. To truly understand this you will probably have to work through this chapter several times. I encourage you to change the various constants and observe the results. Convince yourself that gaussians are a good representation of a unimodal belief of something like the position of a dog in a hallway. Then convince yourself that multiplying gaussians truly does compute a new belief from your prior belief and the new measurement. Finally, convince yourself that if you are measuring movement, that adding the gaussians correctly updates your belief. That is all the Kalman filter does. Even now I alternate between complacency and amazement at the results. \n",
"\n",
"If you understand this, you will be able to understand multidimensional Kalman filters and the various extensions that have been make on them. If you do not fully understand this, I strongly suggest rereading this chapter until you do understand it. Try implementing the filter from scratch, just by looking at the equations and reading the text. Change the constants. Maybe try to implement a different tracking problem, like tracking stock prices. Experimentation will build your intuition and understanding of how these marvelous filters work.\n",
"\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
}
],
"metadata": {}
+285
View File
@@ -0,0 +1,285 @@
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multidimensional Kalman Filters\n",
"\n",
"The techniques in the last chapter are very powerful, but they only work in one dimension. The gaussians represent a mean and variance that are scalars - real numbers. They provide no way to represent multidimensional data, such as the position of a dog in a field. You may retort that you could use two Kalman filters for that case, one tracks the x coordinate and the other tracks the y coordinate. That does work in some cases, but put that thought aside, because soon you will see some enormous benefits to implementing the multidimensional case.\n",
"\n",
"\n",
"## Multivariate Normal Distributions\n",
"\n",
"What might a multivariate (meaning multidimensional) normal distribution look like? Our goal is to be able to represent a normal distribution across multiple dimensions. Consider the 2 dimensional case. Let's say we believe that x = 2 and y = 7. Therefore we can see that for N dimensions, we need N means, like so:\n",
"$$ \\mu = \\begin{bmatrix}{\\mu}_1\\\\{\\mu}_2\\\\ \\vdots \\\\{\\mu}_n\\end{bmatrix} \n",
"$$\n",
"\n",
"Therefore for this example we would have\n",
"$$\n",
"\\mu = \\begin{bmatrix}2\\\\7\\end{bmatrix} \n",
"$$\n",
"\n",
"The next step is representing our variances. At first blush we might think we would also need N variances for N dimensions. We might want to say the variance for x is 10 and the variance for y is 8. While this is possible, it does not consider the more general case. For example, suppose we were tracking house prices vs total $m^2$ of the floor plan. These numbers are *correlated*. It is not an exact correlation, but in general houses in the same neighborhood are more expensive if they have a larger floor plan. We want a way to express not only what we think the variance is in the price and the $m^2$, but also the degree to which they are correlated. It turns out that we use a matrix to denote this:\n",
"\n",
"$$\n",
"\\Sigma = \\begin{pmatrix}\n",
" {\\sigma}_{1,1} & {\\sigma}_{1,2} & \\cdots & {\\sigma}_{1,n} \\\\\n",
" {\\sigma}_{2,1} &{\\sigma}_{2,2} & \\cdots & {\\sigma}_{2,n} \\\\\n",
" \\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
" {\\sigma}_{n,1} & {\\sigma}_{n,2} & \\cdots & {\\sigma}_{n,n}\n",
" \\end{pmatrix}\n",
"$$\n",
"\n",
"This is called the covariance matrix, and is probably a bit confusing at the moment. Rather than explain the math in detail at the moment, we will take our usual tactic of building our intuition first with various physical models. \n",
"\n",
"So here is the full equation for the multivarate normal distribution.\n",
"\n",
"$$\\mathcal{N}(\\mu,\\,\\Sigma) = (2\\pi)^{-\\frac{n}{2}}|\\Sigma|^{-\\frac{1}{2}}\\, e^{ -\\frac{1}{2}(\\mathbf{x}-\\mu)'\\Sigma^{-1}(\\mathbf{x}-\\mu) }$$\n",
"\n",
"I urge you to not try to remember this function. We will program it once in a function and then call it when we need to compute a specific value. However, if you look at it briefly you will note that it looks quite similar to the univarate normal distribution except it uses matrices instead of scalar values. If you are reasonably well-versed in linear algebra this equation should look quite managable; if not, don't worry, the python is coming up next!\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import math\n",
"def multivariate_gaussian (x, mu, cov):\n",
" n = len(x)\n",
" det = np.sqrt(np.prod(np.diag(cov)))\n",
" frac = (2*math.pi)**(-n/2.) * (1./det)\n",
" fprime = (x - mu)**2\n",
" return frac * np.exp(-0.5*np.dot(fprime, 1./np.diag(cov)))\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 57
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use it to compute a few values just to make sure we know how to call and use the function, and then move on to more interesting things.\n",
"\n",
"First, let's find the probability for our dog being at 2.5, 7.3 if we believe he is at (2,7) with a variance of 4 for x and a variance of 5 for y. This function requires us to pass everything in as numpy arrays (we will soon provide a more robust version that works with numpy matrices, numpy arrays, and/or scalars in any combinations. That code contains a lot of boilerplate which obscures the algorithm).\n",
"\n",
"So we set x to (2.5,7.3)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = np.array([2.5, 7.3])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 83
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we set the mean of our belief:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mu = np.array([2,7])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 84
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we have to define our covariance matrix. In the problem statement we did not mention any correlation between x and y, and we will assume there is none. This makes sense; a dog can choose to independently wander in either the x direction or y direction without affecting the other. If there is no correlation between the values you just fill in the diagonal of the covariance matrix with the variances:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cov = np.array([[4,0],[0,5]])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 92
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now just call the function"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print multivariate_gaussian (x,mu,cov)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.0341841496392\n"
]
}
],
"prompt_number": 93
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check the probability for the dog being at exactly (2,7)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = np.array([2,7])\n",
"print multivariate_gaussian (x,mu,cov)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.0355881271709\n"
]
}
],
"prompt_number": 94
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These numbers are not easy to interpret. Let's plot this in 3D, with the z coordinate being the probability."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from mpl_toolkits.mplot3d import Axes3D\n",
"xs, ys = arange (-8, 13, .1), arange (-8, 20, .1)\n",
"xv, yv = meshgrid (xs, ys)\n",
"\n",
"zs = np.array([multivariate_gaussian(np.array([x,y]),mu,cov) 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)\n",
"show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3c50b10>"
]
}
],
"prompt_number": 104
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The result is clearly a 3D bell shaped curve. We can see that the gaussian is centered around (2,7), and that the probability quickly drops away in all directions.\n",
"\n",
"As beautiful as this is, it is perhaps a bit hard to get useful information. For example, it is not easy to tell if x and y both have the same variance or not. So for most of the rest of this book we will display multidimensional gaussian using contour plots.\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy.linalg as linalg\n",
"def plot_sigma_ellipse(x, y, cov):\n",
" # Get the sigma ellipse by transforming a circle by the cholesky decomposition\n",
"\n",
" L = linalg.cholesky(cov)\n",
" t = linspace(0,2*pi,100)\n",
" unit_circle = np.array([cos(t), sin(t)])\n",
"\n",
" E1 = L.dot(unit_circle)\n",
" axis('equal')\n",
" plot(E1[0]+x, E1[1]+y)\n",
" scatter(x,y,marker='+') # mark the center\n",
" show()\n",
" \n",
"cov = array ([[2,0],[0,2]])\n",
"plot_sigma_ellipse (2,7,cov)\n",
"\n",
"cov = array ([[2,0],[0,12]])\n",
"plot_sigma_ellipse (2,7,cov)\n",
"\n",
"cov = array ([[2,3],[1,2.5]])\n",
"plot_sigma_ellipse (2,7,cov)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3641d50>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x365dfd0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x57e7410>"
]
}
],
"prompt_number": 155
}
],
"metadata": {}
}
]
}
-2
View File
@@ -70,7 +70,6 @@ def norm_plot (mean, var):
xs = np.arange (min_x, max_x, 0.1)
ys = [gaussian (x,23,5) for x in xs]
plt.plot (xs,ys)
plt.show()
if __name__ == '__main__':
from scipy.stats import norm
@@ -88,4 +87,3 @@ if __name__ == '__main__':
assert rv.pdf(1.2) == x2
assert abs(x2- x3) < 0.00000001
print "all tests passed"