{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Experiment 4d - Filters - Buterworth filter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unlike the filters seen before, Butter is not a windowed filter. It has both a and b constants. It is very popular and has very good frequency response as follows" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "import os, sys\n", "nb_dir = os.path.split(os.getcwd())[0]\n", "if nb_dir not in sys.path:\n", " sys.path.append(nb_dir)\n", " \n", "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from directdemod import filters, constants\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from scipy import signal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Low pass response" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "3dB point: 20000.0 Hz\n" ] } ], "source": [ "Fs = 2048000\n", "\n", "bh = filters.butter(Fs, 20000, typeFlt = constants.FLT_LP)\n", "\n", "plt.plot(bh.getB)\n", "\n", "w, h = signal.freqz(bh.getB, bh.getA)\n", "\n", "\n", "w *= Fs/(2*np.pi) \n", "\n", "plt.clf() \n", "fig = plt.figure()\n", "plt.title('Digital filter frequency response')\n", "ax1 = fig.add_subplot(111)\n", "\n", "plt.plot(w, 20 * np.log10(abs(h)), 'b')\n", "plt.ylabel('Amplitude [dB]', color='b')\n", "plt.xlabel('Frequency [Hz]')\n", "\n", "ax2 = ax1.twinx()\n", "angles = np.unwrap(np.angle(h))\n", "plt.plot(w, angles, 'g')\n", "plt.ylabel('Angle (radians)', color='g')\n", "plt.grid()\n", "plt.axis('tight')\n", "plt.show()\n", "\n", "hDB = 20 * np.log10(abs(h))\n", "print(\"3dB point:\", w[hDB < (hDB[0]-3)][0], \"Hz\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### High pass response" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Fs = 2048000\n", "\n", "bh = filters.butter(Fs, 200000, typeFlt = constants.FLT_HP)\n", "\n", "plt.plot(bh.getB)\n", "\n", "w, h = signal.freqz(bh.getB, bh.getA)\n", "\n", "\n", "w *= Fs/(2*np.pi) \n", "\n", "plt.clf() \n", "fig = plt.figure()\n", "plt.title('Digital filter frequency response')\n", "ax1 = fig.add_subplot(111)\n", "\n", "plt.plot(w, 20 * np.log10(abs(h)), 'b')\n", "plt.ylabel('Amplitude [dB]', color='b')\n", "plt.xlabel('Frequency [Hz]')\n", "\n", "ax2 = ax1.twinx()\n", "angles = np.unwrap(np.angle(h))\n", "plt.plot(w, angles, 'g')\n", "plt.ylabel('Angle (radians)', color='g')\n", "plt.grid()\n", "plt.axis('tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Band pass response" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Fs = 2048000\n", "\n", "bh = filters.butter(Fs, 50000, 100000, typeFlt = constants.FLT_BP)\n", "\n", "plt.plot(bh.getB)\n", "\n", "w, h = signal.freqz(bh.getB, bh.getA)\n", "\n", "\n", "w *= Fs/(2*np.pi) \n", "\n", "plt.clf() \n", "fig = plt.figure()\n", "plt.title('Digital filter frequency response')\n", "ax1 = fig.add_subplot(111)\n", "\n", "plt.plot(w, 20 * np.log10(abs(h)), 'b')\n", "plt.ylabel('Amplitude [dB]', color='b')\n", "plt.xlabel('Frequency [Hz]')\n", "\n", "ax2 = ax1.twinx()\n", "angles = np.unwrap(np.angle(h))\n", "plt.plot(w, angles, 'g')\n", "plt.ylabel('Angle (radians)', color='g')\n", "plt.grid()\n", "plt.axis('tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Band pass response" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Fs = 2048000\n", "\n", "bh = filters.butter(Fs, 50000, 100000, typeFlt = constants.FLT_BS)\n", "\n", "plt.plot(bh.getB)\n", "\n", "w, h = signal.freqz(bh.getB, bh.getA)\n", "\n", "\n", "w *= Fs/(2*np.pi) \n", "\n", "plt.clf() \n", "fig = plt.figure()\n", "plt.title('Digital filter frequency response')\n", "ax1 = fig.add_subplot(111)\n", "\n", "plt.plot(w, 20 * np.log10(abs(h)), 'b')\n", "plt.ylabel('Amplitude [dB]', color='b')\n", "plt.xlabel('Frequency [Hz]')\n", "\n", "ax2 = ax1.twinx()\n", "angles = np.unwrap(np.angle(h))\n", "plt.plot(w, angles, 'g')\n", "plt.ylabel('Angle (radians)', color='g')\n", "plt.grid()\n", "plt.axis('tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Observations and conclusions\n", "\n", "The butter filter is very accurate and has constant gain for pass bands" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }