libfir/python/filter_analysis.ipynb

307 lines
191 KiB
Plaintext
Raw Permalink Normal View History

2014-07-10 17:46:22 +01:00
{
"metadata": {
"name": "",
2014-09-09 09:59:16 +01:00
"signature": "sha256:05ffaa60d7b0775a690325e7dd783d1e09e0b0e286dd523bfcba985a0ea7cfe0"
2014-07-10 17:46:22 +01:00
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import fir\n",
"\n",
2014-09-09 09:59:16 +01:00
"sample_rate = 20 # Hz\n",
"corner = 1.6 # Hz\n",
2014-07-10 17:46:22 +01:00
"gain = 1.0\n",
"npoints = 501\n",
"\n",
"nyquist_freq = sample_rate / 2\n",
"\n",
2014-09-09 09:59:16 +01:00
"fi = fir.BlackmanLowpass(npoints, corner / sample_rate, gain)\n",
"\n",
"# this code will read points from an ASCII file, one point per line\n",
"#points = []\n",
"#f = open(\"div5.txt\", \"r\")\n",
"#for line in f:\n",
"# points.append(float(line))\n",
"#npoints = len(points)\n",
"#fi = fir.Filter(points)"
2014-07-10 17:46:22 +01:00
],
"language": "python",
"metadata": {},
"outputs": [],
2014-09-09 09:59:16 +01:00
"prompt_number": 106
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pylab\n",
"\n",
"bode_points = 997 # non-multiple number avoids numeric effects/beating\n",
"respfunc = pylab.vectorize(lambda f: fi.response(f/sample_rate))"
],
"language": "python",
"metadata": {},
"outputs": [],
2014-09-09 09:59:16 +01:00
"prompt_number": 107
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Linear Bode plot"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"freq = pylab.linspace(0, nyquist_freq, bode_points)\n",
"resp = respfunc(freq)\n",
"\n",
"fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(10,10), dpi=100)\n",
"\n",
"axes[0].plot(freq, abs(resp), 'r')\n",
"axes[0].set_xlabel('Frequency (Hz)')\n",
"axes[0].set_ylabel('Magnitude')\n",
"\n",
"axes[1].plot(freq, pylab.angle(resp), 'r')\n",
"axes[1].set_xlabel('Frequency (Hz)')\n",
"axes[1].set_ylabel('Phase (radians)')\n",
"axes[1].set_ylim([-pylab.pi,pylab.pi])\n",
"axes[1].set_yticks(pylab.linspace(-pylab.pi, pylab.pi, 9))\n",
"axes[1].set_yticklabels(['-\u03c0', '-\u00be\u03c0', '-\u00bd\u03c0', '-\u00bc\u03c0', '0', '\u00bc\u03c0', '\u00bd\u03c0', '\u00be\u03c0', '\u03c0'])\n",
"\n",
"None"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
2014-09-09 09:59:16 +01:00
"png": "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\nxogFQcuaQgghxGTkiLNHAm8A
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.figure.Figure at 0x7fec43a14d30>"
2014-07-10 17:46:22 +01:00
]
}
],
2014-09-09 09:59:16 +01:00
"prompt_number": 108
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Group delay"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ph = pylab.angle(resp)\n",
"\n",
"# heuristic \"de-modulo\" operation\n",
"for i in range(1,ph.size):\n",
" phdiff = ph[i - 1] - ph[i]\n",
" if(phdiff > pylab.pi):\n",
" ph[i:ph.size] += pylab.pi\n",
" elif(phdiff < pylab.pi):\n",
" ph[i:ph.size] -= pylab.pi\n",
"\n",
"ph /= -freq * 2 * pylab.pi\n",
"\n",
"plt.plot(freq, ph)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
2014-09-09 09:59:16 +01:00
"prompt_number": 109,
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"[<matplotlib.lines.Line2D at 0x7fec4383ba90>]"
2014-07-10 17:46:22 +01:00
]
},
{
"metadata": {},
"output_type": "display_data",
2014-09-09 09:59:16 +01:00
"png": "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\nppe3AmzrzxOpWnzqEA5t9EX9
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.figure.Figure at 0x7fec43bff668>"
2014-07-10 17:46:22 +01:00
]
}
],
2014-09-09 09:59:16 +01:00
"prompt_number": 109
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Logarithmic Bode plot"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"freq = pylab.logspace(-1, pylab.log10(nyquist_freq), bode_points)\n",
"resp = respfunc(freq)\n",
"\n",
"fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(10,10), dpi=100)\n",
"\n",
2014-09-09 09:59:16 +01:00
"axes[0].plot(freq, 20 * pylab.log10(abs(resp)), 'r')\n",
2014-07-10 17:46:22 +01:00
"axes[0].set_xlabel('Frequency (Hz)')\n",
"axes[0].set_xscale('log')\n",
"axes[0].set_ylabel('Magnitude (dB)')\n",
"\n",
"axes[1].plot(freq, pylab.angle(resp), 'r')\n",
"axes[1].set_xlabel('Frequency (Hz)')\n",
"axes[1].set_xscale('log')\n",
"axes[1].set_ylabel('Phase (radians)')\n",
"axes[1].set_ylim([-pylab.pi,pylab.pi])\n",
"axes[1].set_yticks(pylab.linspace(-pylab.pi, pylab.pi, 9))\n",
"axes[1].set_yticklabels(['-\u03c0', '-\u00be\u03c0', '-\u00bd\u03c0', '-\u00bc\u03c0', '0', '\u00bc\u03c0', '\u00bd\u03c0', '\u00be\u03c0', '\u03c0'])\n",
"\n",
"None"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
2014-09-09 09:59:16 +01:00
"png": "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\ntZUkyP0YuBTYDXO3h9uA75TZ
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.figure.Figure at 0x7fec4382dcc0>"
2014-07-10 17:46:22 +01:00
]
}
],
2014-09-09 09:59:16 +01:00
"prompt_number": 110
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Impulse response"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fi2 = fir.Filter(fi)\n",
"acausal = int(npoints / 2)\n",
"steady = 10\n",
"x = pylab.hstack([pylab.zeros(npoints + steady), 1, pylab.zeros(npoints + steady)])\n",
"t = pylab.linspace(0, x.size/sample_rate, x.size)\n",
"\n",
"y = np.array(x.size, dtype=np.double)\n",
"y.resize(x.size)\n",
"for i in range(0, y.size):\n",
" y[i] = fi2.f(x[i])\n",
"\n",
"fig, axes = plt.subplots(figsize=(10,6), dpi=100)\n",
"axes.plot(t, x)\n",
"axes.plot(t - acausal/sample_rate, y, 'r')\n",
"axes.set_xlabel('Time (s)')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
2014-09-09 09:59:16 +01:00
"prompt_number": 111,
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.text.Text at 0x7fec436b6860>"
2014-07-10 17:46:22 +01:00
]
},
{
"metadata": {},
"output_type": "display_data",
2014-09-09 09:59:16 +01:00
"png": "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\nFq4WYCrwCOGOxVsIYevS8v7p
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.figure.Figure at 0x7fec438d1cc0>"
2014-07-10 17:46:22 +01:00
]
}
],
2014-09-09 09:59:16 +01:00
"prompt_number": 111
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Step response"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fi2 = fir.Filter(fi)\n",
"acausal = int(npoints / 2)\n",
"steady = 10\n",
"x = pylab.hstack([pylab.zeros(npoints + steady), 1, pylab.ones(npoints + steady)])\n",
"t = pylab.linspace(0, x.size/sample_rate, x.size)\n",
"\n",
"y = np.array(x.size, dtype=np.double)\n",
"y.resize(x.size)\n",
"for i in range(0, y.size):\n",
" y[i] = fi2.f(x[i])\n",
"\n",
"fig, axes = plt.subplots(figsize=(10,6), dpi=100)\n",
"axes.plot(t, x)\n",
"axes.plot(t - acausal/sample_rate, y, 'r')\n",
"axes.set_xlabel('Time (s)')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
2014-09-09 09:59:16 +01:00
"prompt_number": 112,
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.text.Text at 0x7fec437bf240>"
2014-07-10 17:46:22 +01:00
]
},
{
"metadata": {},
"output_type": "display_data",
2014-09-09 09:59:16 +01:00
"png": "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\nE3i7aps0TTtTLJOknu/RR+GN
2014-07-10 17:46:22 +01:00
"text": [
2014-09-09 09:59:16 +01:00
"<matplotlib.figure.Figure at 0x7fec439d7c88>"
2014-07-10 17:46:22 +01:00
]
}
],
2014-09-09 09:59:16 +01:00
"prompt_number": 112
2014-07-10 17:46:22 +01:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
2014-09-09 09:59:16 +01:00
"prompt_number": 112
2014-07-10 17:46:22 +01:00
}
],
"metadata": {}
}
]
}