lots of pretty graphs

This commit is contained in:
Roger Labbe committed 2014-05-01 16:13:33 -05:00
1 parent d3800c5a4f
commit 20bd353b8a
2 files changed
+125 -22

No files matched your search

+113 -19
View File
@@ -206,7 +206,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2595550>"
"<matplotlib.figure.Figure at 0x4087550>"
]
}
],
@@ -230,14 +230,17 @@
"cov = array([[2,0],[0,2]])\n",
"e = g.sigma_ellipse (cov, 2, 7)\n",
"g.plot_sigma_ellipse(e, '\"2 0; 0 2\"')\n",
"show()\n",
"\n",
"cov = array([[2,0],[0,12]])\n",
"e = g.sigma_ellipse (cov, 2, 7)\n",
"g.plot_sigma_ellipse(e, '\"2 0; 0 12\"')\n",
"show()\n",
"\n",
"cov = array([[2,3],[1,2.5]])\n",
"e = g.sigma_ellipse (cov, 2, 7)\n",
"g.plot_sigma_ellipse(e,'\"2 3; 1 2.5\"')\n"
"g.plot_sigma_ellipse(e,'\"2 3; 1 2.5\"')\n",
"show()"
],
"language": "python",
"metadata": {},
@@ -247,7 +250,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2c63190>"
"<matplotlib.figure.Figure at 0x467ae50>"
]
},
{
@@ -255,7 +258,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2bce110>"
"<matplotlib.figure.Figure at 0x4a11b90>"
]
},
{
@@ -263,11 +266,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2bbdc90>"
"<matplotlib.figure.Figure at 0x4a61ed0>"
]
}
],
"prompt_number": 8
"prompt_number": 50
},
{
"cell_type": "markdown",
@@ -316,7 +319,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x258eb10>"
"<matplotlib.figure.Figure at 0x4080a10>"
]
}
],
@@ -346,7 +349,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2bad890>"
"<matplotlib.figure.Figure at 0x4731890>"
]
}
],
@@ -356,14 +359,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"If this is data from a Kalman filter, then each point has both a mean and variance. Let's try to show that by showing the approximate error for each point. Don't worry about why I am using a covariance matrix to depict the variance at this point, it will become clear in a few paragraphs."
"If this is data from a Kalman filter, then each point has both a mean and variance. Let's try to show that by showing the approximate error for each point. Don't worry about why I am using a covariance matrix to depict the variance at this point, it will become clear in a few paragraphs. The intent at this point is to show that while we have$x$=1,2,3 that there is a lot of error associated with each measurement."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cov = array([[0.005,0], [0,12]])\n",
"cov = array([[0.003,0], [0,12]])\n",
"sigma = sigma=[0.5,1.,1.5,2]\n",
"e1 = g.sigma_ellipses(cov, x=1, y=1, sigma=sigma)\n",
"e2 = g.sigma_ellipses(cov, x=2, y=2, sigma=sigma)\n",
@@ -373,23 +376,114 @@
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"axis_equal = False\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2f765d0>"
"<matplotlib.figure.Figure at 0x468b210>"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there is a lot of error associated with each value of $x$. We could write a 1D Kalman filter as we did in the last chapter, but suppose this is the output of that filter, and not just raw sensor measurements. Are we out of luck?\n",
"\n",
"Let us think about how we predicted that $x$=4 at $t$=4. In one sense we just drew a straight line between the points and saw where it lay at $t$=4. My constant refrain: what is the physical interpretation of that? What is the difference in $x$ over time? What is $\\frac{\\partial x}{\\partial t}$? The derivative, or difference in distance over time is *velocity*. \n",
"\n",
"This is the **key point** in Kalman filters, so read carefully! Our sensor is only detecting the position of the aircraft (how doesn't matter). It does not have any kind of sensor that provides velocity to us. But based on the position estimates we can compute velocity. In Kalman filters we would call the velocity an **unobserved variable**. Unobserved means what it sounds like - there is no sensor that is measuring velocity directly. Since the velocity is based on the position, and the position has error, the velocity will have error as well. What happens if we draw the velocity errors over the positions errors?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from matplotlib.patches import Ellipse\n",
"\n",
"cov = array([[1,1],[1,1.1]])\n",
"ev = g.sigma_ellipses(cov, x=2, y=2, sigma=sigma)\n",
"\n",
"isct = Ellipse(xy=(2,2), width=.2, height=1.2, edgecolor='r', fc='None', lw=4)\n",
"plt.figure().gca().add_artist(isct)\n",
"g.plot_sigma_ellipses([e1, e2, e3, ev], axis_equal=True,x_lim=[0,4],y_lim=[0,15])\n",
"\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x490c8d0>"
]
}
],
"prompt_number": 49
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Think about what this plot means. We have a lot of error in our position estimates. We therefore have a lot of error in our velocity estimates. But look at the intersections between the velocity and the positions. Take the intersection at $t$=2. The intersection between the velocity and the position is where our aircraft is most likely to be, which I have roughly depicted with a red ellipse ('roughly' because I set the size via eyeball, not via math). The size of the error is much smaller than the error of the positions, despite the fact that velocity was derived from position. \n",
"\n",
"What makes this possible? Imagine for a moment that we superimposed the velocity from a *different* airplane over the position graph. Cleary the two are not related, and there is no way that combining the two could possibly yield any additional information. In contrast, the velocity of the this airplane tells us something very important - the direction and speed of travel. So long as the aircraft does not alter its velocity the velocity allows us to predict where the next position is. After a relatively small amount of error in velocity the probability that it is a good match with the position is very small. Think about it - if you suddenly change direction your position is also going to change a lot. If the position measurement is not in the direction of the assumed velocity change it is very unlikely to be true. The two are correlated, so if the velocity changes so must the position, and in a predictable way. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Kalman Filter Algorithm\n",
"So in general terms we can show how a multidimensional Kalman filter works. In the example above, we compute velocity from the previous position measurements using something called the **measurement function**. Then we predict the next position by using the current estimate and something called the **state transition function**. In our example above, *new_position = old_position + velocity&ast;time*. Next, we take the measurement from the sensor, and compare it to the prediction we just made. In a world with perfect sensors and perfect airplanes the prediction will always match the measured value. In the real world they will always be at least slightly different. We call the difference between the two the **residual**. Finally, we use something called the **Kalman gain** to update our estimate to be somewhere between the measured position and the predicted position. I will not describe how the gain is set, but suppose we had perfect confidence in our measurement - no error is possible. Then, clearly, we would set the gain so that 100% of the position came from the measurement, and 0% from the prediction. At the other extreme, if he have no confidence at all in the sensor (maybe it reported a hardware fault), we would set the gain so that 100% of the position came from the prediction, and 0% from the measurement. In normal cases, we will take a ratio of the two: maybe 53% of the measurement, and 47% of the prediction. The gain is updated on every cycle based on the variance of the variables (in a way yet to be explained). It should be clear that if the variance of the measurement is low, and the variance of the prediction is high we will favor the measurement, and vice versa."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"xlim([0.9,2.5]);ylim([0,3])\n",
"\n",
"scatter ([1,2,2],[1,2,1.3])\n",
"ax = plt.axes()\n",
"ax.arrow(1, 1, .83, .83, head_width=0.1, head_length=0.2, fc='r', ec='r',label='estimate')\n",
"ax.annotate('prediction', xy=(2, 2.15))\n",
"ax.annotate('measurement', xy=(2, 1.1))\n",
"ax.annotate('residual', xy=(2.1,1.6), color='b')\n",
"ax.annotate('', xy=(2,2), xytext=(2,1.3), \n",
" arrowprops=dict(arrowstyle=\"<->\",\n",
" connectionstyle=\"bar\",\n",
" ec=\"b\",\n",
" shrinkA=3, shrinkB=3))\n",
"show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAEACAYAAAB8nvebAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xtc1HW+P/DXcPHCJc1LmMCGq8hFYGaAJDR1yEVSk8W8\nUrqE5pI+jPydzj60djtpWx7ZR+XR1XW1U+LdPXHkiK1i5WEsUbJNvGy6gObIRWXjmBdQE5jP749P\nDIzADOrcvvB6Ph48mvnOh5m32Pflh8/3+31/VUIIASIiUhQ3ZxdARET3juFNRKRADG8iIgVieBMR\nKRDDm4hIgRjeREQKZDG8b9++jbi4OGg0GoSHh+O1115rc1xmZiaCg4OhVqtRXFxsl0KJiKiZh6UX\ne/TogYKCAnh5eaGhoQFPPvkkDh06hCeffNI0Zu/evTh79izKysrw1VdfYf78+SgqKrJ74UREXZnV\nZRMvLy8AwJ07d9DY2Ig+ffqYvZ6Xl4e0tDQAQFxcHK5evYrq6mo7lEpERE2shrfRaIRGo4Gfnx8S\nEhIQHh5u9npVVRUCAwNNzwMCAlBZWWn7SomIyMRqeLu5ueH48eOorKzEF198Ab1e32rM3VfYq1Qq\nmxVIREStWVzzbqlXr16YOHEi/va3v0Gn05m2+/v7o6KiwvS8srIS/v7+rb5fo9HgxIkTD1YtEVEX\no1arcfz48VbbLc68a2pqcPXqVQDArVu38Nlnn0Gr1ZqNSU5OxubNmwEARUVF6N27N/z8/Fq914kT\nJyCEsOnXm2++afP3tMeXEupUQo2sk3W6+pc96mxv0mtx5n3p0iWkpaXBaDTCaDRi9uzZGDt2LNav\nXw8AyMjIwIQJE7B3714MGTIE3t7e2Lhxo6W3JCIiG7AY3pGRkTh27Fir7RkZGWbP16xZY9uqiIjI\nIkVfYdly7d2VKaFOJdQIsE5bY5225cg6VUIIh9yMQaVSwUEfRUTUabSXnYqeeRMRdVUMbyIiBWJ4\nExEpEMObiEiBGN5ERArE8CYiUiCGNxGRAjG8iYgUiOFNRKRADG8iIgVieBMRKRDDm4hIgRjeREQK\nxPAmIlIghjcRkQIxvImIFIjhTUSkQAxvIiIFYngTESkQw5uISIEY3kRECsTwJiJSIIY3EZECMbyJ\niBSI4U1EpEAMbyIiBbIY3hUVFUhISMCwYcMQERGB1atXtxqj1+vRq1cvaLVaaLVavP3223YrloiI\nJA9LL3p6emLlypXQaDSora1FTEwMEhMTERYWZjZuzJgxyMvLs2uhRETUzOLMe8CAAdBoNAAAHx8f\nhIWF4eLFi63GCSHsUx0REbWpw2veBoMBxcXFiIuLM9uuUqlw+PBhqNVqTJgwAadPn7Z5kUREZM7i\nskmT2tpaTJ06FatWrYKPj4/Za9HR0aioqICXlxf27duHlJQUlJaW2qVYIiKSrIZ3fX09pkyZglmz\nZiElJaXV676+vqbH48ePx4IFC3DlyhX06dOn1dilS5eaHut0Ouh0uvurmoiok9Lr9dDr9VbHqYSF\nBWshBNLS0tC3b1+sXLmyzTHV1dV45JFHoFKpcPToUUyfPh0Gg6H1B6lUXBsnIrpH7WWnxZl3YWEh\ntm7diqioKGi1WgDA8uXLUV5eDgDIyMhATk4O1q1bBw8PD3h5eWHnzp12KJ+IiFqyOPO26Qdx5k1E\ndM/ay05eYUlEpEAMbyIiBWJ4ExEpEMObiEiBGN5ERArE8CYiUiCGNxGRAjG8iYgUiOFNRKRADG8i\nIgVieBMRKRDDm4hIgRjeREQKxPAmIlIghjcR2YRer8ekSZMAAHv27EFWVla7Y69du4Z169aZnl+8\neBHTpk2ze42dCft5E5FFRqMRbm7W53l6vR7vvfce9uzZY3WswWDApEmTcOrUKVuU2KmxnzcRtWIw\nGBAaGopZs2YhPDwc06ZNw61btxAUFIQlS5YgJiYGH3/8MT799FOMGDECMTExmD59Ourq6gAA+fn5\nCAsLQ0xMDHJzc03vm52djZdffhmAvFXi5MmTodFooNFocOTIESxZsgTnzp2DVqvF4sWLceHCBURE\nRAAAbt++jfT0dERFRSE6Otp0P8fs7Gw8++yzGD9+PIYOHYrFixc79oflYjp093gi6rxKS0uxceNG\nxMfHY+7cuVi7di1UKhX69euHb775BjU1NZgyZQoOHDiAnj17IisrC++//z5+85vf4Ne//jUKCgow\nePBgzJgxAyqVqtX7Z2ZmIiEhAbm5uTAajaitrUVWVha+/fZbFBcXA5D/iDR979q1a+Hu7o6TJ0+i\npKQE48aNQ2lpKQDgxIkTOH78OLp164aQkBBkZmbC39/fcT8sF8KZN1EXFxgYiPj4eADArFmzcOjQ\nIQDAjBkzAABFRUU4ffo0RowYAa1Wi82bN6O8vBwlJSUYNGgQBg8ebPretn69LygowPz58wEAbm5u\neOihhywuoRYWFmLWrFkAgJCQEDz22GMoLS2FSqXC2LFj4evri+7duyM8PLzNm513FZx5E3VxLWfL\nQgjT+ra3t7dpe2JiIrZv3272fSdOnDB7bimQ7/V4V3vju3fvbnrs7u6OxsbGe3rfzoQzb6Iurry8\nHEVFRQCA7du348knnzR7PS4uDoWFhTh37hwAoK6uDmVlZQgNDYXBYMB3330HANixY0eb7z927FjT\nmSWNjY24fv06fH19cePGjTbHjxo1Ctu2bQMgl3TKy8sRGhraZqB35ZMgGN5EXVxISAjWrl2L8PBw\nXLt2zbTE0aR///7Izs5Gamoq1Go1RowYgZKSEnTv3h0bNmzAxIkTERMTAz8/P9MsXqVSmR6vWrUK\nBQUFiIqKQmxsLM6cOYO+ffti5MiRiIyMxOLFi83GL1iwAEajEVFRUZg5cyY2bdoET09PszFN2lpj\n7yp4qiBRF8ZT9lwfTxUkojZ15dmrknHmTUTkwjjzJiLqRBjeREQKxPAmIlIghjcRkQJZDO+Kigok\nJCRg2LBhiIiIwOrVq9scl5mZieDgYKjValOvAiIish+L4e3p6YmVK1fi22+/RVFREdauXYszZ86Y\njdm7dy/Onj2LsrIybNiwodUJ/kTkevbv349x46Zg3Lgp2L9/f5tjDh4EvvrKwYVRh1kM7wEDBkCj\n0QAAfHx8EBYWhosXL5qNycvLQ1paGgB5Ge3Vq1dRXV1tp3KJ6EHt378fkyen4bPPkvHZZ8mYPDnN\nLMD1ekCnA158Ebh1y2llkhUdbkxlMBhQXFyMuLg4s+1VVVUIDAw0PQ8ICEBlZSX8/PxsVyUR2cx7\n723ArVtZAOSk69YtuS08PAmzZwNVVcAbbwDPPQd4sHWdy+rQX01tbS2mTp2KVatWwcfHp9Xrd59A\n3t4VW0uXLjU91ul00Ol0Ha+UiOzu66+BmzeBtDT5Zc3DDwNXrti/rq5Er9ebbkBhkbDizp07Yty4\ncWLlypVtvp6RkSF27Nhheh4SEiIuX77calwHPoqIbO3//k+I/HwhLlwwbcrPzxc9e/oJIFsA2aJn\nTz+Rn59ver2gQAidToghQ+RjS7hb21972WlxzVsIgblz5yI8PByLFi1qc0xycjI2b94MQDZt7927\nN5dMiJzhxx+Bo0eB1auByZOBRx8F+vYFpk0DyspMw5KSkpCbuwmJiXlITMxDbu4mJCUlmV7X6YCC\nAuA//xPo2dMJfw7qEIu9TQ4dOoTRo0cjKirKtBSyfPlylJeXAwAyMjIAAAsXLkR+fj68vb2xceNG\nREdHt/4g9jYhsh0hgLNn5ekgX34pTw357jugRw+gvh64fRtQqYDnnwfefx/o398uZahUshSyn/ay\nk42piJTg++/lrPrIEeDAAeDkSbndzQ2orTUf6+0NPPYYkJ0NPP64XctieNtfe9nJY8lErubWLaC4\nWM6qDxyQoX3tmpxV19YCRmPb39e9uxzz3ntAeroMduq0GN5EzmQ0AiUlMqAPHgS++AK4cAHw8pJr\n2D/+2Dz2zp2230OlkqE9ezaQlQX07u2Y2smpuGxC5EiXL8ugLiyURwVPnQLc3eVrdXX3/n7e3kBo\nKLBxIxAZadtaO4DLJvbHZRMiR6urA44dA4qKgP/9X3kSdW2tXN6wtPzRET17ytn22rXAzJkyRalL\nYXgT2dI//gEsXw4cOgRUVsqQvX3bfMmj5VLIvXJzk+H/0kvAW28BbVw0R10Dw5vIlhoa5Cl7Fy7I\nkL1+3Xbv7e0NaLXyBOyQENu9LykS17yJ7KG6GvjLX4A//xk4f14ukbR3wNEaLy85w16/HvjlL11q\niYRr3vbH87yJnKW0FHjqKdnxCZBLHx1Z73Z3B7p1A159FXj9dZe83JHhbX88YEnkSEIA+/cDycny\niscmH3wgD2Ju3y4D/MaNtr/f2xsYOVLOtoOCHFIyKQtn3kS2dOoUMHWqnG03WbkSePnl5lMCAbk2\nXlAAbNgA/PWvsvfqjRtyiaRPH+DDD4Fx4xxf/z3izNv+uGxCZC+XLgFz5gD5+c3bMjOBf/93GcbW\n3LwJ7Nkjz9UeM0Yuk3TrZr96bYjhbX8MbyJbqqsDFi+W51k3eeYZuSwyYIDz6nIwhrf9cc2b6EE1\nNMh2q6++2rwtLAz4r/8CIiKcVxd1SQxvIkuEAHJzgSlTmrf16AHk5QGJic6ri7o8th0jasvRo0BA\ngDytrym4P/gAaGyUXf8Y3ORkDG+iJhcuAKNGyYXcuDh5Xvbrr8vL24WQt1Nnm1VyEVw2oa7t2jXg\nlVeATZuat82cCaxZI28hRuSiOI2grufOHdnUSaWSva83bQJiY+V9HoUAduxgcDvJvHnAmTOtt2dn\ny1Pl71dn7N/FmTd1DUYjsG0b8KtfNW/r21cejBw1ynl1dXJNZ7h1tB3LBx/Ypw4XagdjM5Line truncated
"text": [
"<matplotlib.figure.Figure at 0x4a34890>"
]
}
],
"prompt_number": 133
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
+12 -3
View File
@@ -93,10 +93,11 @@ def plot_sigma_ellipse(ellipse,title=None):
plt.scatter(x,y,marker='+') # mark the center
if title is not None:
plt.title (title)
plt.show()
def plot_sigma_ellipses(ellipses,title=None,axis_equal=True,x_lim=None,y_lim=None):
""" plots the ellipse produced from sigma_ellipse."""
isct = plt.Circle((2,2),1,color='b',fill=False)
plt.figure().gca().add_patch(isct)
if x_lim is not None:
axis_equal = False
@@ -120,8 +121,6 @@ def plot_sigma_ellipses(ellipses,title=None,axis_equal=True,x_lim=None,y_lim=Non
plt.scatter(x,y,marker='+') # mark the center
if title is not None:
plt.title (title)
plt.show()
def _to_array(x):
""" returns any of a scalar, matrix, or array as a 1D numpy array
@@ -165,4 +164,14 @@ if __name__ == '__main__':
assert rv.pdf(1.2) == x2
assert abs(x2- x3) < 0.00000001
cov = np.array([\
[1,1],\
[1,1.1]])
ev = sigma_ellipses(cov, x=2, y=2, sigma=sigma)
plot_sigma_ellipses([e1, e2, e3, ev], axis_equal=True,x_lim=[0,4],y_lim=[0,15])
#isct = plt.Circle((2,2),1,color='b',fill=False)
#plt.figure().gca().add_artist(isct)
plt.show()
print "all tests passed"