PEP-8 compliance

This commit is contained in:
Roger Labbe committed 2014-12-01 09:29:06 -08:00
1 parent 546eca9a6c
commit dc4d234d04
1 file changed
+32 -31
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:cd758a1ca3157c15f8cb0a9161fe3c9e5fe8a7522243d185ae67fa44bdbd4dc6"
"signature": "sha256:33a7a44dc4488b0b4ba93e74480b2d2d6f2db305a040407e469194f4c08082cf"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -32,7 +32,7 @@
"from __future__ import division, print_function\n",
"import matplotlib.pyplot as plt\n",
"import sys\n",
"sys.path.insert(0,'../code') # allow us to format the book\n",
"sys.path.insert(0, '../code') # allow us to format the book\n",
"import book_format\n",
"book_format.load_style()"
],
@@ -261,7 +261,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7fa6499e67b8>"
"<IPython.core.display.HTML at 0x7f30e36cb4e0>"
]
}
],
@@ -377,21 +377,22 @@
"cell_type": "code",
"collapsed": false,
"input": [
"circle1=plt.Circle((-4,0),5,color='#004080',fill=False,linewidth=20, alpha=.7)\n",
"circle2=plt.Circle((4,0),5,color='#E24A33', fill=False, linewidth=5, alpha=.7)\n",
"circle1=plt.Circle((-4, 0), 5, color='#004080', \n",
" fill=False, linewidth=20, alpha=.7)\n",
"circle2=plt.Circle((4, 0), 5, color='#E24A33', \n",
" fill=False, linewidth=5, alpha=.7)\n",
"\n",
"fig = plt.gcf()\n",
"ax = fig.gca()\n",
"\n",
"plt.axis('equal')\n",
"plt.xlim((-10,10))\n",
"plt.ylim((-10,10))\n",
"plt.xlim((-10, 10))\n",
"plt.ylim((-10, 10))\n",
"\n",
"plt.plot ([-4,0], [0,3], c='#004080')\n",
"plt.plot ([4,0], [0,3], c='#E24A33')\n",
"plt.plot ([-4, 0], [0, 3], c='#004080')\n",
"plt.plot ([4, 0], [0, 3], c='#E24A33')\n",
"plt.text(-4, -.5, \"A\", fontsize=16, horizontalalignment='center')\n",
"plt.text(4, -.5, \"B\", fontsize=16, horizontalalignment='center')\n",
"#plt.scatter ([-4],[0], 'r')\n",
"\n",
"ax.add_artist(circle1)\n",
"ax.add_artist(circle2)\n",
@@ -403,9 +404,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa62d55b7b8>"
"<matplotlib.figure.Figure at 0x7f30c7268748>"
]
}
],
@@ -693,7 +694,7 @@
"input": [
"from math import sin, cos, atan2\n",
"\n",
"def H_of (pos, pos_A, pos_B):\n",
"def H_of(pos, pos_A, pos_B):\n",
" \"\"\" Given the position of our object at 'pos' in 2D, and two \n",
" transmitters A and B at positions 'pos_A' and 'pos_B', return \n",
" the partial derivative of H\n",
@@ -729,7 +730,7 @@
" self.B = pos_b\n",
" self.noise_factor = noise_factor\n",
" \n",
" def range_of (self, pos):\n",
" def range_of(self, pos):\n",
" \"\"\" returns tuple containing noisy range data to A and B\n",
" given a position 'pos'\n",
" \"\"\"\n",
@@ -761,7 +762,7 @@
"from filterpy.kalman import KalmanFilter\n",
"import numpy as np\n",
"\n",
"pos_a = (100,-20)\n",
"pos_a = (100, -20)\n",
"pos_b = (-100, -20)\n",
"\n",
"f1 = KalmanFilter(dim_x=4, dim_z=2)\n",
@@ -774,16 +775,16 @@
"f1.R *= 1.\n",
"f1.Q *= .1\n",
"\n",
"f1.x = np.array([[1,0,1,0]], dtype=float).T\n",
"f1.x = np.array([[1, 0, 1, 0]], dtype=float).T\n",
"f1.P = np.eye(4) * 5.\n",
"\n",
"# initialize storage and other variables for the run\n",
"count = 30\n",
"xs, ys = [],[]\n",
"pxs, pys = [],[]\n",
"xs, ys = [], []\n",
"pxs, pys = [], []\n",
"\n",
"# create the simulated sensor\n",
"d = DMESensor (pos_a, pos_b, noise_factor=3.)\n",
"d = DMESensor(pos_a, pos_b, noise_factor=3.)\n",
"\n",
"# pos will contain our nominal position since the filter does not\n",
"# maintain position.\n",
@@ -791,31 +792,31 @@
"\n",
"for i in range(count):\n",
" # move (1,1) each step, so just use i\n",
" pos = [i,i]\n",
" pos = [i, i]\n",
" \n",
" # compute the difference in range between the nominal track\n",
" # and measured ranges\n",
" ra,rb = d.range_of(pos)\n",
" rx,ry = d.range_of((pos[0]+f1.x[0,0], pos[1]+f1.x[2,0]))\n",
" z = np.array([[ra-rx],[rb-ry]])\n",
" rx,ry = d.range_of((pos[0] + f1.x[0, 0], pos[1] + f1.x[2, 0]))\n",
" z = np.array([[ra-rx], [rb-ry]])\n",
"\n",
" # compute linearized H for this time step\n",
" f1.H = H_of (pos, pos_a, pos_b)\n",
"\n",
" # store stuff so we can plot it later\n",
" xs.append (f1.x[0,0]+i)\n",
" ys.append (f1.x[2,0]+i)\n",
" pxs.append (pos[0])\n",
" xs.append(f1.x[0, 0]+i)\n",
" ys.append(f1.x[2, 0]+i)\n",
" pxs.append(pos[0])\n",
" pys.append(pos[1])\n",
" \n",
" # perform the Kalman filter steps\n",
" f1.predict ()\n",
" f1.predict()\n",
" f1.update(z)\n",
"\n",
"\n",
"p1, = plt.plot (xs, ys, 'r--')\n",
"p2, = plt.plot (pxs, pys)\n",
"plt.legend([p1,p2], ['filter', 'ideal'], loc=2)\n",
"plt.plot(xs, ys, 'r--', label='filter')\n",
"plt.plot(pxs, pys, label='ideal')\n",
"plt.legend(loc=2)\n",
"plt.show()"
],
"language": "python",
@@ -824,9 +825,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAF2CAYAAACLY5UZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4VOX9/vH7zGSy7wMoJOwStigVBWQRFFxaZZe1RX8s\nWimCAlZE+YpUXHBDqyBaFnGjUlQUFRegCgWkRQHZEauAEIQwBLJnJjPn9weSGhJClpnMTPJ+XZeX\n5GzzmT49cPP4LIZpmqYAAACAWsji7wIAAAAAfyEMAwAAoNYiDAMAAKDWIgwDAACg1iIMAwAAoNYi\nDAMAAKDWIgwDAACg1rpgGB4xYoTq16+vuLg4tWvXTitWrJAkuVwujRkzRrGxsWrcuLGWLVvm82IB\nAAAAbzIutOnG9u3b1bJlS4WFhWnVqlXq3bu3Tp48qblz5+q9997T559/rq1bt6p3797as2ePkpOT\nq6t2AAAAoEou2DN82WWXKSwsTKZpyul0Kjo6WoZhaNmyZbr77rsVGxurHj16qHPnzlq+fHl11AwA\nAAB4RUh5Lho3bpwWLVqkiIgIffzxx4qMjNR3332nli1basSIEerTp4/atGmjffv2+bpeAAAAwGvK\nNYHupZdeUnZ2th599FGNGDFC+fn5ysnJUXR0tHbu3Km0tDTFxMQoOzvb1/UCAAAAXlOunmFJCgkJ\n0V133aU5c+ZozZo1ioqKUk5OjrZt2yZJuueeexQTE1PivjVr1nivWgAAAKAMvXr1qtD15Q7DZ5mm\nKdM0lZKSoj179qh9+/aSpN27d6tfv36l3tO6deuKfgwCgN1u13vvvacePXr4uxRUEG0X3Gi/4EXb\nBTfaL7jZ7XatX7++wveVOUzi2LFjWrhwoTIzM1VYWKhXXnlFx48fV5cuXTRkyBC98MILOn36tL78\n8ktt2rRJAwYMqPQXAAAAAKpbmT3DVqtVS5Ys0dSpU+V0OtWmTRutWLFCiYmJmjRpkvbu3auGDRsq\nISFBixYtUlJSUnXVDQAAAFRZmWG4Tp065x3zGxISooULF2rhwoU+KQyBgSEuwYu2C260X/Ci7YIb\n7Vf7sB0zysRvCsGLtgtutF/wou2CG+1X+xCGAQAAUGtVeDUJb3O5XMrIyJBhGP4updYzTVMJCQmy\n2Wz+LgUAAKBa+DUMu1wuORwO1atXTxYLndT+5vF4dPz4cdntdgIxAACoFfyaQDMyMgjCAcRisahe\nvXrKyMjwdykAAKCGys13+buEYvyaQg3DIAgHGIvFwpAVAADgdUcc2Xrw1Q26csISpZ/O9Xc5Rfw+\nZhgAAAA11xFHtuau+FZ//3KvnIUeGYa0dvsRDbq6ReUeaJqyHjok286dZ/7ZtUvu+vWlBQsq9TjC\nMAAAALyutBDc96pmmjjgcrVMTqz0c+1Dhypsw4ZixwobNpS7ks8jDAMAAMBrKhuCjcxM2XbvLurt\nzR0yRM7OnUtcV9ismUL275erbdv//ZOaqvhK1ksYroKsrCxNnDhRGzduVFZWlu69915NmjSp6PzE\niRN1+PBhvfPOO8Xumz59uhYtWiRJuuqqq0qcBwAACDaVDcGRixcr+m9/U8jBg8WOFzZsWGoYPv3I\nIzo9a5bX6iYMV8Ebb7yhzZs367333lPdunUVFRVV7Pyjjz4qt7tkp/3999+vCRMm6OWXX9b27dvP\n+/yNGzdqyJAh+ve//62kpCSv1w8AAFBVZYbg+nEK+fFH2d5fJ3fdunJ27VrifsPjUcjBgzLDwuRq\n1aqot9fZpUvpHxga6tX6CcNV8MMPPyglJeW8WzdGR0eXejwqKkpRUVGKjIyUaZoX/JzyXAMAAFCd\nzheC770sTld88o5sf3peIXv2yJKXJ0nK69On1DCc16ePCjp3VuEll0h+2OeAdc0qYeLEiUpOTtbb\nb7+tTZs2KTk5WcnJyXruuecknen5PXts0KBBFX7+xo0blZycrCFDhkg6M5Ti7POOHDlSdN3Ro0c1\nduxYtW3bVqmpqbrjjjt09OjRYs9aunSpkpOTtXPnTvXu3VvNmzdXx44dtWvXrir8LwAAAGqrI45s\nPfjyGnWb9LZeW71bLrdHfa9qpjWzbtG8Cb3UxpKnqDfeUOiWLbLk5akwKUl5N9yggquuKvV5nrp1\nVdi6tV+CsBQkPcMNzjNEIO1XwbAq11fUzJkzNW3aNE2fPl1Hjx7Vgl+W8oiMjJQkPfTQQ/rzn/+s\n6dOn68SJExV+focOHbRt2zZt3rxZd9xxh1auXKkGDRpIkhITz4y5yc3N1aBBg5Samqp3331XISEh\nevLJJzVq1Ch98sknJdYKnjZtmiZMmKDWrVtrx44d7DAHAADKxcjNVdjatTq2dbf+uidHrxbWk9Ni\nlWGa6tu5eYkxwa7LLtPphx6SKzVVrjZtZCZWfuWI6hAUYTjQxMTEKCYmRmFhYQoJCVGdOnWKnY+O\njlZ0dLTCwsIqNcTBZrOpTp06iouLkyTZ7fYSn/H+++/r1KlTmjNnTlGwfeyxx9S+fXtt27ZNl19+\nebHrx48fr+uvv16S1KhRowrXBAAAaqe0n9K16Mn3tKB+ezktsTIMU0McezQ16oQuuut26ZwN1My4\nOOWMHeunaisuKMJwRXt0vdUDHMh27NihrKwstW3btthxwzB06NChEmG4U6dO1VkeAAAIcsXGBCd1\nlCFTAxqG6Z6+7dSi0xjJavV3iV4RFGEYpbvkkkv06quvljh+bi+yJMXGxlZHSQAAIMilObI1xweb\nZQQqwnAVnTs2tyLno6KilJ+ff97zZ4c/FBYWljh36aWX6p133lFMTEzROGIAAIDKSnNka+6H32rJ\nF7UjBJ/FahJVdO6YYI/Ho+PHj+v48ePKz8+X0+lUenq6jh8/LpfLVeza3/zmN9q1a5fWrVun48eP\nKycnp9j5Jk2ayGq16oMPPlBWVlax4DxgwADVq1dPd9xxhzZv3qwDBw5o1apVGjt2rPJ+WcIEAADg\nQtIc2Zq2eIO6Tl6qxavOrA4xoL5VG64K0cv/r0ONDsISPcNVYhhGiZ7fI0eOqPOvdksxDEOXX365\nDMPQsmXLdNWvlhW56qqrNHbsWN11113KyMjQ7bffrhkzZhSdr1u3rmbMmKGXX35Zzz77rDwejzZt\n2qSkpCRFRETo3Xff1WOPPabRo0crNzdX9evXV8+ePRV6zmLUF+q9BgAAtU9ZPcHd+10v688/6+cB\nN8is4UMtDdPHOzqsWbPmvJtSpKenq27dur78eFTC2Xax2+2SJIfD4eeKUFG0XXCj/YIXbRfcakv7\nlRaC+3QqPhzi4rZtZTl1Skd37Aj4pdHOstvtWr9+vXr16lWh++gZBgAAqAUqMibY+GVophkR4Y9S\nqxVhGAAAoAar8MQ4j6coDCs8vHqL9QPCMAAAQA1U2dUhzgZhT0SEVAvmHRGGAQAAapAqL5FmGMq+\n807fFxogCMMAAAA1gLfWCTYjIpQ5fboPKw0shGEAAIAgVls3y/AWwjAAAEAQIgR7B2EYAAAgiBCC\nvYswDAAAEATOt1nGpIGE4Kqw+LuAYLZx40YlJyfryJEjZV63dOlSJScne/WzP/30UyUnJxf9AwAA\naqY0R7amLd6grpOXavGq3XK5PerTqZlWP3GLXr67l9eDsPX77xX1yisK++c/vfrcQEXPcBV06NBB\n27ZtU6Iftins2bOntm3bps2bN+uOO+6o9s8HAAC+Vda2ya0a+i57hO7cqbhHHlFe374q6NnTZ58T\nKAjDVWCz2VSnTh2/fHZoaKjq1KmjuLg4v3w+AADwDX+F4LOMvDxJtWMrZolhEpXyzTffFBuicO4w\niZ07d+rmm29Ws2bN1Lt3b/34448lnrF582YNHDhQzZs3V8eOHfXII4+ooKCg6PzSpUt10003qVWr\nVkpJSdGIESP03Xff+fy7AQAA/7jQcIjqCMKSpF92oKstYTjge4aT/jDfJ8898lblhxa0a9fuvEMU\nXC6XxowZo8suu0x//etftWvXLt13330yfrWd4e7duzVs2DBNmDBBs2fPVnp6uqZMmaLCwkI98sgj\nkqQTJ07ozjvvVGpqqjwej5566imNGDFCGzduVEhIwDcbAAAoJ3/3BJ/LUst6hklVlRASEnLeIQpf\nfvml0tLS9NFHH6lu3bq65JJLtGHDBi1ZsqTomnnz5qlr166aOHGiJKlJkyaaOHGi7r333qIwfNdd\ndxV77uTJk3X99ddr7969Sk1N9eG3AwAA1aHaQrDLpZAffpAlI0OWU6dkyciQceqUZBjKGTu25PWm\neeZf4eHeqyGABXwYrkoPrj/8+OOPSkhIUN26dYuOtW7dutg1O3bs0MGDB5WSklJ0zO12y+l06vjx\n46pXr5527dql2bNna9euXcrIyJDH45Ek5ebmVs8XAQAAPlHlEFxQoLC1a4uFW8upU5Jp6vSTT5a4\n3HLypOqVMhHOnZhYahjO+cMfFD13rgq6davU9ws2AR+Gg82vh0OUdc0tt9yiCRMmlDhnt9uVl5en\n4cOH67rrrtO8efOUmJiogwcP6ve//31RKAYAAMGlzBCcnCDbli2KWDxXlqNHZTl1SobLJceyZSWe\nYxQUyD5qVInjnvDwUsOwJz5erksukSchQZ6EBJnx8Wd+bbeXWqcZF6efd+2SypFpagLCsJc1bdpU\nGRkZRT28krRnz55i16Smpmrfvn1q3Lhxqc/Yv3+/Tp48qUcffVSRkZGSpK1bt5Z6bVRUlCQpPz9f\n4bXkP2cAABBMLtQTbJw+rbpXX62Qcybcm4Yhud2S1Vr8eEyM8q+7Tp64uDOh9my4TUg4M8Th3BAb\nFqb0tWvLX3AtCcFnEYYrISMjQy6XS6dOnZJ0ZrKbzWZTRESErr32WjVs2FDTpk3TlClTtGLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa62c29bf28>"
"<matplotlib.figure.Figure at 0x7f30c5fa8e10>"
]
}
],