Fixed formatting issue.

This commit is contained in:
Roger Labbe committed 2014-08-31 15:47:21 -07:00
1 parent 3bdeac52bf
commit e7ad67f8bc
2 files changed
+264 -7

No files matched your search

+1 -1
View File
@@ -8,7 +8,7 @@ There are multiple ways to read this book. However, it is intended to be interac
The github pages for this project are at http://rlabbe.github.io/Kalman-and-Bayesian-Filters-in-Python/
If you do not want to do that you can read this book online. the website [nbviewer]http://nbviewer.org provides an IPython Notebook server that renders a notebook stored at github (or elsewhere). The rendering is done in real time when you load the book. If you read my book today, and then I make a change tomorrow, when you go back tomorrow you will see that change.
** note: nbviewer is not currently rendering Latex on my or anyone's notebooks, so this is currently a poor option. **
*note: nbviewer is not currently rendering Latex on my or anyone's notebooks, so this is currently a poor option.*
You may access this book via nbviewer at any by using this address:
http://nbviewer.ipython.org/github/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/blob/master/Introduction.ipynb
+263 -6
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:6d2f6595215a9ad10adc06ace85fe18d7fb20af5b5b075d86c635ebc3af0abf5"
"signature": "sha256:df9fb9c477b6a2610674b7ee0fbb91de2fede5f150497593d932da77a6f002ba"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -103,21 +103,278 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAA6gAAAOeCAYAAAAOYj2YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4nXWBNv77nKRpm6YtbVlKgbKUgiBQZBcKlE0RFVBx\nwZdlUFDBUXAXxnGYmZ+jjjKi44bgYEFQQSsvKCBrKWUtYnFhteyVFkrpmqZtcs7vjwbldWjpkuR5\nknw+19Wr5/v0PDn3deWP5s53eRIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+riNkvw8yUNJHkyy\nb5KRSW5M8miSGzrfAwAAAN1qcpIPdL5uTDI8yX8m+Wzntc8l+UoBuQAAAOhHhid5/FWuP5xks87X\nozvHAAAA0G12T3JPkouT3J/kwiRDkrz0ivdU/m4MAAAA/0t1A+9vTLJHku92/r00yef/7j31zj8A\nAACwWo0beP+znX9mdI5/nuTsJHOyamnvnCSbJ3n+728cN25cfdasWRv48QAAAJTUrCTbr8sNlS74\n0GlJTs2qE3vPTdLcef3FJF/NqhnVjfIqM6v1uonV/urcc8/NueeeW3QMCuL733/53vdvvv/9l+99\n/+b7339VKpVkHTvnhs6gJsnHklyWpCmrGvIpSRqSXJHkg0meTPKeLvgcAAAA+rCuKKgPJNn7Va4f\n3gVfGwAAgH5iQw9JgvUyadKkoiNQIN///sv3vn/z/e+/fO/7N99/1kVX7EFdX/agAgAA9FHrswfV\nDCoAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAA\npaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIA\nAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoq\nAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWg\noAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQ\nCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAA\nAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKAC\nAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoK\nKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACl\noKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAA\nUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioA\nAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCg\nAgAAUAoKKgAAAKWgoAIAAFAKCioAAACloKACAABQCgoqAAAApaCgAgAAUAoKKgAAAKWgoAIAAFAK\nCioAAACloKACAABQCgoqAAAApdDYBV/jySSLknQkWZlknyQjk/wsydad//6eJAu64LMAAADoo7pi\nBrWeZFKSN2RVOU2Szye5MckOSW7uHAMAAMBqddUS38rfjY9OMrnz9eQkx3bR5wAAANBHddUM6k1J\n7ktyWue1zZLM7Xw9t3MMAAAAq9UVe1APSPJckk2yalnvw3/37/XOPwAAALBaXVFQn+v8+4Ukv8yq\nfahzk4xOMifJ5kmef7Ubzz333L++njRpUiZNmtQFcQAAAOhpU6dOzdSpUzfoa/z93tF11ZykIcni\nJEOS3JDkX5McnuTFJF/NqgOSNsr/PiipXq+bWAUAAOiLKpVKso6dc0ML6rZZNWuarJqNvSzJl7Pq\nMTNXJBmb1T9mRkEFAADoo4ooqBtCQQUAAOij1qegdtVjZgAAAGCDKKgAAACUgoIKAABAKSioAAAA\nlIKCCgAAQCkoqAAAAJSCggoAAEApNBYdAAAAKLcZM2bkoosvSmNjYz5y2key6667Fh2JPmqdHpra\nxer1er3AjwcAAF7L7bffniPffmRa92pNpVZJ8++ac/stt+cNb3hD0dEouUqlkqxj51RQAQCA1Trs\nLYflloG3JC/30buS40Ydlysvu7LQXJTf+hRUe1ABAIDVal3Wmgx+xYXBSWtra2F56NsUVAAAYLVO\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7ff53fa86890>"
"<matplotlib.figure.Figure at 0x7f6e93fff358>"
]
}
],
"prompt_number": 15
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"input": [
"%matplotlib inline\n",
"from numpy.random import randn\n",
"import numpy as np\n",
"from filterpy.kalman import KalmanFilter\n",
"from filterpy.leastsq import LeastSquaresFilter\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.pylab as pylab\n",
"\n",
"pylab.rcParams['figure.figsize'] = (16.0, 16.0)\n",
"\n",
"lsq = LeastSquaresFilter(dt=1, order=2, noise_variance = 5)\n",
"\n",
"f = KalmanFilter(dim_x=1, dim_z=1, dim_u=1)\n",
"f.P = 500\n",
"f.H = np.array([[1.]])\n",
"f.F = np.array([[1.]])\n",
"f.B = np.array([[1.]])\n",
"f.Q = .02\n",
"f.R = 5\n",
"\n",
"kxs = []\n",
"lxs = []\n",
"kKs = []\n",
"lKs = []\n",
"zs = []\n",
"\n",
"for i in range(500):\n",
" z = i + randn()*5\n",
" zs.append(z)\n",
"\n",
" lsq(z)\n",
" f.update(z)\n",
" \n",
" kxs.append(f.x[0,0])\n",
" lxs.append(lsq.x)\n",
" \n",
" kKs.append(f.K[0,0])\n",
" lKs.append(lsq.K2)\n",
"\n",
" f.predict(u=1)\n",
" \n",
" \n",
"plt.figure()\n",
"plt.plot (kxs, c='b')\n",
"plt.plot (lxs, c='g')\n",
"plt.plot (zs, c='r')\n",
"\n",
"plt.figure()\n",
"plt.plot (kKs, c='b')\n",
"plt.plot (lKs, c='r')\n",
" \n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f6e8f256ac8>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAA6YAAAOeCAYAAAAQqw0rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3W+MXXd95/HP9R3bcWoax0lrSGInakOSBtH8YZWmsCVT\nLUgkirIPSqusiJCiVouQolKqShtVSHjVB1SVWiLYlqYSrVigVG1powChK0oZSlURtuQPSYHgAElM\nVjE0/x07sT2+++BMnPEw9r0zmTnfk3teL8myZ+bMPb9IefLW93d+JwEAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAACgA05JcmeSe5J8M8kHTnDdh5LsSXJvksvaWRoAAAB9cerC3zNJvprkPy/5+TVJ7lj4\n9y8sXAMAAAAT2TDBNQcW/t6UZJjkiSU/vy7Jxxb+fWeSbUl2rMnqAAAAmHqThOmGNFt59yX5Upot\nvYudnWTvoq9/kOScNVkdAAAAU2+SMD2a5NI0sfnmJLPLXDNY8vXo5S0LAACAvphZwbVPJ/lckv+U\nZG7R9x9NsnPR1+csfO84P7tjx+i7+/atYokAAAC8Anw3yfmr+cVxYXpmkiNJnkqyJclbk/zPJdfc\nnuSmJH+V5MqFa3+sQL+7b19GI4NUXtl2796d3bt3Vy8DXjb/LzMt/L/MNPD/MdNiMBj87Gp/d1yY\nvibNwUYbFv58PMkXk7xr4ee3pjmR95okDyZ5LsmNq10MAAAA/TMuTO9Lcvky3791ydc3rc1yAAAA\n6JtJDj8CFszOzlYvAdaE/5eZFv5fZhr4/xh+/DTd9TTyjCkAAMB0GgwGySob08QUAACAUsIUAACA\nUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIU\nAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACA\nUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIU\nAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACA\nUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIU\nAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACA\nUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIU\nAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACAUsIUAACA\nUu2G6WjU6u0AAADoPmEKAABAqXbD9OjRVm8HAABA9wlTAAAASglTAAAASglTAAAASglTAAAASglT\nAAAASglTAAAASglTAAAASglTAAAASglTAAAASglTAAAASglTAAAASglTAAAASglTAAAASglTAAAA\nSglTAAAASglTAAAASglTAAAASglTAAAASrUbpvPzrd4OAACA7jMxBQAAoJQwBQAAoJQwBQAAoJQw\nBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAA\noJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoJQwBQAAoFS7YTo/3+rtAAAA6D4T\nUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAA\nAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEoJUwAAAEqNC9OdSb6U5N+T3J/k\nN5e5ZjbJ00nuXvjzvhN+mjAFAABgiZkxPz+c5L1J7kmyNcnXk3whybeWXPflJNeNvZswBQAAYIlx\nE9PH0kRpkuxPE6RnLXPdYKK7CVMAAACWWMkzpucluSzJnUu+P0ryxiT3JrkjycUn/IT5+ZWtDgAA\ngKk3bivvi7Ym+dsk70kzOV3srjTPoh5IcnWS25JcsOynmJgCAACwxCRhujHJp5N8Ik10LvXson9/\nPsmfJNme5ImlF+6em0t2706SzM7OZnZ2dkWLBQAAoBvm5uYyNze3Jp817tnQQZKPJXk8zSFIy9mR\n5IdptvRekeSv02z7XWo0uvnm5AMfWN1KAQAA6KzBYJBMev7QEuMmpm9KckOSb6R5FUyS/G6SXQv/\nvjXJ25O8O8mRNNt5rz/hp9nKCwAAwBLjwvRfMv6ApD9e+DOeMAUAAGCJlZzK+/IJUwAAAJYQpgAA\nAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQS\npgAAAJQSpgAAAJQSpgAAAJQSpgAAAJRqN0zn51u9HQAAAN1nYgoAAEApYQoAAEApYQoAAEApYQoA\nAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEAp\nYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAEApYQoAAECpdsN0fr7V2wEAANB9JqYA\nAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACU\nEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYA\nAACUajdME3EKAADAcdoN0+FQmAIAAHCcdsN0wwZhCgAAwHGEKQAAAKWEKQAAAKWEKQAAAKWEKQAA\nAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKXaD9P5+VZvCQAAQLe1H6ajUau3\nBAAAoNts5QUAAKCUMAUAAKCUMAUAAKCUMAUAAKCUMAUAAKCUMAUAAKCU95gCAABQqt0wHQ5NTAEA\nADiOrbwAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACU\nEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYAAACUEqYA\nAACUaj9M5+dbvSUAAADd1m6YDocmpgAAABzHVl4AAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABK\nCVMAAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABKCVMA\nAABKCVMAAABKCVMAAABKCVMAAABKCVMAAABKtR+m8/Ot3hIAAIBuazdMh0MTUwAAAI5jKy8AAACl\nhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkA\nAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClhCkAAAClxoXpziRfSvLvSe5P\n8psnuO5DSfYkuTfJZSe+mzAFAADgeDNjfn44yXuT3JNka5KvJ/lCkm8tuuaaJOcneW2SX0jykSRX\nLvtpGzYk8/Mvb8UAAABMlXET08fSRGmS7E8TpGctuea6JB9b+PedSbYl2bHspw2HJqYAAAAcZyXP\nmJ6XZpvunUu+f3aSvYu+/kGSc5a/m628AAAAHG/SMN2a5G+TvCfN5HSpwZKvR8vfTZgCAABwvHHP\nmCbJxiSfTvKJJLct8/NH0xyS9KJzFr73Y3Z/6lPJAw8ku3dndnY2s7OzK1wuAAAAXTA3N5e5ubk1\n+aylk87lfv6xJI+nOQRpOdckuWnh7yuT3JLlDz8ajT7/+eSWW5J/+IdVLhcAAIAuGgwGyfjGXNa4\niembktyQ5BtJ7l743u8m2bXw71uT3JEmSh9M8lySG0/4abbyAgAAsMS4MP2XTPYc6k0T3U2YAgAA\nsMRKTuVdg7sJUwAAAI4nTAEAACglTAEAACglTAEAACglTAEAACglTAEAACglTAEAACglTAEAACgl\nTAEAACglTAEAACglTAEAACglTAEAACglTAEAACjVfpjOz7d6SwAAALrNxBQAAIBS7YbpcChMAQAA\nOI6JKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWE\nKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKWEKQAAAKXaDdPBoPl7NGr1\ntgAAAHRXu2GaNFPT+fnWbwsAAEA31YSp7bwAAAAsaD9Mh0NhCgAAwDEmpgAAAJQSpgAAAJQSpgAA\nAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQS\npgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJQSpgAAAJSqCdP5+dZvCwAAQDeZmAIAAFCq/TAd\nDoUpAAAAx5iYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqY\nAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAAUEqYAgAA\nUKomTOfnW78tAAAA3WRiCgAAQKn2w3Q4FKYAAAAcY2IKAABAKWEKAABAKWEKAABAKWEKAALine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f6e8f2af978>"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(lKs[-1])\n",
"print(kKs[-1])\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.00014299687477634373\n",
"0.0612771680782\n"
]
}
],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# pos,vel filter\n",
"\n",
"%matplotlib inline\n",
"from numpy.random import randn\n",
"import numpy as np\n",
"from filterpy.kalman import KalmanFilter\n",
"from filterpy.leastsq import LeastSquaresFilter\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.pylab as pylab\n",
"\n",
"pylab.rcParams['figure.figsize'] = (16.0, 16.0)\n",
"\n",
"lsq = LeastSquaresFilter(dt=1, order=2, noise_variance = 5)\n",
"\n",
"f = KalmanFilter(dim_x=2, dim_z=1, dim_u=0)\n",
"f.P *= 500\n",
"f.F = np.array([[1., 1.],\n",
" [0., 1.]])\n",
"f.H = np.array([[1., 0.]])\n",
"f.Q *= .001\n",
"f.R *= 5\n",
"\n",
"kxs = []\n",
"lxs = []\n",
"kKs = []\n",
"lKs = []\n",
"zs = []\n",
"\n",
"for i in range(100):\n",
" z = i + randn()*5\n",
" zs.append(z)\n",
"\n",
" lsq(z)\n",
" f.update(z)\n",
" \n",
" kxs.append(f.x[0,0])\n",
" lxs.append(lsq.x)\n",
" \n",
" kKs.append(f.K[0,0])\n",
" lKs.append(lsq.K2)\n",
"\n",
" f.predict(u=1)\n",
" \n",
" \n",
"plt.figure()\n",
"plt.plot (kxs, c='b')\n",
"plt.plot (lxs, c='g')\n",
"plt.plot (zs, c='r')\n",
"\n",
"plt.figure()\n",
"plt.plot (kKs, c='b')\n",
"plt.plot (lKs, c='r')\n",
" \n",
"plt.show()\n",
"\n",
"#print(f.K)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f6e8f947518>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f6e8f739710>"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[[ 0.15538196]\n",
" [ 0.01299707]]\n"
]
}
],
"prompt_number": 38
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#testing a constant K gain filter implementation\n",
"\n",
"from numpy import dot\n",
"class kf(object):\n",
" \n",
" def __init__ (self):\n",
" self.H = 1\n",
" self.x = 0\n",
" self.y = 0\n",
" self.F = 1\n",
" self.B = 0\n",
" self.K = 1\n",
" \n",
" \n",
" def update(self, Z):\n",
" self.y = Z - dot(self.H, self.x)\n",
" \n",
" # x = x + Ky\n",
" # predict new x with residual scaled by the kalman gain\n",
" self.x = self.x + dot(self.K, self.y)\n",
"\n",
"\n",
" def predict(self, u=0):\n",
" # x = Fx + Bu\n",
" self._x = dot(self.F, self.x) + dot(self.B, u) \n",
" \n",
" \n",
"k = kf()\n",
"k.x = np.array([[1., 0.]]).T\n",
"k.F = np.array([[1., 1.],\n",
" [0., 1.]])\n",
"k.H = np.array([[1., 0.]])\n",
"k.K = np.array([[0.15538196, 0.01299707]]).T\n",
"lsq = LeastSquaresFilter(dt=1, order=2, noise_variance = 5)\n",
"\n",
"\n",
"kxs = []\n",
"lxs = []\n",
"zs = []\n",
"for i in range(1,100):\n",
" z = i + randn()*5\n",
" zs.append(z)\n",
"\n",
" lsq(z)\n",
" k.predict()\n",
" k.update(z)\n",
" \n",
" kxs.append(k.x[0,0])\n",
" lxs.append(lsq.x)\n",
" \n",
"plt.figure()\n",
"plt.plot (kxs, c='b')\n",
"plt.plot (lxs, c='g')\n",
"plt.plot (zs, c='r')\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f6e8f734f28>"
]
}
],
"prompt_number": 49
}
],
"metadata": {}