{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# SciPy analog filter design\n", "Last update: 27 Aug 2022 \n", " \n", "This notebook describes the use of filter functions in the [SciPy](https://docs.scipy.org/doc/scipy/reference/signal.html) library which can be used to design analog filters. Filters are one of the basic building blocks of signal processing. In general terms, filters used for signal processing can be divided into two groups, analog and digital filters. Analog filters, the topic of this notebook, are filters which can be described with linear differential equations and implemented in circuits which operate on continuously varying signals. A digital filter is a system that performs operations on a sampled, discrete-time signal with numerical operations.\n", "\n", "The first part of this notebook uses SciPy functions to calculate analog filter polynomials based on the classical [Butterworth](https://en.wikipedia.org/wiki/Butterworth_filter), [Chebyshev](https://en.wikipedia.org/wiki/Chebyshev_filter), [Elliptic](https://en.wikipedia.org/wiki/Elliptic_filter) and [Bessel](https://en.wikipedia.org/wiki/Bessel_filter) filters. The last section of this notebook walks through a Butterworth filter design and Cauer synthesis of an LC ladder type filter. \n", "\n", "The Analog filter design can be approached in two ways, by synthesis or by cookbook methods. The SciPy filter design functions fall into the cookbook method of design and stop at circuit realization. SciPy has filter functions that generate the coefficients of the polynomials for [Butterworth](https://en.wikipedia.org/wiki/Butterworth_filter), [Chebyshev](https://en.wikipedia.org/wiki/Chebyshev_filter), [Elliptic](https://en.wikipedia.org/wiki/Elliptic_filter) and [Bessel](https://en.wikipedia.org/wiki/Bessel_filter) type filters. And for each type filter, lowpass, highpass, bandpass and bandstop can be specified. SciPy also has filter functions that can evaluate the frequency and transient response of the filters. For the Butterworth, Chebyshev and elliptic type filters there are functions which can estimate the filter order required to meet passband or stopband ripple and attenuation specifications. However there is no Bessel order specification function included in the SciPy libraries.\n", "\n", "There are several important filter types such as [Gaussian](https://en.wikipedia.org/wiki/Gaussian_filter), [Optimum \"L\" filter](https://en.wikipedia.org/wiki/Optimum_%22L%22_filter) and [Linkwitz–Riley filter](https://en.wikipedia.org/wiki/Linkwitz%E2%80%93Riley_filter) that are not included in the SciPy signal processing module.\n", "\n", "The SciPy filter functions provide the electrical engineer with the polynomial coefficients for the filter transfer function. Taking the filter polynomial coefficients and designing an analog filter circuit is not within the scope of what SciPy provides. At this point in the filter design process, the engineer can implement some types of filter networks by using design tables. \n", "\n", "Example calculations are provided below for synthesis of a low pass filter. In the example, I walk through the calculations for filter [synthesis](https://en.wikipedia.org/wiki/Network_synthesis#cite_ref-31) directly from the transfer function of a Butterworth lowpass filter. Butterworth lowpass filters are all pole filters with unity numerator in the transfer function which allows the driving point impedance to easly be found and the filter synthesis is accomplished by expanding the $Z_{11}$ with partial fraction expansion.\n", "\n", "**Notes on filter synthesis** \n", "Currently when designs require a ladder prototype, a designer completes the task with the aid of tables. The complex numerical methods involved in generating tables are far from general. Transfer functions with zeros require very complex and filter specific algorithms. The most common approach, Cauer's algorithm, takes advantage of a particular filter's properties. Each filter approximation technique needs its own specific algorithm [1]. For transfer functions with zeros, Cauer's approach produces only one circuit implementation, where many are possible. For transfer functions without zeros, such as Butterworth, Chebyshev and Bessel-Thompson type filters, determining element values involves the classical continued fraction expansion of the input impedance.\n", "\n", "Reference \n", "1. R. D. Koller and B. M. Wilamowski, A ladder prototype synthesis algorithm, Proceedings of the 35th Midwest Symposium on Circuits and Systems, 1992\n", "2. Electronic Filter Design Handbook, 3rd Edition, Arthur B. Williams, Fred J. Taylor, McGraw Hill, 1995\n", "\n", "Related information DSP references: \n", "- https://pysdr.org/index.html \n", "- https://medium.datadriveninvestor.com/designing-filters-made-easy-using-python-9c44d9064f94" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy import signal\n", "from sympy import *\n", "import matplotlib.pyplot as plt\n", "init_printing()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lowpass filter specification\n", "The SciPy functions used below can be used to find the order of the filter required based on the passband frequency, stopband frequency and allowable ripple or attenuation.\n", "\n", "SciPy has four functions that return the order of the filter satisfying the users filter specifications, which are in the [buttord](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.buttord.html), [cheb1ord](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.cheb1ord.html#scipy.signal.cheb1ord), [cheb2ord](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.cheb2ord.html#scipy.signal.cheb2ord) and [ellipord](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.ellipord.html#scipy.signal.ellipord). Depending on the type of filter wanted, uncomment the particular function." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order = 7, frequency = 31426.58 rad/sec\n" ] } ], "source": [ "fp = 5e3 # passband edge frequency, Hz\n", "gpass = 3 # The maximum loss in the passband (dB)\n", "\n", "fs = 10e3 # stopband edge frequency, Hz\n", "gstop = 40 # The minimum attenuation in the stopband (dB)\n", "\n", "# uncomment filter type to use\n", "N, Wn = signal.buttord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "#N, Wn = signal.cheb1ord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "#N, Wn = signal.cheb2ord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "#N, Wn = signal.ellipord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "\n", "print('order = {:.0f}, frequency = {:.2f} rad/sec'.format(N,Wn))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Find filter coefficients\n", "Uncomment the line depending on the type of filter desired. The functions return the numerator (b) and denominator (a), polynomials." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "system_lp = signal.butter(N, Wn, btype='lowpass', output='ba', analog=True)\n", "#system_lp = signal.cheby1(N, gpass, Wn, btype='lowpass', output='ba', analog=True)\n", "#system_lp = signal.cheby2(N, gstop, Wn, btype='lowpass', output='ba', analog=True)\n", "#system_lp = signal.ellip(N, gpass, gstop, Wn, btype='lowpass', output='ba', analog=True)\n", "#system_lp = signal.bessel(N, Wn, btype='lowpass', output='ba', analog=True, norm='mag')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot filter specification limits\n", "The grey areas are the keep out areas specified above." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "b, a = system_lp\n", "w, h = signal.freqs(b, a, 2000) # Compute frequency response of analog filter\n", "plt.semilogx(w/(2*np.pi), 20 * np.log10(abs(h)))\n", "plt.title('Filter frequency response and limits')\n", "plt.xlabel('Frequency, Hz')\n", "plt.ylabel('Amplitude [dB]')\n", "plt.grid(which='both', axis='both')\n", "\n", "plt.fill([0, fp, fp, 0], [-gpass, -gpass, -100, -100], '0.9', lw=0) # passband\n", "plt.fill([fs, fs, 100e9, 100e9], [-gstop, 100, 100, -gstop], '0.9', lw=0) # stopband\n", "plt.xlim((w[0]/(2*np.pi),100e3))\n", "plt.ylim((-100,10))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot poles and zeros" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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qKOO4uGHH37/9bWvfY0DDzyQ8ePHr3PbiOC9995bZzszq2NNTTBnDsyYkb13vsfTiwodvZbORh4APk52VvIX4NWIeDc1aeODedd3Js3/HhHvSloBbJfi95TstnSb5zrF9+sijynAFIBBgwbR3NzcYf3WW2/N66+/XmbLtf361xsze/amXHLJavbffw13392P004bwJtvvsWxx7677h0Aa9as6fJ4S5Ys4dxzz2XRokWsWrWKH/3oR/zmN7/h7bff5rOf/SzTp0/nb3/7G0cffTQHHnggLS0t/OpXv+Lee+/le9/7HhHB+PHjmTVrFmvWrOHUU0/loYceQhInnXQSp5122lrHXL169Vo/k2pYuXJlLsfpi+q17+538QY+9BAjzj2XJ2fO5NW99mLgNtsw4qij3l/udRFR+AsYSDbPyIFkZyft8SHAY+nzE8DgknV/ISs6lwInlcSvIJtj/ljgJyXxLwL/ta5c9tlnn+jsySefXCvWlT32iLj99o6x22/P4pV67bXXysbffvvt2GeffeKaa66JiIgFCxbEV7/61XjvvfdizZo1cfjhh8cdd9wRzz77bEiKu+++OyIinn/++RgyZEgsXbo03nnnnWhsbIx58+bF/fffH4cccsj7+1++fHnZ465P/zdEU1NTLsfpi+q17+53H3DBBeX/0brggvXaDXB/VPDvfZ8YvRYRr5JNcDUWGCip/QxsMNl0wZCdqQwBSOu3BpaVxjtt01W8qhYvhgMO6Bg74IAsvqFmzJjBHnvswfHHHw/AwoULWbhwIXvttRd77703Tz31FEuWLAFg1113ZezYsQC0tLTQ0NDADjvswMYbb8wXvvAF7rzzTnbbbTeeeeYZTj/9dG699Va22mqrDU/SzD5czjxz7Xs4jY1ZvAqKHL22g6SB6fNmwCHAYrIznmNSs0nATenzzWmZtP72VF1vBo5Po9uGAcOB+4AWYHgaDbcJ2WCDm6vdr913h7vu6hi7664sviGam5u54YYbuOSSS96PRQTTpk17/15Pa2srkydn4y5KH5seXUzUt8022/DII4/Q0NDApZdeyle+8pUNS9LMbB2KPNPZEWiS9ChZgVgUEb8DzgLOkNRKdvnsitT+CmC7FD8DOBsgIp4A5gJPArcCp0bEmsjuC50GLCArZnNT26qaPh0mT87uw73zTvY+eXIW76nly5dzyimn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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "k = 30274733497480892041442126462976.0\n" ] } ], "source": [ "z, p, k = signal.tf2zpk(system_lp[0],system_lp[1])\n", "\n", "plt.plot(np.real(z), np.imag(z), 'ob', markerfacecolor='none')\n", "plt.plot(np.real(p), np.imag(p), 'xr')\n", "plt.legend(['Zeros', 'Poles'], loc=2)\n", "plt.title('Pole / Zero Plot')\n", "plt.xlabel('Real')\n", "plt.ylabel('Imaginary')\n", "plt.grid()\n", "plt.show()\n", "print('k = {:.1f}'.format(k))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Bode magnitude and phase data\n", "Use the SciPy function [bode](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html) to plot the magnitude and phase of the filter." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#x = np.linspace(10*2*np.pi, 10e3*2*np.pi, 1000, endpoint=True)\n", "w, mag, phase = signal.bode(system_lp, w=w)\n", "\n", "fig, ax1 = plt.subplots()\n", "ax1.set_ylabel('magnitude, dB')\n", "ax1.set_xlabel('frequency, Hz')\n", "\n", "plt.semilogx(w/(2*np.pi), mag,'-k') # Bode magnitude plot\n", "\n", "ax1.tick_params(axis='y')\n", "plt.grid(which='both', axis='both')\n", "\n", "# instantiate a second y-axes that shares the same x-axis\n", "ax2 = ax1.twinx()\n", "color = 'tab:blue'\n", "\n", "plt.semilogx(w/(2*np.pi), phase,':',color=color) # Bode phase plot\n", "\n", "ax2.set_ylabel('phase, deg',color=color)\n", "ax2.tick_params(axis='y', labelcolor=color)\n", "#ax2.set_ylim((-5,25))\n", "\n", "plt.title('Bode plot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the impulse and step response\n", "Use the SciPy functions [impulse2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.impulse2.html) and [step2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.step2.html) to plot the impulse and step response of the system." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# figsize() function to adjust the size\n", "plt.subplots(figsize=(15, 5))\n", "\n", "# using subplot function and creating\n", "# plot one\n", "plt.subplot(1, 2, 1)\n", "\n", "# impulse response\n", "t, y = signal.impulse2(system_lp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Impulse response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# using subplot function and creating plot two\n", "plt.subplot(1, 2, 2)\n", "\n", "t, y = signal.step2(system_lp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Step response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# space between the plots\n", "plt.tight_layout(4)\n", "\n", "# show plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot the group delay.\n", "The following python code calculates and plots [group delay](https://en.wikipedia.org/wiki/Group_delay_and_phase_delay#). Frequency components of a signal are delayed when passed through a circuit and the signal delay will be different for the various frequencies unless the circuit has the property of being linear phase. The delay variation means that signals consisting of multiple frequency components will suffer distortion because these components are not delayed by the same amount of time at the output of the device.\n", "\n", "Group delay: $\\tau _{g}(\\omega )=-\\frac {d\\phi (\\omega )}{d\\omega }$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('Filter group delay')\n", "plt.semilogx(w/(2*np.pi), -np.gradient(phase)/np.gradient(w)/1e-3,'-',label='group delay')\n", "#plt.semilogx(w/(2*np.pi), -np.gradient(phase)/w/1e-3,'-',label='phase delay')\n", "plt.ylabel('Group delay, msec')\n", "plt.xlabel('Frequency, Hz')\n", "plt.ylim((0,20))\n", "plt.legend()\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Highpass filter specification\n", "Using the same filter order selection function above, set the passband frequency limit above the stopband frequency limit." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order = 5, frequency = 62831.85 rad/sec\n" ] } ], "source": [ "fp = 10e3 # passband edge frequency, Hz\n", "gpass = 3 # The maximum loss in the passband (dB)\n", "\n", "fs = 5e3 # stopband edge frequency, Hz\n", "gstop = 40 # The minimum attenuation in the stopband (dB)\n", "\n", "# uncomment filter type to use\n", "#N, Wn = signal.buttord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "N, Wn = signal.cheb1ord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "#N, Wn = signal.cheb2ord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "#N, Wn = signal.ellipord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "\n", "print('order = {:.0f}, frequency = {:.2f} rad/sec'.format(N,Wn))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Find filter coefficients\n", "Uncomment the line depending on the type of filter desired. The functions return the numerator (b) and denominator (a), polynomials." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "#system_hp = signal.butter(N, Wn, btype='highpass', output='ba', analog=True)\n", "system_hp = signal.cheby1(N, gpass, Wn, btype='highpass', output='ba', analog=True)\n", "#system_hp = signal.cheby2(N, gstop, Wn, btype='highpass', output='ba', analog=True)\n", "#system_hp = signal.ellip(N, gpass, gstop, Wn, btype='highpass', output='ba', analog=True)\n", "#system_hp = signal.bessel(N, Wn, btype='highpass', output='ba', analog=True, norm='mag')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot filter specification limits\n", "The grey areas are the keep out areas specified above." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "b, a = system_hp\n", "w, h = signal.freqs(b, a, 2000) # Compute frequency response of analog filter\n", "plt.semilogx(w/(2*np.pi), 20 * np.log10(abs(h)))\n", "plt.title('Filter frequency response and limits')\n", "plt.xlabel('Frequency, Hz')\n", "plt.ylabel('Amplitude [dB]')\n", "plt.grid(which='both', axis='both')\n", "\n", "plt.fill([100e9, fp, fp, 100e9], [-gpass, -gpass, -100, -100], '0.9', lw=0) # passband\n", "plt.fill([fs, fs, 0, 0], [-gstop, 100, 100, -gstop], '0.9', lw=0) # stopband\n", "plt.xlim((100,100e3))\n", "plt.ylim((-100,10))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot poles and zeros" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "z, p, k = signal.tf2zpk(system_hp[0],system_hp[1])\n", "\n", "plt.plot(np.real(z), np.imag(z), 'ob', markerfacecolor='none')\n", "plt.plot(np.real(p), np.imag(p), 'xr')\n", "plt.legend(['Zeros', 'Poles'], loc=2)\n", "plt.title('Pole / Zero Plot')\n", "plt.xlabel('Real')\n", "plt.ylabel('Imaginary')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Bode magnitude and phase data\n", "Use the SciPy function [bode](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html) to plot the magnitude and phase of the filter." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#x = np.linspace(10*2*np.pi, 10e3*2*np.pi, 1000, endpoint=True)\n", "w, mag, phase = signal.bode(system_hp, w=w)\n", "\n", "fig, ax1 = plt.subplots()\n", "ax1.set_ylabel('magnitude, dB')\n", "ax1.set_xlabel('frequency, Hz')\n", "\n", "plt.semilogx(w/(2*np.pi), mag,'-k') # Bode magnitude plot\n", "\n", "ax1.tick_params(axis='y')\n", "plt.grid(which='both', axis='both')\n", "ax1.set_xlim((110,100e3))\n", "ax1.set_ylim((-100,10))\n", "\n", "# instantiate a second y-axes that shares the same x-axis\n", "ax2 = ax1.twinx()\n", "color = 'tab:blue'\n", "\n", "plt.semilogx(w/(2*np.pi), phase,':',color=color) # Bode phase plot\n", "\n", "ax2.set_ylabel('phase, deg',color=color)\n", "ax2.tick_params(axis='y', labelcolor=color)\n", "#ax2.set_ylim((-5,25))\n", "\n", "plt.title('Bode plot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the impulse and step response\n", "Use the SciPy functions [impulse2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.impulse2.html) and [step2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.step2.html) to plot the impulse and step response of the system." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# figsize() function to adjust the size\n", "plt.subplots(figsize=(15, 5))\n", "\n", "# using subplot function and creating\n", "# plot one\n", "plt.subplot(1, 2, 1)\n", "\n", "# impulse response\n", "t, y = signal.impulse2(system_hp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Impulse response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# using subplot function and creating plot two\n", "plt.subplot(1, 2, 2)\n", "\n", "t, y = signal.step2(system_hp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Step response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# space between the plots\n", "plt.tight_layout(4)\n", "\n", "# show plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot the group delay.\n", "The following python code calculates and plots [group delay](https://en.wikipedia.org/wiki/Group_delay_and_phase_delay#). Frequency components of a signal are delayed when passed through a circuit and the signal delay will be different for the various frequencies unless the circuit has the property of being linear phase. The delay variation means that signals consisting of multiple frequency components will suffer distortion because these components are not delayed by the same amount of time at the output of the device.\n", "\n", "Group delay: $\\tau _{g}(\\omega )=-\\frac {d\\phi (\\omega )}{d\\omega }$" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEaCAYAAADQVmpMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XecXGW9+PHPd2d7Np1NhySUJEJuSAUpwoYSAlIEEQjSRIj4U9ErKEW5YkG9il4p91INCEqJ9CYQICEEgXRKCOltCaSQtn2nfH9/nDObye7MzpnZabvzfb9e89o5z/OcZ56Zk5lvnnLOEVXFGGOMSUZBthtgjDGm87IgYowxJmkWRIwxxiTNgogxxpikWRAxxhiTNAsixhhjkmZBxHQqInKAiNSKiM/dniMiV2S7XblARIaJiIpIoYeyl4nIvEy0y3RtFkRMThKR9SLS4AaM8GOQqm5U1QpVDUbZx34YjckwCyIml53hBozwY3M6X8zL/+Dj7C8iYt8pk1fsH7zpVGIN2YjIl4C7gaPcXssuN71ERG4VkY0iskVE7haRMjevSkSqReQ6EfkceCDK6/lE5E8isl1E1onI9yNf3x1Ou0VE3gbqgQNFZJCIPCciO0RktYhcGVHfgyLym4jtKhGpjtheLyI3iMjHIrJTRB4QkdIYn4XPfW/bRWQt8NVW+T1F5K8i8pmIfCoivwkPA0ap6zYR2SQie0RkkYh8xU0fICL1ItI3ouwEEdkmIkXRj5LJJxZETJegqsuBq4B33F5LLzfrv4ERwFjgYGAw8F8Ruw4A+gBDgelRqr4SONXdfzzwtShlLnb37Q5sAB4FqoFBwLnAb0XkxATezjeBU4CD3Lb/PEa5K4HTgXHARPe1Iv0NCOC873HAFCDW/NECnPfYB3gE+KeIlKrq58Ac4LyIshcBj6mqP4H3ZLooCyImlz0jIrvcxzOJ7iwigvND+5+qukNVa4DfAhdEFAsBv1DVJlVtiFLNecBtqlqtqjuB30cp86CqLlPVAE5QOha4TlUbVXUpcD9OoPHqTlXdpKo7gFuAaTHKnQf8JaLs7yLee3+c4PcjVa1T1a3A/7R67y1U9e+q+oWqBlT1T0AJMNLN/htO4MDtyUwDHk7g/ZgurENjwMak2ddU9bUO7F8JlAOLnHgCgACRQzrbVLWxnToGAZsitjdFKROZNggIB6ywDTg9Ba8i69vg1umlbRsing8FioDPIt57AdHbj4hcg9NLGQQo0APYz81+FrhbRA7E6RntVtX5Xt+M6dosiJiupPUlqbcDDcBhqvqpx31a+wwYErG9f5w6NgN9RKR7RCA5AAi/fh1OYAsbEKW+yNc4wK0zVttalw3bBDQB+7k9pJjc+Y/rgBOBZaoaEpGdOAEXVW0UkZk4w2yjsF6IiWDDWaYr2QIMEZFiAFUNAfcB/yMi/QBEZLCInJJAnTOBH7r79cL5sY1JVTcB/wZ+JyKlIjIG+DbwD7fIUuA0EekjIgOAH0Wp5nsiMkRE+gA3Ao+307ar3bK9gesj2vEZ8CrwJxHpISIFInKQiBwfpZ7uOHMn24BCEfkvnJ5IpIeAy4Azgb+39xmY/GJBxHQlbwDLgM9FZLubdh2wGnhXRPYAr7F3rN+L+3B+jD8AlgAv4fzgtjlPJcI0YBhOD+JpnDmXWW7ew8D7wHq33mgB4hE3b637+E2UMuG2veLWtxh4qlX+JUAx8DGwE3gCGBilnleAfwErcYbEGmk17KWqb+PMHy1W1fUx2mPykNhNqYzxTkROBe5W1aFpqn89cEUH54LSQkTeAB5R1fuz3RaTO6wnYkw7RKRMRE4TkUIRGQz8Aqd3kVdEZBLOEudYQ2smT6UtiIjI/iIyW0SWi8gyEfmhm95HRGaJyCr3b+8Y+1/qllklIpemq53GxCHAL3GGg5YAy9n3PJMuT0T+hjMM+KNWq86MSd9wlogMBAaq6mIR6Q4swjlR6zKcJZC/F5Hrgd6qel2rffsAC3GWRaq77wR3nb4xxpgckbaeiKp+pqqL3ec1OP+DGwychXPyEu7faGcAnwLMck8Q2wnMAqamq63GGGOSk5E5EREZhnPZhfeA/u7yw/AyxH5RdhnMvqtDqt00Y4wxOSTtJxuKSAXwJM546p6Is2fb3S1KWtRxNxGZjnvNo9LS0gkHHHBAtGIZEwqFKChIXWxOtr5E9otXNtn8RNJT/bklK5XtyIVjF69MMnm5evy64ncvXplE86KlrVy5cruqVnpqcDSqmrYHzmUXXgF+HJG2AmeuBJw16yui7DcNuCdi+x5gWrzXGzFihGbb7Nmzc6K+RPaLVzbZ/ETSU/25JSuV7ciFYxevTDJ5uXr8uuJ3L16ZRPOipQELtQO/8+lcnSXAX4HlqvrniKzngPBqq0txrsvT2ivAFBHp7a7emuKmGWOMySHp7H8eg3Pl0hNEZKn7OA3nKqgni8gq4GR3GxGZKCL3A6hzRdJf41yeegHwKzfNGGNMDknbnIiqziP63AY4F3prXX4hEfc6UNUZwIz0tM4YY0wq2FV8jTEZ5ff7qa6uprGxvSvwJ65nz54sX7486/Ulsp+Xsu2VSSSvtLQUjwubEmJBxBiTUdXV1XTv3p1hw4al9EetpqaG7t27Z72+RPbzUra9Ml7zVJUvvviCbt26eWpXIrK/ptIYk1caGxvp27dvWv5XbKITEfr27YvP54tfOEEWRIwxGWcBJPPS9ZlbEDHGmCyaM2cOp59+eofLZIsFEWOMiSIQaPeuwsZlQcQYk3d+/etfM2rUKE4++WSmTZvGrbfeCkBVVRU33ngjxx9/PHfddRcbNmzgxBNPZMyYMZx44ols3LgRgMsuu4wnnniipb6KigrA6TFMnTqVs88+m0MPPZSrrrqKUCjU5vVffvllRo0axZQpU3jqqb03pKyrq+Pyyy9n0qRJjBs3jmefbXsu9vz58zn66KMZN24cJ510EitWrADgK1/5CkuXLm0pd/LJJ/PBBx+k4NNqn63OMsZkzS+fX8bHm/ekpK5gMIjP5+PQQT34xRmHxSy3cOFCnnzySZYsWUIgEGD8+PFMmDChJX/Xrl28+eab1NTUcOGFF3LJJZdw6aWXMmPGDK6++mqeeeaZdtuxaNEiPv74Y4YOHcrUqVN56qmnOPfcc1vyGxsbufLKK3njjTfo378/V1zRcnoct9xyCyeccAIzZsxg165dHHHEEcydO3ef+keNGsXcuXMpLCzkueee48Ybb+TJJ5/kiiuu4MEHH+Qvf/kLK1eupLm5mTFjxiT6MSbMeiLGmLwyb948zjrrLMrKyujevTtnnHHGPvnnn39+y/N33nmHCy+8EICLL76YefPmxa1/woQJHHjggfh8PqZNm9Zmn08++YThw4dzyCGHICJcdNFFLXmvvvoqv//97xk7dixVVVU0NjZSXV29z/67d+/mG9/4BqNHj+aGG25g2bJlAHzjG9/ghRdewO/3M2PGjJZ2p5v1RIwxWdNejyFRXs/P0Dg34mvvXIrwCqfCwsKWYSpVpbm5uU2ZWNux0sJ1Pfnkk4wcObIlraamhkWLFrVs33TTTUyePJmnn36ajz76qGXCvby8nJNPPplnn32WmTNnMnv27HbfZ6pYT8QYk1eOPfZYnn/+eRobG6mtreXFF1+MWfboo4/mscceA+Af//gHxx57LADDhg1r+WF/9tln8fv9LfssWrSIdevWEQqFePzxx1v2CRs1ahTr1q1jzZo1ADz66KMteaeccgp33HFHS6BbsmRJmzbt3r2bwYMHt7Qp0hVXXMHVV1/NpEmT6NOnj7cPpIMsiBhj8sqkSZM488wzOfzwwznnnHOYOHEiPXv2jFr29ttv54EHHmDMmDE8/PDD3HbbbQBceeWVvPnmmxxxxBG89957+/RejjjiCK6//npGjx7N8OHDOfvss/eps7S0lHvvvZevfvWrTJkyhaFDh7bk3XTTTfj9fsaMGcPo0aO56aab2rTppz/9KTfccAPHHHMMwWBwn7wJEybQo0cPvvWtbyX9+STKhrOMMXnn2muv5eabb6a+vp7jjjuOa665BnBWV0UaNmwYb7zxRpv9+/fvz7vvvtuy/bvf/a7leVlZGY8//ni7rz916lQ++eSTNkNwZWVl3HPPPfuUrampoaqqiqqqKgCOOuooVq5c2ZL3hz/8oaXs5s2bCYVCTJkyhbq6unbbkCrWEzHG5J3p06czduxYxo8fz9e//nXGjx+f7SZ12EMPPcSRRx7JLbfcktG7TFpPxBiTdx555JG01FtVVbXPcuFMuuSSS7jkkksy/rrWEzHGGJM0CyLGmIyLt8zWpF66PnMLIsaYjCotLeWLL76wQJJB4fuJtF7NlQppmxMRkRnA6cBWVR3tpj0OhM+i6QXsUtWxUfZdD9QAQSCgqhPT1U5jTGYNGTKE6upqtm3bltJ6GxsbKS0tzXp9ieznpWx7ZRLJKy0tTcuKrXROrD8I3Ak8FE5Q1ZbrCYjIn4Dd7ew/WVW3p611xpisKCoqYvjw4Smvd86cOYwbNy7r9SWyn5ey7ZVJNG/Dhg2e2pWItAURVZ0rIsOi5Ylzzv95wAnpen1jjDHpl605ka8AW1R1VYx8BV4VkUUiMj2D7TLGGJMASefkltsTeSE8JxKRfhewWlX/FGO/Qaq6WUT6AbOAH6jq3BhlpwPTASorKyfMnDkzhe8gcbW1tS33FshmfYnsF69ssvmJpKf6c0tWKtuRC8cuXplk8nL1+HXF7168MonmRUubPHnyog7NO6tq2h7AMOCjVmmFwBZgiMc6bgau9VJ2xIgRmm2zZ8/OifoS2S9e2WTzE0lP9eeWrFS2IxeOXbwyyeTl6vHrit+9eGUSzYuWBizUDvzOZ2M46yTgE1WtjpYpIt1EpHv4OTAF+CiD7TPGGONR2oKIiDwKvAOMFJFqEfm2m3UB8GirsoNE5CV3sz8wT0TeB+YDL6rqy+lqpzHGmOSlc3XWtBjpl0VJ2wyc5j5fCxyernYZY4xJHTtj3RhjTNIsiBhjjEmaBRFjjDFJsyBijDEmaRZEjDHGJM2CiDHGmKRZEDHGdNiKHUEue2A+gWAo200xGWb3WDfGdNj/vd/E7qZGNu9q5IC+5dlujskg64kYYzosfB3XL+qastsQk3EWRIwxKbO1xoJIvrEgYoxJAacrYkEk/1gQMcZ0WMgdztpmQSTvWBAxxnRYY8D5u7u+ObsNMRlnQcQY0yHBkBJweyKNflvim28siBhjOqTRH2x53hDx3OQHCyLGmA6JDCKNFkTyjgURY0yHRPY+GgM2nJVvLIgYYzokch7EeiL5x4KIMaZDbDgrv6UtiIjIDBHZKiIfRaTdLCKfishS93FajH2nisgKEVktItenq43GmI4LB46KkkILInkonT2RB4GpUdL/R1XHuo+XWmeKiA/4X+BU4FBgmogcmsZ2GmM6IDwn0rOsyJb45qG0BRFVnQvsSGLXI4DVqrpWVZuBx4CzUto4Y0zKhANH725F1hPJQ6Lhy2+mo3KRYcALqjra3b4ZuAzYAywErlHVna32OReYqqpXuNsXA0eq6vdjvMZ0YDpAZWXlhJkzZ6bjrXhWW1tLRUVF1utLZL94ZZPNTyQ91Z9bslLZjlw4dvHKJJPXOv3dzwLc/X4Th/UtYO3uEHed1M1T21OtK3734pVJNC9a2uTJkxep6kRPDY5GVdP2AIYBH0Vs9wd8OD2gW4AZUfb5BnB/xPbFwB1eXm/EiBGabbNnz86J+hLZL17ZZPMTSU/155asVLYjF45dvDLJ5LVOf3z+Rh163Qv6/UcW6yE3vhS3PenSFb978cokmhctDVioHfidz+jqLFXdoqpBVQ0B9+EMXbVWDewfsT0E2JyJ9hljEtcYcIawepcX0RwMEQylb3TD5J6MBhERGRixeTbwUZRiC4BDRGS4iBQDFwDPZaJ9xpjENUZMrEdum/yQttvjisijQBWwn4hUA78AqkRkLM7NB9YD33HLDsIZwjpNVQMi8n3gFZyhrxmquixd7TTGdEyTO7Heo9QJIk2BEN1Kstkik0lpCyKqOi1K8l9jlN0MnBax/RLQZvmvMSb3NAedIFJe4nO27dInecXOWDfGdEhzMERhAZQUWhDJRxZEjDEd0hwIUVQAxYXOz0lz0OZE8okFEWNMhzQHnJ5Isc/5OWmynkheiRtERKSbiBREbBeISHl6m2WM6SycnohQEu6JWBDJK156Iq8DkUGjHHgtPc0xxnQ24TmRYgsieclLEClV1drwhvvceiLGGCBiOKtlTsSCSD7xEkTqRGR8eENEJgAN6WuSMaYzCQ9ntcyJ2JV884qX80R+BPxTRMKXHhkInJ++JhljOpPmYIhCsZ5IvoobRFR1gYiMAkYCAnyiqv60t8wY0yk0BcLnidicSD7ysjqrHLgO+KGqfggME5HT094yY0yn0DKcZUEkL3mZE3kAaAaOcrergd+krUXGmE6l9cR6kw1n5RUvQeQgVf0D4AdQ1QacYS1jjNl72ROfXfYkH3kJIs0iUoZz5V1E5CCgKa2tMsZ0Gm0ue2JBJK94WZ31C+BlYH8R+QdwDM4tbo0xxhnOKrM5kXzlZXXWLBFZDHwZZxjrh6q6Pe0tM8Z0CuHhLF+B4CsQuwBjnvGyOusYoFFVXwR6ATeKyNC0t8wY0ymEJ9bBuQijnWyYX7zMidwF1IvI4cBPgA3AQ2ltlTGm0wgv8QVnXsRONswvXoJIQFUVOAu4XVVvA7qnt1nGmM5AVVuGs8A54dDmRPKLlyBSIyI3ABcBL4qIDyiKt5OIzBCRrSLyUUTaH0XkExH5QESeFpFeMfZdLyIfishSEVno9c0YYzLLH1SAvcNZFkTyjpcgcj7Okt5vq+rnwGDgjx72exCY2iptFjBaVccAK4Eb2tl/sqqOVdWJHl7LGJMF4aGryOEsO9kwv8QNIqr6uar+GXhfRPoAtcALHvabC+xolfaqqgbczXeBIYk32RiTK8K9jsiJdeuJ5BdxpjvaKSDyHeBXOJd/DxdWVT0wbuUiw4AXVHV0lLzngcdV9e9R8tYBO93Xu0dV723nNaYD0wEqKysnzJw5M16z0qq2tpaKioqs15fIfvHKJpufSHqqP7dkpbIduXDs4pVJJi8yfWdjiP+c08AFBytTD67gl+80UFEkXDOx1FP7U6krfvfilUk0L1ra5MmTF3VoxEdV230Aq4D94pWLse8w4KMo6T8DnsYNYlHyB7l/+wHvA8d5eb0RI0Zots2ePTsn6ktkv3hlk81PJD3Vn1uyUtmOXDh28cokkxeZvmF7nQ697gX99d9fVVXVc+96Wy+45524bUqHrvjdi1cm0bxoacBCTeL3PfzwMieyBqhPOkq1IiKXAqcD33TfQBuqutn9uxUn2ByRqtc3xqRO+MTCwsg5kYCdbJhPvFz25Abg3yLyHhHXzFLVqxN9MRGZinNZ+eNVNWpgEpFuQIGq1rjPp+AMpxljckxTIDyx7mwX+wrYHbTbDeUTL0HkHuAN4EPA84yZiDwKVAH7iUg1zjW4bgBKgFkiAvCuql4lIoOA+1X1NKA/8LSbXwg8oqove35HxpiMaT2xXlLos4n1POMliARU9ceJVqyq06Ik/zVG2c3Aae7ztcDhib6eMSbzmgNtl/haEMkvXuZEZovIdBEZKCJ9wo+0t8wYk/PC54nYyYb5y0tP5EL3b+SJgQrEXeJrjOna2pwnYtfOyjteLgU/PBMNMcZ0Pm2Gs3wFLZPtJj94Gc4yxpiowr0On3vDbLsAY/6xIGKMSVqbJb7ucFaMU8BMF2RBxBiTtGjXzlLde3Vf0/UlHETcVVol6WiMMaZzibbEF7DJ9TySTE/kYeATEbk11Y0xxnQurZf4loSDiM2L5A0vS3z3oaoniXM6+aFpaI8xphNpbjMn4tsn3XR9cXsiInKriBwWmeZe/HFZ+ppljOkMmgJBfAWCr/VwlgWRvOFlOOsT4F4ReU9ErhKRnululDGmc2jyh1qGsCByTsSu5JsvvNzZ8H5VPQa4BOf+IB+IyCMiMjndjTPG5LamQKsg4itoSTf5wdPEuoj4gFHuYzvOjaJ+LCKPpbFtxpgc1xwIUeLOg4BNrOejuBPrIvJn4EzgdeC3qjrfzfpvEVmRzsYZY3JbUyBISVHb4SzrieQPL6uzPgJ+HuMmUnbHQWPy2N7hLOfkQptYzz9eLsA4Q0R6i8hooDQifa6q7k5r64wxOa2pZTgrANhwVj7yMpx1BfBDYAiwFPgy8A5wQnqbZozJdU2BYEvvA+yM9XzkZWL9h8AkYIOqTgbGAdvS2ipjTKfQZomvz3oi+cZLEGlU1UYAESlR1U+AkV4qF5EZIrJVRD6KSOsjIrNEZJX7t3eMfS91y6wSkUu9vJ4xJrPaLPG14ay84yWIVItIL+AZYJaIPAts9lj/g8DUVmnXA6+r6iE4K76ub72Te/vdXwBH4kze/yJWsDHGZE9TILjPEt+W1Vk2nJU3vEysn+0+vVlEZgM9gZe9VK6qc0VkWKvks4Aq9/nfgDnAda3KnALMUtUdACIyCycYPerldY0xmdEcCO2zxLfEZ9fOyjcS6+Yxbm8gpvAPfNwXcILIC6o62t3epaq9IvJ3qmrvVvtcC5Sq6m/c7ZuABlVtc+VgEZkOTAeorKycMHPmTC/NSpva2loqKiqyXl8i+8Urm2x+Iump/tySlcp25MKxi1cmmbzI9B/Pqeewvj7OH+6noqKCpqDynVn1fGNEEV89sNjTe0iVrvjdi1cm0bxoaZMnT16kqhM9NTgaVY36ANYBa92/61ptr421X5R6hgEfRWzvapW/M8o+P8E5NyW8fRNwTbzXGjFihGbb7Nmzc6K+RPaLVzbZ/ETSU/25JSuV7ciFYxevTDJ5kenjfvWq/vzpD1vSAsGQDr3uBf2fWSvitivVuuJ3L16ZRPOipQEL1ePvebRHzOEsVR2edGRq3xYRGaiqn4nIQGBrlDLV7B3yAmd58Zw0tccYk6Qm/75LfMNX9LXhrPzh5VLwIiIXuUNKiMgBItKRM9WfA8KrrS4Fno1S5hVginuSY29giptmjMkhrVdngXPCoQWR/OFlddb/AUcBF7rbNcD/eqlcRB7FOTFxpIhUi8i3gd8DJ4vIKuBkdxsRmSgi90PLfMuvgQXu41fqcQ7GGJMZgWCIQEj3WZ0FzgotO9kwf3i5dtaRqjpeRJYAqOpOEfE0Y6aq02JknRil7ELgiojtGcAML69jjMm8cKAoKSoIXzoLcE44tJ5I/vDSE/G7l4JXABGpBOxfiDF5LhwoWg9nFdtwVl7xEkRuB54G+onILcA84LdpbZUxJuc1tQSRtsNZdrJh/vBysuE/RGQRzhCUAF9T1eVpb5kxJqc1+WP0RGw4K6/EDCKtTjbcSsTZ4iLSxya6jclvTQHnPurFUVZn2U2p8kd7PZFFOPMgAhwA7HSf9wI2Auk6j8QY0wk0tTsnEsxGk0wWxJwTUdXhqnogzvkZZ6jqfqraFzgdeCpTDTTG5KZwT6SkaN85kZJCnw1n5REvE+uTVPWl8Iaq/gs4Pn1NMsZ0BjHnROw8kbzi5TyR7SLyc+DvOMNbFwFfpLVVxpicF16BVVJYQGNEuk2s5xcvPZFpQCXOMt+n3eexTiI0xuSJvT2RKGesWxDJG16W+O7AuUWuMca02DsnYicb5jMvPRFjjGkjvDorfF/1MJsTyS8WRIwxSWlZ4tu6J+Kz80TyiQURY0xSmvzucFZh6yW+FkTyiZf7iRwoIs+LyHYR2Soiz4rIgZlonDEmd4UDRWmMORGNcett07V46Yk8AswEBgCDgH8ScQkUY0x+qm8O4CuQNnMi4fNG/EELIvnASxARVX1YVQPuI3y+iDEmj9U1BSkv8iEi+6SHr6Vlk+v5wUsQmS0i14vIMBEZKiI/BV4UkT6tLtJojMkjDc1Bykt8bdLDcySNfrt+Vj7wcsb6+e7f77RKvxynR2LzI8bkoXp/kPLitj8hZcVOEGlotiCSD7ycbJjSq/WKyEjg8YikA4H/UtW/RJSpAp4F1rlJT6nqr1LZDmNMxzQ0BygratsT6eYGlnoLInkhbhARkUuipavqQ8m8oKquAMa6dfuAT3Eup9LaW6p6ejKvYYxJv/rmIOXFbYNIOK2+OZDpJpks8DKcNSnieSnOHQ4XA0kFkVZOBNao6oYU1GWMyaC65iA9y4rapNtwVn6RRNdyi0hP4GFVPbPDLy4yA1isqne2Sq8CngSqgc3Ataq6LEYd04HpAJWVlRNmzpzZ0WZ1SG1tLRUVFVmvL5H94pVNNj+R9FR/bslKZTty4djFK5NMXjj9Z/PqGdCtgB+MK92n7PrdQW5+p5Efji9hXD8v/09Nja743YtXJtG8aGmTJ09epKoTPTU4GlVN6AEUAcsT3S9KPcXAdqB/lLweQIX7/DRglZc6R4wYodk2e/bsnKgvkf3ilU02P5H0VH9uyUplO3Lh2MUrk0xeOP2Y37+u//nYkjZlV22p0aHXvaDPLKmO27ZU6orfvXhlEs2LlgYs1A78lnuZE3meveeF+IAv4Zx82FGn4vRCtrTOUNU9Ec9fEpH/E5H9VHV7Cl7XGJMCDc3BlqGrSOU2nJVXvPQ1b414HgA2qGp1Cl57GjHOfBeRAcAWVVUROQLnfBa7EZYxOaSuORB1Yj28OqvOgkhe8LLE900R6c/eCfZVHX1RESkHTibi3BMRucp9vbuBc4HvikgAaAAucLtdxpgcEAopjf5QnPNEbHVWPvAynHUe8EdgDiDAHSLyE1V9ItkXVdV6oG+rtLsjnt8J3Nl6P2NMbmhwz0aP1hMpLiygsEDsPJE84WU462fAJFXdCiAilcBrQNJBxBjTuYUDRLQgEk63IJIfvFw7qyAcQFxfeNzPGNNFhSfNy6IMZwGUFxfayYZ5wktP5GUReYW9k+DnAy+lr0nGmFxX5waIbtYTyXteJtZ/IiLnAMfizIncq6rRLlNijMkT9S09kRhBpMRnS3zzRLtBxL221SuqehLwVGaaZIzJdQ0tcyIxhrOKClt6K6Zra3duQ1WDQL17qRNjjAH2Xlwx1sR6WbH1RPKFlzmRRuBDEZkF1IUTVfXqtLXKGJN12CMkAAAXNElEQVTT2lviG07fvMuCSD7wEkRedB/GGAM4t8aFdoazigttYj1PeJlY/1smGmKM6TzCw1kxJ9aLfbbEN0/EnBMRkbNE5HsR2++JyFr3cW5mmmeMyUXhnogt8TXtTaz/FHguYrsE5/pZVcB309gmY0yOq2n0U17so9AX/SekvLiQpkCIYMguedfVtRdEilV1U8T2PFX9QlU3At3S3C5jTA6raQzQvTT2aLjdIjd/tBdEekduqOr3IzYr09McY0xnsKfRT4/StrfGDQsHmNomCyJdXXtB5D0RubJ1ooh8B5ifviYZY3JdvJ5Ir3InwOyq92eqSSZL2lud9Z/AMyJyIbDYTZuAMzfytXQ3zBiTu2oa/fQqL46Z37PMybMg0vXFDCLulXuPFpETgMPc5BdV9Y2MtMwYk7P2NAY4oG/sqdGeZU5PZHdDc6aaZLLEy3kibwAWOIwxLWoa/TacZQC7L4gxJkGqyp4Gj3MiDRZEurqsBRERWS8iH4rIUhFZGCVfROR2EVktIh+IyPhstNMYs6/GIDQHQ/RpZ06krMhHsa/AeiJ5wMu1s9Jpsqpuj5F3KnCI+zgSuMv9a4zJotpm5wTCPt1iBxERoWd5kc2J5IFcHs46C3hIHe8CvURkYLYbZUy+q/EQRAB6lRWx24azurxsBhEFXhWRRSIyPUr+YCDyjPlqN80Yk0U1fo9BpLzIhrPygKhm59o2IjJIVTeLSD9gFvADVZ0bkf8i8DtVneduvw78VFUXtapnOjAdoLKycsLMmTMz9h6iqa2tpaKiIuv1JbJfvLLJ5ieSnurPLVmpbEcuHLt4ZZLJe21NLX9fJfzhuDL6lRfELHvb4ka+aFB+dUyZl7fSYV3xuxevTKJ50dImT568SFUnempwNKqa9QdwM3Btq7R7gGkR2yuAge3VM2LECM222bNn50R9iewXr2yy+Ymkp/pzS1Yq25ELxy5emWTyfjrjVR163Qu6p6G53bI/fnypHv271+O2L1W64ncvXplE86KlAQu1A7/fWRnOEpFuItI9/ByYAnzUqthzwCXuKq0vA7tV9bMMN9UY00pNs1LkEypK2l+X4wxn2cR6V5et1Vn9gadFJNyGR1T1ZRG5CkBV7wZeAk4DVgP1wLey1FZjTIRav9K7vBj3+xtTr7Ii6pqDNAdCFBfm8hoe0xFZCSKquhY4PEr63RHPFfhe6zLGmOyqada4k+oAvdwyO+ub6d+jNN3NMlli/z0wxiTEaxAZ6AaOz3c3prtJJossiBhjElLrMYgM6OkEkc8siHRpFkSMMQmp8XvsibQEkYZ0N8lkkQURY4xnjf4gdX6orCiJW7ZPt2KKCwtsOKuLsyBijPEsPDQ1qFf8EwhFhIE9S204q4uzIGKM8WzzLmdoyksQARjQo9SGs7o4CyLGGM8+dYPIYI9BZFCvMuuJdHEWRIwxnm3e1YAA/XvGnxMBZ4XWlj2NhELZuUafST8LIsYYzzbvaqBniVBS6PNUflCvMvxBZWtNU5pbZrLFgogxxrNPdzXQp7T9y51EOqSfc8XYFVtq0tUkk2UWRIwxnm3e1UjfMu9BZGT/7gCs+HxPuppkssyCiDHGk1BI+XRXA30T6In07lZMv+4lrPi8No0tM9lkQcQY40n1zgaaAyEGdkvsZ2PkgO6s2GI9ka7KgogxxpNVW515jUEVCQaR/t1ZtaWWoK3Q6pIsiBhjPFm5xRmSSjSIjB7ck6ZAiOWfWW+kK7IgYozxZNXWGvr3KKFbkfc5EYCjD+oLwFurtqejWSbLLIgYYzxZvbWWEe5qq0T061HKqAHdeWvVtjS0ymSbBRFjTFzBkLJqSy0Hu+d9JOq4EZUsXL+TmkZ/iltmsi3jQURE9heR2SKyXESWicgPo5SpEpHdIrLUffxXpttpjNlrxec1NPiDHD6kV1L7f/U/BtIcDPHEoup2yzUFgjw6fyOXP7iAs/73bW546gNWb7XlwbksGz2RAHCNqn4J+DLwPRE5NEq5t1R1rPv4VWabaIyJtGjDDgAmDO2d1P6H79+LCUN788Db6wkEQ1HLvL16O6f+5S1ueOpD1m2vo1uxj+eWbmbqX+byZJzgY7KnMNMvqKqfAZ+5z2tEZDkwGPg4020xxnizaMNO+nUvYUjvMtYkWcdVxx/ElQ8t5C+vreLaU0a2pG/d08hvX1rOM0s3M7RvOQ9+axLHj6hERPiitomrH1vCNf98n+LCAs44fFBq3pBJmYwHkUgiMgwYB7wXJfsoEXkf2Axcq6rLMtg0Y0yERRt3MmFob0QSW5kV6eRD+3PexCHcOXs122ubOPLAPry/aTf/XLgJf1C5+oSD+X+TD6a0aO/FHftWlDDjskl88773+MkT7/Olgd05uF/ik/smfUQ1OycAiUgF8CZwi6o+1SqvBxBS1VoROQ24TVUPiVHPdGA6QGVl5YSZM2emueXtq62tpaIiucnHVNaXyH7xyiabn0h6qj+3ZKWyHblw7OKV8ZK3pS7EdW818M1RxZw8rKhDx88fUv65opnXNgYIKfgEJvb3cc4hxfRv50z4XU0hfj6vgf7lBfzsy6UURAlmXfG7F69MonnR0iZPnrxIVSd6anA0qprxB1AEvAL82GP59cB+8cqNGDFCs2327Nk5UV8i+8Urm2x+Iump/tySlcp25MKxi1fGS959c9fo0Ote0I1f1MXcJ9H3Wtvo11Vb9mhdk9/zPs8sqdah172g981d0257U6WrHL94acBC7cDveTZWZwnwV2C5qv45RpkBbjlE5AicBQBfZK6Vxpiw15ZvYWT/7uzfpzxldXYrKeTgft0pL/Y+on7m4YM4cVQ//jxrpd1yN4dkY3XWMcDFwAkRS3hPE5GrROQqt8y5wEfunMjtwAVuxDTGZNDWmkYWrN/JSYf2y3ZTEBFuPvMwgiHl1y/YOpxckY3VWfOAdmfnVPVO4M7MtMgYE8sTi6oJhpSvjx+S7aYAsH+fcr4/+WD+NGslc1du47gRldluUt6zM9aNMVGFVHl8wSaOHN6HAyuzv+ghbPrxBzJ8v2784rllNAWC2W5O3rMgYoyJasHnQTZ8Uc/FRw3NdlP2UVLo4+YzD2Pd9jrum7s2283JexZEjDFtBIIhnl3TzCH9Kjht9MBsN6eN40dUcuroAdw5ezWbdtRnuzl5zYKIMaaNB/+9ns21yjVTRlJQkPwJhul00+mHUiDCL5+3SfZssiBijNnHmm21/HnWSg6v9HHKYf2z3ZyYBvUq4+oTD+G15Vt4ffmWbDcnb1kQMca02N3g57t/X0RJYQGXHlbcocucZMLlxwzn4H4V3Pz8MpqDdhZANlgQMcYAUNcU4FsPzGfd9jrumDaePqW5//NQXFjAr88azaYdDTy3xu5Vkg25/6/EGJN2n+1u4IJ732Xppl3cfsE4jj1kv2w3ybOjDurLuROG8OJaP/PsFrwZZ0HEmDz3rw8/44w75rF2Wy33XjyRU/8j91ZjxfOrsw5jUIVw9WNLbLVWhlkQMSZPfVC9i1sXNvLdfyymf49Snv7eMZx0aO5OpLenvLiQ740tJRAMcekD89lZ15ztJuUNCyLG5JHmQIiXPvyMi+5/jzPvfJt1u4PceNoonvneMYzo37nv0zGoooD7LplI9c4GLplhgSRTsnpTKmNM+u1uUp5Z8imzlm/hzRXbqG0KMLhXGT85ZSQHBjdx6nEHZbuJKXPkgX25+6LxXPX3xZx/7zv89dJJKb36sGnLgogxXYSqsmVPE2u21bJySw1LN+1i8cadbNrRACylsnsJZxw+kCmHDeC4QyrxFQhz5nS9e5efMKo/D35rEt95eBGn3zGPv1wwlskjs38V4q7KgogxnYCq0ugPsaO+mS17Gvl8dyOf7W5kwSdNPLF5MZt21LNmWx21TYGWffr3KGH8Ab05ujLItJMmMWZwz5w9+zzVjj5oP174wbFc9ffFfOuBBUw7Yn+umzqKXuXF2W5al2NBxJgUUlUCIcUfDFHnV7bXNuEPhvAHlHp/gPrmIA3NQeevP0hDs5MWmb5qfROPbFzIrno/uxqa3b9+mgOhNq9XXACD++xhUK9Svj5+MAf3q+CgygoO7ldBZfcSRIQ5c+Ywdv9eWfg0smto3248/f+O5k+vrmDG2+t5+aPPuer4g7joy0PpVmI/fanSpT7JXU3KnW+s2ict1q2sYp3bGrt89IzW5devb2aJf2XM+mO9QKzy69c3s7BpRcLt2bixmfmNn8StX9Up+27DJ/umR+yxaWMz7zQsj1nRxk3N/Lt+edv0jc28Xdf2ukabNjUxr3bf9E3VTloyx0XV+fEOqhJyn4dCuNtOfkiVYGjvc2fbLevuF1Llix0N3LPy3ZYyoZbyEHKDg/OI/Xwfr78W4x21VSDOKqNCggwI1tOrvIgD96ugV3kRvcqLnb9lRfTvUcqAnqUM7FnKkvfeZvLkKs+vkW9Ki3z87KuHcs74Ifz2peX87l+fcNebazhn3BDOmzSEUQN6ZLuJnV6XCyK3vroy282ANavazY51JYloyapQsH6N5/Lh+kMhpWDD2lblo+8R0hAFm9bFrD8UClGwaf0+9e+zfzBEQfX6NvUHQ0F8n25sUz4YDOLbvHGf0uE0p/7o7Wzv/RYUCAUSfrD3b0GrtIK9z0UEX8He5wUC/iAEQ4oIFBYU4CsQp343v8hXQFFhAcW+Aop8QqFv7/MiX4G77TzfsG4tXxo1gqICZ7us2EdZsY/yIh/lxYXOc/dRVuyj2FfQ0nOoqjouxrtt/d7zY3iqo740sAcPf/tIlmzcyX1vreXhd9cz4+11jBrQnaqR/agaWcmEob0p8tmC1UR1qSAytEcBy245tU167B+fxH+s4tXj/ABUxW5kgpKtL5H94pVNNj+R9FR/bsly2nFUaurSTVR9ObfuxZHvxh3Qm//75gR21DXzzJJPefXjz7n/rbXc/eYaSgoLGD24J2OG9OTwIb3YvSdIfXMgofvA56Mu9ekI2P8kjDFx9elWzOXHDufyY4dT0+jn7dXbWbB+J+9v2sWj8zfywNvrAfjFv19hYM9Shu/XjYE9yxjQs4QBPUpbhhQru5fQu7yY0iJfdt9QFmUliIjIVOA2wAfcr6q/b5VfAjwETAC+AM5X1fWZbqcxpuvrXlrE1NEDmerefCsQDLF6Wy3Pz5lPWb+hrN1Wx9rtdby9ejvbapsIhtpO0JUWFdCrzJm3ormBx6sX0aO0iG4lhXQrcYYvK9y/3Up8dCsppLy4kE01ITbtqKeksICSIp/zt7CgUw1TZjyIiIgP+F/gZKAaWCAiz6lq5Ezrt4GdqnqwiFwA/DdwfqbbaozJP4W+AkYN6MHnAwqpqjpkn7xgyFlx9/nuRj7f08j22iZ21fvZ3eBnZ10zuxr8bPisjtVba9nT6Ke+KUhdc4AocWevt2e3SQoHk9IiHxpoptfiNykpKqCk0EdpxN+d2xt5cdv7LXNxhb4CZ97OJ1RvbOZjVlNUsHf+bm21nx2Lq1vKpGLkJhs9kSOA1aq6FkBEHgPOAiKDyFnAze7zJ4A7RURUY63RMcaY9PMVCP3d4azDY5Rx5tWOb9kOn+NT1xygrilAnRtY6poCzF/yAcMPHklTIERTIESjP+g8d/82+oNs+HQzvftW0OgP0RQI0ugPsbvBT5M/xK6aEOvrt+MPKoFQCH8ghN9dRagKrG67spOP3k/pZ5KNIDIY2BSxXQ0cGauMqgZEZDfQF2hznWcRmQ5MdzebROSjlLc4MT2B3TlQXyL7xSubbH4i6fsR5fhmQSqPXy4cu3hlksnL1ePXFb978cokmhctbWSc12+fqmb0AXwDZx4kvH0xcEerMsuAIRHba4C+HupemOn3E6UN9+ZCfYnsF69ssvmJpOfCsUv18cuFYxevTDJ5uXr8uuJ3L9XHLx3HLhtLmaqB/SO2hwCbY5URkUKc6LkjI63ruOdzpL5E9otXNtn8RNNzQSrblgvHLl6ZZPJy9fh1xe9evDKJ5qX82IkbiTLGDQorgROBT4EFwIWquiyizPeA/1DVq9yJ9XNU9TwPdS9U1YlparpJIzt2nZsdv86ro8cu43Mi6sxxfB94BWeJ7wxVXSYiv8LpVj0H/BV4WERW4/RALvBY/b1pabTJBDt2nZsdv86rQ8cu4z0RY4wxXYed3m2MMSZpFkSMMcYkzYKIMcaYpHXZICIiXxOR+0TkWRGZku32mMSIyJdE5G4ReUJEvpvt9pjEiEg3EVkkIqdnuy0mMSJSJSJvud+/qnjlO1UQEZEZIrK19VnpIjJVRFaIyGoRuR5AVZ9R1SuBy7DrbuWEBI/fclW9CjgPsKWjWZbIsXNdB8zMbCtNLAkePwVqgVKcc/ba1amCCPAgMDUyIeKCjqcChwLTROTQiCI/d/NN9j1IAsdPRM4E5gGvZ7aZJooH8XjsROQknGvhbcl0I01MD+L9u/eWqp6K8x+BX8aruFMFEVWdS9sz11su6KiqzcBjwFni+G/gX6q6ONNtNW0lcvzc8s+p6tHANzPbUtNagsduMvBl4ELgShHpVL8zXVEix09VQ27+TqAkXt1d4aZUsS7o+APgJKCniBysqndno3EmrqjHzx2LPQfnH/FLWWiXiS/qsVPV7wOIyGXA9ogfJZNbYn33zgFOAXoBd8arpCsEkei3Jle9Hbg9040xCYt1/OYAczLbFJOgqMeu5Ynqg5lriklCrO/eU8BTXivpCt1MLxd0NLnLjl/nZceuc0vJ8esKQWQBcIiIDBeRYpzrbD2X5TYZ7+z4dV527Dq3lBy/ThVERORR4B1gpIhUi8i3VTUAhC/ouByYGXlFYJM77Ph1XnbsOrd0Hj+7AKMxxpikdaqeiDHGmNxiQcQYY0zSLIgYY4xJmgURY4wxSbMgYowxJmkWRIwxxiTNgojpskQkKCJLIx7Dst2mdBCRYVEu8X2ziFybrTaZ/NEVrp1lTCwNqjo2VqaIFLonXBljkmQ9EZNXROQyEfmniDwPvOqm/UREFojIByLyy4iyP3Nv2POaiDwa/p+9iMwRkYnu8/1EZL373Ccif4yo6ztuepW7zxMi8omI/ENExM2bJCL/FpH3RWS+iHR37yo3NqIdb4vImCTf76BWvbGgiAxN7tMzpi3riZiurExElrrP16nq2e7zo4AxqrpDnFsnH4JzbwUBnhOR44A6nGsJjcP5niwGFsV5vW8Du1V1koiUAG+LyKtu3jjgMJwL3L0NHCMi84HHgfNVdYGI9AAagPtx7sj5IxEZAZSo6gdxXvugiPcKMAC4VVU3A2MBROR7wPGquiFOXcZ4ZkHEdGWxhrNmqWr4Bj1T3McSd7sCJ6h0B55W1XoAEfFyYbopwBgROdfd7unW1QzMV9Vqt66lwDBgN/CZqi4AUNU9bv4/gZtE5CfA5Th3pYtnTeR7FZGbIzNF5BjgCuArHuoyxjMLIiYf1UU8F+B3qnpPZAER+RER98ZoJcDeoeDSVnX9QFVfaVVXFdAUkRTE+e5JtNdQ1XoRmYVzl8AO32NeRAYCfwXOVNXajtRlTGs2J2Ly3SvA5SJSASAig0WkHzAXOFtEykSkO3BGxD7rgQnu83Nb1fVdESly6xohIt3aee1PgEEiMskt311Ewv+xux/npmoLwr0mETlCRB5K5M25bZkJXKeqKxPZ1xgvrCdi8pqqvioiXwLecee6a4GLVHWxiDwOLAU2AG9F7HYrMFNELgbeiEi/H2eYarE7cb4N+Fo7r90sIucDd4hIGc58yElAraouEpE9wAMRuxzglknE0cAk4JcRiwZOc+dKjOkwuxS8MR64cwy1qnprhl5vEM7tgUeF71EuIn8EHvYwyW5MxthwljE5RkQuAd4DfhYOIACq+hMLICbXWE/EGGNM0qwnYowxJmkWRIwxxiTNgogxxpikWRAxxhiTNAsixhhjkmZBxBhjTNL+Pw6ep2l+F41oAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('Filter group delay')\n", "plt.semilogx(w/(2*np.pi), -np.gradient(phase)/np.gradient(w)/1e-3,'-',label='group delay')\n", "#plt.semilogx(w/(2*np.pi), -np.gradient(phase)/w/1e-3,'-',label='phase delay')\n", "plt.xlim((100,100e3))\n", "plt.ylim((0,20))\n", "plt.ylabel('Group delay, msec')\n", "plt.xlabel('Frequency, Hz')\n", "plt.legend()\n", "plt.grid(which='both', axis='both')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bandpass filter specification\n", "Using the same filter order selection function above, set the passband frequency range as a two element array of band edge frequencies. Set the stopband frequencies as a two element array of band edge frequencies.\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order = 5\n" ] } ], "source": [ "f_lower = 8e3 # lower passband edge frequency, Hz\n", "f_upper = 12e3 # upper passband edge frequency, Hz\n", "\n", "wp = [f_lower*2*np.pi,f_upper*2*np.pi] # passband edge frequency, Hz\n", "gpass = 3 # The maximum loss in the passband (dB)\n", "\n", "transition = 3e3 # amount of transition allowed, Hz\n", "ws = [(f_lower-transition)*2*np.pi,(f_upper+transition)*2*np.pi] # stopband edge frequency, Hz\n", "gstop = 50 # The minimum attenuation in the stopband (dB)\n", "\n", "# uncomment filter type to use\n", "#N, Wn = signal.buttord(wp, ws, gpass, gstop,analog=True)\n", "#N, Wn = signal.cheb1ord(wp, ws, gpass, gstop,analog=True)\n", "N, Wn = signal.cheb2ord(wp, ws, gpass, gstop,analog=True)\n", "#N, Wn = signal.ellipord(wp, ws, gpass, gstop,analog=True)\n", "\n", "print('order = {:.0f}'.format(N))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "#system_bp = signal.butter(N, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandpass', output='ba', analog=True)\n", "#system_bp = signal.cheby1(N, gpass, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandpass', output='ba', analog=True)\n", "#system_bp = signal.cheby2(N, gstop, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandpass', output='ba', analog=True)\n", "system_bp = signal.ellip(N, gpass, gstop, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandpass', output='ba', analog=True)\n", "#system_bp = signal.bessel(N, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandpass', output='ba', analog=True, norm='mag')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot filter specification limits\n", "The grey areas are the keep out areas specified above." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "b, a = system_bp\n", "w, h = signal.freqs(b, a, 2000) # Compute frequency response of analog filter\n", "plt.semilogx(w/(2*np.pi), 20 * np.log10(abs(h)))\n", "plt.title('Filter frequency response and limits')\n", "plt.xlabel('Frequency, Hz')\n", "plt.ylabel('Amplitude [dB]')\n", "plt.grid(which='both', axis='both')\n", "\n", "plt.fill([f_lower, f_upper, f_upper, f_lower], [-gpass, -gpass, -100, -100], '0.9', lw=0) # passband\n", "plt.fill([f_lower-transition, f_lower-transition, 0, 0], [-gstop, 100, 100, -gstop], '0.9', lw=0) # stopband\n", "plt.fill([f_upper+transition, f_upper+transition, 100e9, 100e9], [-gstop, 100, 100, -gstop], '0.9', lw=0) # stopband\n", "plt.xlim((1e3,1e5))\n", "plt.ylim((-100,10))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot poles and zeros" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "z, p, k = signal.tf2zpk(system_bp[0],system_bp[1])\n", "\n", "plt.plot(np.real(z), np.imag(z), 'ob', markerfacecolor='none')\n", "plt.plot(np.real(p), np.imag(p), 'xr')\n", "plt.legend(['Zeros', 'Poles'], loc=2)\n", "plt.title('Pole / Zero Plot')\n", "plt.xlabel('Real')\n", "plt.ylabel('Imaginary')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Bode magnitude and phase data\n", "Use the SciPy function [bode](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html) to plot the magnitude and phase of the filter." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#x = np.linspace(10*2*np.pi, 10e3*2*np.pi, 1000, endpoint=True)\n", "w, mag, phase = signal.bode(system_bp, w=w)\n", "\n", "fig, ax1 = plt.subplots()\n", "ax1.set_ylabel('magnitude, dB')\n", "ax1.set_xlabel('frequency, Hz')\n", "\n", "plt.semilogx(w/(2*np.pi), mag,'-k') # Bode magnitude plot\n", "\n", "ax1.tick_params(axis='y')\n", "plt.grid(which='both', axis='both')\n", "\n", "ax1.set_xlim((1e3,1e5))\n", "ax1.set_ylim((-100,10))\n", "\n", "# instantiate a second y-axes that shares the same x-axis\n", "ax2 = ax1.twinx()\n", "color = 'tab:blue'\n", "\n", "plt.semilogx(w/(2*np.pi), phase,':',color=color) # Bode phase plot\n", "\n", "ax2.set_ylabel('phase, deg',color=color)\n", "ax2.tick_params(axis='y', labelcolor=color)\n", "#ax2.set_ylim((-100,10))\n", "\n", "plt.title('Bode plot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the impulse and step response\n", "Use the SciPy functions [impulse2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.impulse2.html) and [step2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.step2.html) to plot the impulse and step response of the system." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# figsize() function to adjust the size\n", "plt.subplots(figsize=(15, 5))\n", "\n", "# using subplot function and creating\n", "# plot one\n", "plt.subplot(1, 2, 1)\n", "\n", "# impulse response\n", "t, y = signal.impulse2(system_bp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Impulse response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# using subplot function and creating plot two\n", "plt.subplot(1, 2, 2)\n", "\n", "t, y = signal.step2(system_bp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Step response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# space between the plots\n", "plt.tight_layout(4)\n", "\n", "# show plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot the group delay.\n", "The following python code calculates and plots [group delay](https://en.wikipedia.org/wiki/Group_delay_and_phase_delay#). Frequency components of a signal are delayed when passed through a circuit and the signal delay will be different for the various frequencies unless the circuit has the property of being linear phase. The delay variation means that signals consisting of multiple frequency components will suffer distortion because these components are not delayed by the same amount of time at the output of the device.\n", "\n", "Group delay: $\\tau _{g}(\\omega )=-\\frac {d\\phi (\\omega )}{d\\omega }$" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('Filter group delay')\n", "plt.semilogx(w/(2*np.pi), -np.gradient(phase)/np.gradient(w)/1e-3,'-',label='group delay')\n", "#plt.semilogx(w/(2*np.pi), -np.gradient(phase)/w/1e-3,'-',label='phase delay')\n", "plt.xlim((1e3,100e3))\n", "plt.ylim((0,100))\n", "\n", "plt.ylabel('Group delay, msec')\n", "plt.xlabel('Frequency, Hz')\n", "plt.legend()\n", "plt.grid(which='both', axis='both')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bandstop filter specification\n", "Using the same filter order selection function above, set the passband frequency range as a two element array of band edge frequencies. Set the stopband frequencies as a two element array of band edge frequencies." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order = 5\n" ] } ], "source": [ "f_lower = 8e3 # lower passband edge frequency, Hz\n", "f_upper = 10e3 # upper passband edge frequency, Hz\n", "\n", "wp = [f_lower*2*np.pi,f_upper*2*np.pi] # passband edge frequency, Hz\n", "gpass = 1 # The maximum loss in the passband (dB)\n", "\n", "transition = 1e3 # amount of transition allowed\n", "ws = [(f_lower-transition)*2*np.pi,(f_upper+transition)*2*np.pi] # stopband edge frequency, Hz\n", "gstop = 60 # The minimum attenuation in the stopband (dB)\n", "\n", "# uncomment filter type to use\n", "#N, Wn = signal.buttord(wp, ws, gpass, gstop,analog=True)\n", "#N, Wn = signal.cheb1ord(wp, ws, gpass, gstop,analog=True)\n", "#N, Wn = signal.cheb2ord(wp, ws, gpass, gstop,analog=True)\n", "N, Wn = signal.ellipord(wp, ws, gpass, gstop,analog=True)\n", "\n", "print('order = {:.0f}'.format(N))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "#system_bs = signal.butter(N, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandstop', output='ba', analog=True)\n", "#system_bs = signal.cheby1(N, gpass, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandstop', output='ba', analog=True)\n", "#system_bs = signal.cheby2(N, gstop, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandstop', output='ba', analog=True)\n", "system_bs = signal.ellip(N, gpass, gstop, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandstop', output='ba', analog=True)\n", "#system_bs = signal.bessel(N, [f_lower*(2*np.pi),f_upper*(2*np.pi)], btype='bandstop', output='ba', analog=True, norm='mag')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot filter specification limits\n", "The grey areas are the keep out areas specified above." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "b, a = system_bs\n", "w, h = signal.freqs(b, a, 2000) # Compute frequency response of analog filter\n", "plt.semilogx(w/(2*np.pi), 20 * np.log10(abs(h)))\n", "plt.title('Filter frequency response and limits')\n", "plt.xlabel('Frequency, Hz')\n", "plt.ylabel('Amplitude [dB]')\n", "plt.grid(which='both', axis='both')\n", "\n", "plt.fill([f_lower, f_upper, f_upper, f_lower], [-gstop, -gstop, -100, -100], '0.9', lw=0) # passband\n", "plt.fill([f_lower-transition, f_lower-transition, 0, 0], [-gpass, -100, -100, -gpass], '0.9', lw=0) # stopband\n", "plt.fill([f_upper+transition, f_upper+transition, 100e9, 100e9], [-gpass, -100, -100, -gpass], '0.9', lw=0) # stopband\n", "plt.xlim((5e3,2e4))\n", "plt.ylim((-100,10))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot poles and zeros" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "z, p, k = signal.tf2zpk(system_bs[0],system_bs[1])\n", "\n", "plt.plot(np.real(z), np.imag(z), 'ob', markerfacecolor='none')\n", "plt.plot(np.real(p), np.imag(p), 'xr')\n", "plt.legend(['Zeros', 'Poles'], loc=2)\n", "plt.title('Pole / Zero Plot')\n", "plt.xlabel('Real')\n", "plt.ylabel('Imaginary')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Bode magnitude and phase data\n", "Use the SciPy function [bode](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html) to plot the magnitude and phase of the filter." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#x = np.linspace(10*2*np.pi, 10e3*2*np.pi, 1000, endpoint=True)\n", "w, mag, phase = signal.bode(system_bs, w=w)\n", "\n", "fig, ax1 = plt.subplots()\n", "ax1.set_ylabel('magnitude, dB')\n", "ax1.set_xlabel('frequency, Hz')\n", "\n", "plt.semilogx(w/(2*np.pi), mag,'-k') # Bode magnitude plot\n", "\n", "ax1.tick_params(axis='y')\n", "plt.grid(which='both', axis='both')\n", "\n", "ax1.set_xlim((5e3,2e4))\n", "ax1.set_ylim((-100,10))\n", "\n", "# instantiate a second y-axes that shares the same x-axis\n", "ax2 = ax1.twinx()\n", "color = 'tab:blue'\n", "\n", "plt.semilogx(w/(2*np.pi), phase,':',color=color) # Bode phase plot\n", "\n", "ax2.set_ylabel('phase, deg',color=color)\n", "ax2.tick_params(axis='y', labelcolor=color)\n", "#ax2.set_ylim((-5,25))\n", "\n", "plt.title('Bode plot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the impulse and step response\n", "Use the SciPy functions [impulse2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.impulse2.html) and [step2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.step2.html) to plot the impulse and step response of the system." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# figsize() function to adjust the size\n", "plt.subplots(figsize=(15, 5))\n", "\n", "# using subplot function and creating\n", "# plot one\n", "plt.subplot(1, 2, 1)\n", "\n", "# impulse response\n", "t, y = signal.impulse2(system_bs,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Impulse response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# using subplot function and creating plot two\n", "plt.subplot(1, 2, 2)\n", "\n", "t, y = signal.step2(system_bs,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Step response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# space between the plots\n", "plt.tight_layout(4)\n", "\n", "# show plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot the group delay.\n", "The following python code calculates and plots [group delay](https://en.wikipedia.org/wiki/Group_delay_and_phase_delay#). Frequency components of a signal are delayed when passed through a circuit and the signal delay will be different for the various frequencies unless the circuit has the property of being linear phase. The delay variation means that signals consisting of multiple frequency components will suffer distortion because these components are not delayed by the same amount of time at the output of the device.\n", "\n", "Group delay: $\\tau _{g}(\\omega )=-\\frac {d\\phi (\\omega )}{d\\omega }$" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEaCAYAAAAG87ApAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XmYVNWZ+PHvW9UrdAMijbLJouDGD0XABTfQ6Ji4G9fELVGZzJiJMSZBnck4GWN0RmeiTlbjbhKVGDUG9wU0uIDgziIigrSA7PRCb1X1/v64t6qLorrr3qqururb7+d56um6955z7qmm+r6cc+45V1QVY4wxxqtQoStgjDGmZ7HAYYwxxhcLHMYYY3yxwGGMMcYXCxzGGGN8scBhjDHGFwscpqiJyF4i0iAiYXd7rohcXuh6FQMRGSUiKiIlHtJeKiLzuqNeJvgscJiiICKrRKTJDRLx11BV/VxVq1Q1miaPXQyNKQALHKaYnOoGifhrbT5P5uV/6hnyi4jY35DpdexLb4paR90xIrI/8FvgCLd1ss3dXy4it4nI5yLypYj8VkQq3WPTRKRWRGaKyHrgvjTnC4vI/4jIJhH5TES+m3x+t6vsJhF5HdgBjBGRoSLylIhsEZEVInJFUnn3i8jPkraniUht0vYqEblORJaIyFYRuU9EKjr4XYTdz7ZJRFYCJ6cc7y8i94jIOhH5QkR+Fu/iS1PWHSKyRkTqRGSRiBzt7t9TRHaIyO5JaSeJyEYRKU3/r2R6GwscpkdS1aXAd4A33dbJAPfQfwHjgIOBfYBhwL8nZd0TGAiMBGakKfoK4Ktu/kOAM9KkucjNWw2sBh4GaoGhwNnAz0XkeB8f55vAPwB7u3X/tw7SXQGcAkwEJrvnSvYAEMH53BOBE4GOxoPexvmMA4E/AX8WkQpVXQ/MBc5NSnsh8Iiqtvn4TCbALHCYYvKkiGxzX0/6zSwignNxvVpVt6hqPfBz4PykZDHgBlVtUdWmNMWcC9yhqrWquhW4JU2a+1V1sapGcALRUcBMVW1W1feAu3GCi1e/VNU1qroFuAm4oIN05wK3J6W9Oemz74ET8L6vqo2qugH4RcpnT1DVP6jqZlWNqOr/AOXAvu7hB3CCBW6L5QLgIR+fxwRcTn28xnSxM1T1pRzy1wB9gEVODAFAgOTumo2q2txJGUOBNUnba9KkSd43FIgHqbjVOC0Cr5LLW+2W6aVuq5PejwRKgXVJnz1E+vojItfgtEaGAgr0Awa5h/8K/FZExuC0gLar6gKvH8YEnwUO05OlLu28CWgCDlTVLzzmSbUOGJ60PSJDGWuBgSJSnRQ89gLi52/ECWZxe6YpL/kce7lldlS31LRxa4AWYJDbEuqQO54xEzgeWKyqMRHZihNkUdVmEZmF04W2H9baMCmsq8r0ZF8Cw0WkDEBVY8DvgV+IyGAAERkmIv/go8xZwFVuvgE4F9gOqeoa4A3gZhGpEJEJwGXAH90k7wFfE5GBIrIn8P00xVwpIsNFZCBwPfBoJ3X7npt2N+DapHqsA14A/kdE+olISET2FpFj05RTjTMWshEoEZF/x2lxJHsQuBQ4DfhDZ78D0/tY4DA92SvAYmC9iGxy980EVgBviUgd8BLtffde/B7nAvwB8C7wDM5Fdpd5JEkuAEbhtBSewBlDedE99hDwPrDKLTddUPiTe2yl+/pZmjTxuj3vlvcO8HjK8YuBMmAJsBV4DBiSppzngWeB5TjdXc2kdGmp6us440HvqOqqDupjeimxBzkZ0zER+SrwW1UdmafyVwGX5zi2kxci8grwJ1W9u9B1McXFWhzGJBGRShH5moiUiMgw4AacVkSvIiJTcG5H7qjbzPRiFjiM2ZkAP8Xp6nkXWMrO80ACT0QewOni+37K3WLGANZVZYwxxidrcRhjjPHFAocxxhhfevQEwAEDBug+++xT6Gp0icbGRvr27dvjz5lrmdnk95snU/qYwtot9QzbvRrpMFXmcgrxb5oP9t3MrQw/ebymzfW7t2jRok2qWuOpUumoao99jRs3ToNizpw5gThnrmVmk99vnkzpb/zbYh05c7Y+tnBNTuUU4t80H+y7mVsZfvJ4TZvrdw9YqDlce62rypgUa7buAKCiNO2K5Mb0ehY4jEmxpbEVgN362uMnjEnHAocxKVoiMQDC0tkIhzG9V48eHDcmH+LhImZTnLpEW1sbtbW1NDd3tpr9zvr378/SpUu7tB5dUWY2ZfjJ4zVtpnTx4xUVFQwfPpzS0q5tPVvgMKYDapNju0RtbS3V1dWMGjUK8diKq6+vp7q6ukvr0RVlZlOGnzxe02ZKV19fT1VVFZs3b6a2tpbRo0d7rq8X1lVlTAesxdE1mpub2X333T0HDdM1RITdd9/dV0vPKwscxnRAMz7zyXhlQaMw8vV7t8BhTCr3j81aHCYf5s6dyymnnJJzmkKywGFMB2I2xtGrRCKdPnHXJMlb4BCRe0Vkg4h8lObYD0VERWSQuy0icqeIrBCRD0TkkHzVyxivbHA8OG688UYmTZrECSecwAUXXMBtt90GwLRp07j++us59thjueOOO1i9ejXHH388EyZM4Pjjj+fzzz8H4NJLL+Wxxx5LlFdVVQU4LYNjjjmGM888kwMOOIDvfOc7xGKxXc7/3HPPsd9++3HUUUfx+OPtD25sbGzk29/+NlOmTGHixIk8/fTTu+RdsGABU6dOZeLEiUydOpWPP/4YgKOPPpr33nsvke7II4/kgw8+6ILfVmb5vKvqfuCXOM8uThCREcAJwOdJu78KjHVfhwG/cX8aUzAWN7reT/+2mCVr6zKmi0ajhMPeZu4fMLQfN5x6YIfHFy5cyF/+8hfmzZtHZWUlhxxyCJMmTUoc37ZtG6+++ioAp556KhdffDGXXHIJ9957L9/73vd48sknOz3/ggULWLJkCSNHjuSkk07i8ccf5+yzz04cb25u5oorruCVV15hn3324bzzzkscu+mmmzjuuOO499572bZtG5MnT+bUU0/dqfz99tuP1157jZKSEl566SWuv/567r//fi6//HLuv/9+br/9dpYvX05LSwsTJkzw9DvLVd5aHKr6GrAlzaFfAD+GnUYeTwcedJdReQsYICLpnpVsTN7ZPI5gmTdvHqeffjqVlZVUV1fvcmFOvpC/+eabfOMb3wDgoosuYt68eRnLP/TQQxkzZgzhcJgLLrhglzzLly9n9OjRjB07FhHhwgsvTBx74YUXuOWWWzj44IOZNm0aLS0tiVZO3Pbt2znnnHMYP348V199NYsXLwbgnHPOYfbs2bS1tXHvvfdy6aWX+vq95KJb53GIyGnAF6r6fspo/zBgTdJ2rbtvXZoyZgAzAGpqapg7d27e6tudGhoauv2z5OOcuZaZTX6/eTKlr6trAuCDDz+kdEPHk6wylVOIf9N8yPVz9O/fn/p650GCP5i2l6c8flocQKL8dJqammhpaSEajVJfX09raystLS3U19cTjUZ3yq+q1NfXU1paSltbW+KYqtLY2Eg0GqWuro7W1lbq6+vZsWMHsVgskb+5uZm2trad6hOLxXZK09TURCQSSZz/wQcfZOzYsTt97s8++yyR5tprr+WII47gwQcfZPXq1Zx88smJek+bNo1HHnmERx99lLlz5ybOEf+s8Tp1+fcwlxUSM72AUcBH7vs+wHygv7u9Chjkvn8aOCop38vApEzl2+q4xXfOIKyOe/ov5+nImbP12Q/X5VSOrY7rWLJkie88dXV1OZ0z2YIFC3TixIm6YcMGra+v13Hjxumtt96qqqrHHnusvv3224m0p556qj74oNP5cd999+kZZ5yhqqo33nij/vjHP9a6ujp94okn1Ll0Or+biooKXblypUajUT3xxBP1scce2+n8GzZs0BEjRuiKFStUVfX888/Xk08+WVVVr7vuOr3yyis1Foupqurf//73RLnxNGeccUaizBtuuEFHjhyZ+P0sXLhQhwwZoueee+5O50z+/aX7/dODVsfdGxgNvC8iq4DhwDsisidOC2NEUtrhwNpurJsxCfHGsNogRyBMmTKF0047jalTp3LWWWcxefJk+vfvnzbtnXfeyX333ceECRN46KGHuOOOOwC44oorePXVV5k2bRrz58/f6VkXRxxxBNdeey3jx49n9OjRnHnmmTuVWVFRwV133cXJJ5/MUUcdxciRIxPHfvKTn9DW1saECRMYP348P/vZz3ap049//GOuu+46jjzyyERLI27SpEn069ePb33rW1n/frLRbV1VqvohMDi+7QaPyaq6SUSeAr4rIo/gDIpvV9VduqmM6U42xhEcP/zhD7nmmmsIh8Mcc8wxXHPNNQC7dOGMGjWKV155ZZf8e+yxB2+99VZiqY+bb745caxPnz48+uijnZ7/pJNOYtmyZbvsr6ys5He/+11iO969NG3aNKZNmwY4gWn58uWJNDfeeGMi3dq1a4nFYpx44omdnr+r5fN23IeBN4F9RaRWRC7rJPkzwEpgBfB74J/zVS9jvLJ5HMExY8YMjjzySA455BC+/vWvc8ghPf+O/wcffJDDDjuMm266iVCoe6fk5a3FoaoXZDg+Kum9Alfmqy7GZMPCRnD86U9/ysvCicktg+528cUXc/HFFxfk3DZz3JgU8fv9bIzDmPQscBjTAeuq6joWhAsjX793CxzGdCDNyhEmCxUVFWzevNmCRzdTVTZv3kxFRUWXl20PcjKmA3aZ6xrDhw+ntraWjRs3es7T3Nzc5Re8rigzmzL85PGaNlO6+PH4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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('Filter group delay')\n", "plt.semilogx(w/(2*np.pi), -np.gradient(phase)/np.gradient(w)/1e-3,'-',label='group delay')\n", "#plt.semilogx(w/(2*np.pi), -np.gradient(phase)/w/1e-3,'-',label='phase delay')\n", "plt.ylabel('Group delay, msec')\n", "plt.xlabel('Frequency, Hz')\n", "plt.xlim((1e3,100e3))\n", "plt.ylim((0,150))\n", "plt.legend()\n", "plt.grid(which='both', axis='both')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bessel Lowpass filter\n", "SciPy doesn't have an order calculation function for the Bessel type filter, so I'll just pick a filter order and cut off frequency and plot the results. The analog Bessel filter has maximally flat group delay and maximally linear phase response, with very little ringing in the step response.\n", "\n", "### Find filter coefficients\n", "The functions return the numerator (b) and denominator (a), polynomials. Critical frequency normalization parameter is set to norm = 'mag', so that the gain magnitude is -3 dB at angular frequency Wn." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "fp = 10e3 # passband edge frequency, Hz\n", "N = 5\n", "Wn = fp*2*np.pi\n", "system_lp = signal.bessel(N, Wn, btype='lowpass', output='ba', analog=True, norm='mag')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Bode magnitude and phase data\n", "Use the SciPy function [bode](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html) to plot the magnitude and phase of the filter." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "w, mag, phase = signal.bode(system_lp, w=w)\n", "\n", "fig, ax1 = plt.subplots()\n", "ax1.set_ylabel('magnitude, dB')\n", "ax1.set_xlabel('frequency, Hz')\n", "\n", "plt.semilogx(w/(2*np.pi), mag,'-k') # Bode magnitude plot\n", "\n", "ax1.tick_params(axis='y')\n", "plt.grid(which='both', axis='both')\n", "\n", "# instantiate a second y-axes that shares the same x-axis\n", "ax2 = ax1.twinx()\n", "color = 'tab:blue'\n", "\n", "plt.semilogx(w/(2*np.pi), phase,':',color=color) # Bode phase plot\n", "\n", "ax2.set_ylabel('phase, deg',color=color)\n", "ax2.tick_params(axis='y', labelcolor=color)\n", "#ax2.set_ylim((-5,25))\n", "\n", "plt.title('Bode plot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### plot poles and zeros" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "k = 10980315993618949271977984.0\n" ] } ], "source": [ "z, p, k = signal.tf2zpk(system_lp[0],system_lp[1])\n", "\n", "plt.plot(np.real(z), np.imag(z), 'ob', markerfacecolor='none')\n", "plt.plot(np.real(p), np.imag(p), 'xr')\n", "plt.legend(['Zeros', 'Poles'], loc=2)\n", "plt.title('Pole / Zero Plot')\n", "plt.xlabel('Real')\n", "plt.ylabel('Imaginary')\n", "plt.grid()\n", "plt.show()\n", "print('k = {:.1f}'.format(k))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the impulse and step response\n", "Use the SciPy functions [impulse2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.impulse2.html) and [step2](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.step2.html) to plot the impulse and step response of the system." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAEmCAYAAAAjjrBRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd8leX9//HX52RBwgwj7L2HgAwHjqhVBAfWqhW1jtJSW21rtbba4awdftv6c7WKo9VqxVGtKAjOCCggiAiEGcIKJKywkpB1zvX749w0AUNIMMl9zsn7+XicR8657nHe90XIfV/3fd3Xbc45RERERERERCT6BPwOICIiIiIiIiLHR416ERERERERkSilRr2IiIiIiIhIlFKjXkRERERERCRKqVEvIiIiIiIiEqXUqBcRERERERGJUmrUizQyZna9mc3zO4eIiIiIiHx9atSL+MTMNprZN/zOISIiIpHHzE4zs0/NbJ+Z5ZvZJ2Y22pumE/Qi8j/xfgcQkdhjZvHOuXK/c4iIiEQjM2sBvA38EHgFSAROB0p8yGKAOedCDf3dIlIzulIvEgG8M+6fmNlDZrbXzLLN7FSvfIuZ7TCz6yrN/08ze8LM3jOzA2b2sZl196b1MDNnZvGV5s8ws+9V8b3mfecO70rAMjMb4k1LMrM/m9lmM9vufV/TGuTPB+7xyr9rZqvMbI+Zza6UsbrvPeq2edNPNbNF3nKLzOzUI7bzfi/LATN718zaetOamNkLZrbbq+NFZpbmTWtpZs+YWa6ZbTWz35lZ3PH/i4qIiHwt/QCccy8554LOuYPOuXedc8vMbCDwBHCKmRWY2V6ofr9tZulmlmNmvzKzXV5vwauP9uXe/vQBM/sEKAJ6VbevNLM+3v56n7f+lyuty5nZT7xjm11m9n9mFvCmBczsN2a2yTsmeN7MWnrTDh3PXOdt0y4z+3Wl9Y4xs8Vmtt/b3r9WmnayhXs57DWzL80svc7+ZUQikBr1IpHjJGAZ0Ab4NzANGA30Aa4BHjOzZpXmvxq4H2gLLAVePI7vPA84g/DBQyvg28Bub9qfvPLhXobOwF3HyJ8NtAceMLNLgF8BlwLtgLnASzX43qNum5mlAjOARwjX01+BGWbWptKyVwE3eDkSgZ975dcBLYGu3rI3Age9ac8B5d52jvDyfeUkiIiISANZCwTN7DkzG29mrQ9NcM6tIrwPm++ca+aca+VNOtZ+uwPh/WpnwvvEqWbWv5oM3wGmAM2BTVS/r7wfeBdoDXQBHj1iXd8ERgEnAhOB73rl13uvs4BeQDPgsSOWPQ3oD5wD3OWd1AB4GHjYOdcC6E24RwNm1pnwscLvgFTCxwH/MbN21WyrSFRTo14kcmxwzv3DORcEXibc+LzPOVfinHsXKCW8Iz1khnNujnOuBPg14TP2XWv5nWWEd9YDCHetW+WcyzUzA74P/Mw5l++cOwD8HriymnVtc8496pwrd84dBH4A/MFbZ7m3/HDvqnuV31uDbbsAWOec+5f3PS8Bq4GLKi37D+fcWi/DK4QPbg5taxugj3fV43Pn3H7vav144BbnXKFzbgfw0DG2VUREpN445/YTbsw64Clgp5lNP9TD7Ei12G//1juu+Jhww/eKamL80zmX6e3DU6l+X1kGdAc6OeeKnXNH3u//Jy/XZuD/AZO88quBvzrnsp1zBcCdwJVWqbchcK/XU+FL4EtgWKXv7GNmbZ1zBc65BV75NcBM59xM51zIOfcesBiYUM22ikQ1NepFIsf2Su8PAjjnjiyrfKV+y6E33o4wH+hUmy90zn1I+Iz448B2M5tq4fv42gHJwOde17W9wCyv/Gi2HPG5O/BwpeXzAQM6V/O9x9q2ToSvFlS2ifBVh0PyKr0voqLO/gXMBqaZ2TYze9DMErycCUBupaxPEr7SLyIi4gvvhPf1zrkuwBDC+8D/d5TZa7Lf3uOcK6z0eRPVHzdU3q8fa1/5C8L7+M/MLNPMvnv4qg5bV+XvPXK/vonwmF+VT14cbb8+mXDPhNXeLXUXVsp6+aGcXtbTgI7VbKtIVFOjXiR6/e+qvNctPxXYBhzaYSdXmrfD0VbinHvEOTcSGEx453g7sIvwSYTBzrlW3qulc67Z0dZD+GpCZVuAH1RavpVzrqlz7tNqvvdY27aN8M66sm7A1mpyHdrOMufcvc65QcCpwIXAtV7OEqBtpZwtnHODj7VOERGRhuCcWw38k3DjHr66z63Jfru1maVU+tyN8H71qF9b6X21+0rnXJ5z7vvOuU6Ee+r9zcwq9y6s3JOw8vceuV/vRriLf+WLGlWHc26dc24S4RMLfwJe87ZvC/CvI44/UpxzfzzWOkWilRr1ItFrgoUfd5NI+F62hc65Lc65nYQbudeYWZx3trx3VSsws9FmdpJ3xboQKAaC3gi3TwEPmVl7b97OZjauFvmeAO40s8He8i3N7PLqvvdY2wbMBPqZ2VVmFm9m3wYGER4huFpmdpaZDfUG9dlPuNte0Ov2/y7wFzNr4Q3a09vMzqzFtoqIiNQZMxtgZreZWRfvc1fCXdYPdTHfDnTx9pPUYr99r5klmtnphE9uv1qTPMfaV5rZ5YeyAnsInxCovF+/3cxae9vxU8K3GUJ4rJ2fmVlP7yT+74GXa/IEHTO7xszaedu+1ysOAi8AF5nZOO84qImFBwrscvS1iUQ3NepFote/gbsJd00fSfi+tEO+T/jK927CV8I/Pco6WhA+CNhDuMvbbuDP3rRfAlnAAjPbD7xPeKCaGnHOvUH4zPk0b/kVhO/HO9b3HnXbnHO7CR+E3OYt8wvgQufcrhpE6gC8RrhBvwr4mPCOH8JX7BOBlV6m11A3PRER8c8BwgPQLjSzQsKN+RWE938AHwKZQJ6ZHdoHHmu/nUd4H7eN8AC0N3o9AGqqun3laC9rATAd+KlzbkOlZd8EPic8+O0M4Bmv/FnCt8fNATYQPsn/4xrmOR/I9L7zYeBK737+LYQH4/sVsJPwlfvbUbtHYpg5d2TvHRGJdGb2TyDHOfcbv7PUtVjeNhERET94j3R7wbs/v6G/2wF9nXNZDf3dIo2FzliJiIiIiIiIRCk16kVERERERESilLrfi4iIiIiIiEQpXakXERERERERiVJq1IuIiIiIiIhEqXi/AzS0tm3buh49etTJugoLC0lJSamTdcUC1UcF1UUF1UUF1cXhVB8VqquLzz//fJdzrl0DR4o52v/XH9VHBdVFBdXF4VQfFVQXFepq/9/oGvU9evRg8eLFdbKujIwM0tPT62RdsUD1UUF1UUF1UUF1cTjVR4Xq6sLMNjVsmtik/X/9UX1UUF1UUF0cTvVRQXVRoa72/+p+LyIiIiIiIhKl1KgXERERERERiVJq1IuIiIiIiIhEKTXqRURERERERKKUGvUiIiIiIiIiUUqNehEREREREZEopUa9iIiIiIiISJRqdM+pF6mJYMixaXchm/KLKCwpxzDat0iid7tmpKYk+h1PRCRmmdmzwIXADufckCqmG/AwMAEoAq53zi1p2JQiEquccxSVBtl3sIyi0iAl5UFKykOUlIUoLg9SUhYiGHLVriMuYCTGG4lxcSTEGYnxATbtD7Ju+wES4gIkxgdomhBHclIciXEBwn/WRI6fGvUinmDIMWftTl5bksO8dbvYd7Csyvl6tU3h3MFpXDqiC/07NG/glCIiMe+fwGPA80eZPh7o671OAv7u/RQROapQyLFt30G27S0md99BcvcVk7cv/H7ngRL2Hixj/8Ey9haVUX6MRvtx+3TOV4riAkZyQhxNE+NIToyjaWI8yYfeJ3y1LLnS+5SkeJomxpFyRNmh+eICOlnQWKhRL42ec463l+Xy0Ptryd5ZSGpKIucNSmN0z1R6tk2hZdMEgiHHjgMlrMrdz/z1u3lm7gae/DibM/q149Zz+zG8ayu/N0NEJCY45+aYWY9qZpkIPO+cc8ACM2tlZh2dc7kNElBEIppzjk27i1i+dR/rth9g/c5C1u8sYMOuQkrKQ4fN2zwpng4tm9CueRIDWzalRdMEWiUn0KppAi2bJtA0MY6k+DiSEgI08X4mxQdIiDv6HczOhS8UlQZDlAVDlJWHKAmG+GLpMvoPHExpMHy1/2BZkKLSIAdLwz+LSsu9n0EOlpVTUFLOzgMlh007WBbE1eJ8Q1J8oFIjP9zQT0mKo2lC+OehEwRNDtu+8Oek+DiS4gNHbHt4WmJcHHFxRnzg0Cvwv89xXlm09T4IhRwh5wg6RygEQecIhlyV5aGQN81500L873PLpgl0TU1u8Pxq1Eujtnl3EXe+sYxPsnbTP605j04awbjBHUiM/+of64Ed4cx+7bjxzN7kF5by0meb+ccnG7jk8U+4bGQXfnvhIFo2TfBhK0REGpXOwJZKn3O8sq806s1sCjAFIC0tjYyMjDoJUFBQUGfrigWqjwqqiwoNVRcFpY41e4Ks2xNi0/4gG/eHOFgenmZAu2SjY0qA9C4BOqbE07ZpgNQmRusmRtN4AxxQ7L08jvDNPUUVRSXe63gY0C+lmJT8NaQcOSHJe1W7dAKQgHOO0hCUBKGk3FEchJKgo6QcioPuf+UlXnl4eoiS8hDFwVJKDsKOA0dML3eUhSBYx50TDIgzCAS8nwZxZsQZGCHi58wkYFUP8FZVlCrjVVHogJALvw577xwhDr2vKD9UVldO6RjHD4Y1qfH8dfX/RI16abRmrcjl9leXAfDAN4cwaXQ3AjXsppSakshNZ/XhulN78NiHWTw9N5v563fz1yuGcVKvNvUZW0SksavqD3XVx3vOTQWmAowaNcqlp6fXSYCMjAzqal2xQPVRQXVRob7qorgsyPzs3Xy8ZicLsnezOu8AAInxAQZ2bMGlfVswtHNLhnRuSd+0ZiTFx9V5huMR6b8b5V7jv6Q8RHGZN45AeZDishAlZUGKy8M/D80TDIUo965Ylwe9nyF3eLn3sywYqvgcdORsy6Vd+/aUe1e3rao/6zUrqrJHQPhkghFnRsAs/D4QPqnwv/JAeFp15eGf4ZdZePqxyju1asqQzi1rXO919XuhRr00Os45/v7xeh6ctYZhXVvx+FUj6NL6+LrJNEuK547xAzh/SAdumfYFVz61gDvOH0C/2vSNEhGR2sgBulb63AXY5lMWEWkAe4tKeTdzO++v2s68rF0UlQZpkhBgVPdUfn5eR07u1YYTurSqsqel1Ex8XID4uAAp1fYaqBsZGfmkp4+o/y9qRNSol0bFOccf31nNk3OymTi8Ew9edkKdnMEd3rUVM35yOr94bRl/eGc1Z3WN5/QzQsRXc8+ViIgcl+nAzWY2jfAAeft0P71I7DlYGuT9Vdt5c+k2Pl67g7Kgo1PLJlx6YmfOGZjGKb3a0CQhMq7Ci/hNjXppNJxz3D09k+fnb+LaU7pzz0WDa9zdviZSkuJ5dNIIuqQ25cmPs/nhi0t4/KoTddZYRKQWzOwlIB1oa2Y5wN2EbyjFOfcEMJPw4+yyCN/xeoM/SUWkPizP2ce/P9vM9KVbKSwNktYiietP7cHFwzozpHOLqBuATaQhqFEvjcbjH2Xx/PxNTDmjF3eOH1AvO4VAwLhz/EAKduTw4srt/OSlL3j0qhHVjpIqIiIVnHOTjjHdATc1UBwRaQDFZUFeX7KVf3+2iRVb99MkIcAFQzvxrZGdOalnGz2aTeQY1KiXRuHVxVv487truXRE53pr0Fd2bvcE+vTpw71vreSWl5fyyJUjtEMSERERqWRvUSnPz9/Ec59uZHdhKQM6NOe+iYOZOLyznigkUgtq1EvM+3zTHu58fTmn923LH791QoN127phbE/KgiF+P3M1ac2bcNdFgxrke0VEREQi2a6CEv6esZ6XPttMUWmQs/q34wdn9uaknqnqXi9yHNSol5iWX1jKzf9eQqdWTXnMh/vbp5zRm7x9JTz7yQa6t0nmulN7NOj3i4iIiESKA8VlPD13A0/PzeZgWZCJwzvzgzN7MaBDC7+jiUQ1NeolZoVCjlteXsruwlJe/+GpvnXj+vUFA9myp4h738qkW5tkzurf3pccIiIiIn4oC4Z4YcEmHv0wi/zCUiYM7cCt5/anT/tmfkcTiQkavUti1tPzspmzdid3XzSIIZ1b+pYjLmA8fOVwBnRowS3TlrIlv8i3LCIiIiINaWH2bi58ZB73vrWSgR2b8+ZNY/nb1SPVoBepQ2rUS0zK2lHAn99dy3mD0rhqTDe/45CcGM/frzmRkHP86MUlFJcF/Y4kIiIiUm/2Fof42ctL+fbUBRSUlDP1OyN5YfJJDOvayu9oIjFHjXqJOcGQ4/bXviQ5MY7ffXNIxAy40r1NCn+5fBjLt+7j/rdX+h1HREREpM4553h18RbunHeQGcty+fHZfXj/1jM5b3CHiDkmE4k1uqdeYs4z87L5YvNeHr5yOO2bN/E7zmHOG9yBH5zRiyfnZJPevz3nDkrzO5KIiIhIncjbV8ydry/jozU76dc6wJOTz6Bn2xS/Y4nEPDXqJabk7jvIQ++t4xsD07h4WCe/41TptvP6M3fdLn75n2UM63p6xJ14EBEREamt15fkcPf0TMqCIe6+aBDdSzeqQS/SQNT9XmLK72asIuQcd180KGK7eCXGB3j4yuEUlpTzy9eW4ZzzO5KIiIjIcSksKefWl5dy6ytfMqBDc2b99AxuGNuTQIQeh4nEIjXqJWZ8mrWLGcty+VF6H7qmJvsdp1p905pz5/gBfLRmJ69+nuN3HBEREZFaW7ltPxc9No83lm7llm/0ZdqUU+ihq/MiDU6NeokJ5cEQd0/PpGtqU35wZi+/49TItaf0YEyPVB6YsYodB4r9jiMiIiJSI845XliwiUv+9gkFxeW8+L2TuOUb/YgL6Oq8iB/qrVFvZl3N7CMzW2VmmWb2U6/8HjPbamZLvdeESsvcaWZZZrbGzMZVKj/fK8syszsqlfc0s4Vmts7MXjazxPraHolsryzOYd2OAn5zwSCaJMT5HadGAgHjD98aysHSIPe+pdHwRUREJPIVlwX52ctL+c1/V3ByrzbM/OnpnNq7rd+xRBq1+rxSXw7c5pwbCJwM3GRmg7xpDznnhnuvmQDetCuBwcD5wN/MLM7M4oDHgfHAIGBSpfX8yVtXX2APMLket0ci1MHSIP/v/bWM6t6a86JsNPne7Zrxk3P6MGNZLu+t3O53HBEREZGj2rb3IJc98SlvfrmN287txz+vH03bZkl+xxJp9OqtUe+cy3XOLfHeHwBWAZ2rWWQiMM05V+Kc2wBkAWO8V5ZzLts5VwpMAyZaeBS0s4HXvOWfAy6pn62RSPbsJxvYcaCEX44fELGD41Vnyhm9GdChOb/97woOFJf5HUdERETkKxZtzOfix+axcVcRT187ih+f05eAutuLRIQGeaSdmfUARgALgbHAzWZ2LbCY8NX8PYQb/AsqLZZDxUmALUeUnwS0AfY658qrmP/I758CTAFIS0sjIyPja28TQEFBQZ2tKxb4UR8FpY7H5hQxon0chRuXkbGxQb/+qGpbF1f0CHL/gmJ+/s8PmTQgts546/9JBdXF4VQfFVQXIhLJXl28hV+9sZwurZOZNmUkfdo39zuSiFRS7416M2sG/Ae4xTm338z+DtwPOO/nX4DvAlWd6nNU3ZvAVTP/VwudmwpMBRg1apRLT0+v5VZULSMjg7paVyzwoz7++M5qioPr+dPVY+mXFjk7mNrWRTqwLrSMVxfncPulsbWz1P+TCqqLw6k+KqguRCQSOed45IMsHnp/Laf1acvjV51Iy+QEv2OJyBHqdfR7M0sg3KB/0Tn3OoBzbrtzLuicCwFPEe5eD+Er7V0rLd4F2FZN+S6glZnFH1EujUR+YSnPz9/IRSd0iqgG/fH6+Xn9SU6M457pK/XsehEREfFVeTDEna8v56H313LpiZ159vrRatCLRKj6HP3egGeAVc65v1Yq71hptm8CK7z304ErzSzJzHoCfYHPgEVAX2+k+0TCg+lNd+FWz0fAZd7y1wFv1tf2SOR5dt4GDpYFufnsPn5HqRNtmiVx67n9mJe1i9mZGjRPRERE/FFUWs73n1/MtEVb+PHZffjL5cNIjNeTsEUiVX12vx8LfAdYbmZLvbJfER69fjjhrvIbgR8AOOcyzewVYCXhkfNvcs4FAczsZmA2EAc865zL9Nb3S2Camf0O+ILwSQRpBPYWlfLPTzcyYUjHmLhKf8g1J3dn2qIt/G7GStL7t4uax/OJiIhIbNhfXMYN/1jEF5v38MA3h3D1Sd39jiQix1BvjXrn3Dyqvu99ZjXLPAA8UEX5zKqWc85lU9F9XxqRZz/ZSEFJecxcpT8kPi7A3RcNZtJTC3hqTjY/Pqev35FERESkkdhTWMq1z37Gqtz9PHbViUwY2vHYC4mI79SPRqJOUWk5z326kXMHpTGwYwu/49S5U3q3YdzgNJ6ck82ughK/44iIiEgjsPNACVdOXcCa7QeYeu1INehFooga9RJ1Xl2cw76DZdx4Zi+/o9SbX5w/gINlQR75YJ3fUURERCTGbd9fzLefnM/m/CL+cf1ozh6Q5nckEakFNeolqgRDjmfmbWBEt1aM7J7qd5x607tdM64a041/L9xM9s4Cv+OIiIhIjNp5oIRJTy1g+/5inp88hrF92vodSURqSY16iSrvZuaxOb+IKafH7lX6Q35yTl+S4gM8OGuN31FEREQkBuUXlnLN0wvJ3VvMP24Yw+gesXvBRCSWqVEvUeWpudl0S03mvMEd/I5S79o1T+LGM3szKzOPxRvz/Y4jIiIiMWRfURnfeWYhG3cX8sx1oxjTUw16kWilRr1Ejc835bNk816+O7YHcYGqHqwQeyaf3pP2zZN4cNYanHN+xxEREZEYUFBSzrX/+Iy12w/w5HdGcqq63ItENTXqJWo8NWcDLZsmcPmorn5HaTDJifHcfHYfPtuYz7ysXX7HERERkShXWh7ixn99zoqt+3jsqhNJ79/e70gi8jWpUS9RYeveg7y7Mo+rTupGSlK833Ea1LdHd6VTyyb85d21ulovIiIixy0Ucvz81S+Zl7WLP1w6lHGN4HZGkcZAjXqJCi8t3IwDrj6pm99RGlxSfBw/OacvS7fs5cPVO/yOIyIiIlHq9zNXMf3Lbdw+rj9XNKKejyKxTo16iXil5SGmLdrMOQPa06V1st9xfPGtkV3olprMX95dSyikq/UiIiJSO1PnrOfpeRu4/tQe/Ci9t99xRKQOqVEvEW9WZh67Ckq5+uTufkfxTUJcgFu+0ZeVufuZnZnndxwRERGJIm98kcPvZ67mgqEd+e2FgzBrHAMOizQWatRLxHthwSa6pjblzL7t/I7iq4nDO9O7XQp/fW8tQV2tFxERkRpYmL2bX7y2jJN7pfLXbw9rNE8QEmlM1KiXiLYm7wCfbcjnmpO6E2jkO6G4gPGzc/uxbkcBby/b5nccEZF6Y2bnm9kaM8syszuqmN7NzD4ysy/MbJmZTfAjp0ik27y7iBtf+Jyuqck8ec0okuLj/I4kIvVAjXqJaC8s2ERifKBRPcauOhOGdKR/WnMe/TBL99aLSEwyszjgcWA8MAiYZGaDjpjtN8ArzrkRwJXA3xo2pUjkO1BcxuTnFhFy8Mx1o2mZnOB3JBGpJ2rUS8QqLCnnjS+2cuHQjqSmJPodJyIEAsZNZ/cha0eB7q0XkVg1BshyzmU750qBacDEI+ZxQAvvfUtA3ZdEKgmGHD956Qs27Crk71efSM+2KX5HEpF61Lge+C1RZcbyXApKypnUCB9jV50LhnbkoffW8uiHWZw/pIMGuxGRWNMZ2FLpcw5w0hHz3AO8a2Y/BlKAb1S1IjObAkwBSEtLIyMjo04CFhQU1Nm6YoHqo0Kk1MVLq0v4aGM51w5KpDRnBRk5DZ8hUuoiUqg+KqguKtRVXahRLxHr1cVb6NUuhVHdW/sdJaLEBYwfpffm9teW8dGaHZw9IM3vSCIidamqM5VH3m80Cfinc+4vZnYK8C8zG+KcCx22kHNTgakAo0aNcunp6XUSMCMjg7paVyxQfVSIhLp4ZdEWZm9cxvWn9uCeiwf7liMS6iKSqD4qqC4q1FVdqPu9RKT1OwtYtHEPV4zqqivRVbhkRGc6t2rKIx9k4ZzurReRmJIDVB5IpQtf7V4/GXgFwDk3H2gCtG2QdCIRbFnOXn7z5gpO69OW31ww0O84ItJA1KiXiPTq4hziAsalJ3b2O0pESogL8MP03izdspdP1+/2O46ISF1aBPQ1s55mlkh4ILzpR8yzGTgHwMwGEm7U72zQlCIRJr+wlB++sIR2zZJ4ZNII4uN0mC/SWOh/u0Sc8mCI/yzJ4az+7WnfvInfcSLWZSO7kNYiiUc+WOd3FBGROuOcKwduBmYDqwiPcp9pZveZ2cXebLcB3zezL4GXgOudui1JIxYMOX467Qt2Hijhb1efqAGGRRoZ3VMvESdjzU52HijhilFd/I4S0ZokxDHljN7c//ZKPtuQz5ieqX5HEhGpE865mcDMI8ruqvR+JTC2oXOJRKqH31/L3HW7+MOlQxnWtZXfcUSkgelKvUScVxZvoW2zJM4a0N7vKBFv0piutElJ5LGPsvyOIiIiIj74YNV2HvkwiytGdeHK0V2PvYCIxBw16iWi7DxQwoerd/CtEzuToHvBjik5MZ7Jp/dkztqdLMvZ63ccERERaUCbdxdxy8tLGdypBfdNHKLBhUUaKbWaJKK89eU2ykOOy0aq631NXXNyd5onxfPknGy/o4iIiEgDKS0PcfNLSzDgiWtG0iQhzu9IIuITNeolovx36VaGdG5B37TmfkeJGi2aJHDVyd14Z3kum3YX+h1HREREGsD/zV7Nspx9PHjZCXRNTfY7joj4SI16iRhZOwpYlrOPS4brMXa19d2xPYkPBHh67ga/o4iIiEg9+3D1dp6au4FrT+nO+UM6+h1HRHymRr1EjDeXbiVgcPGwTn5HiTppLZrwzRGdeWXxFnYXlPgdR0REROpJ3r5ifv7qMgZ2bMGvJgz0O46IRAA16iUiOOd444utjO3TlvYt9Gz64/H9M3pRUh7iufmb/I4iIiIi9SAYctzy8hcUlwV57KrkQaVhAAAgAElEQVQRuo9eRIB6bNSbWVcz+8jMVplZppn91CtPNbP3zGyd97O1V25m9oiZZZnZMjM7sdK6rvPmX2dm11UqH2lmy71lHjEN+Rm1Pt+0h5w9B/nmCHW9P1592jfj3EFpPD9/I0Wl5X7HERERkTr22IdZLMjO576JQ+jdrpnfcUQkQtTnlfpy4Dbn3EDgZOAmMxsE3AF84JzrC3zgfQYYD/T1XlOAv0P4JABwN3ASMAa4+9CJAG+eKZWWO78et0fq0RtfbKVpQhzjBnfwO0pUu/HMXuwtKuPlRVv8jiIiIiJ16PNNe3j4g7VcOqKznhIkIoept0a9cy7XObfEe38AWAV0BiYCz3mzPQdc4r2fCDzvwhYArcysIzAOeM85l++c2wO8B5zvTWvhnJvvnHPA85XWJVGktDzE28tyOW9wGilJ8X7HiWoju6cyqntrnp67gbJgyO84IiIiUgcKS8q59ZWldGrVlHsnDvY7johEmAZpQZlZD2AEsBBIc87lQrjhb2btvdk6A5UvL+Z4ZdWV51RRXtX3TyF8RZ+0tDQyMjK+1vYcUlBQUGfrigXHWx9Ltpez72AZveN2x0x9+vm7MbZNOQ9vKuHPL3/IKZ38P0mi/ycVVBeHU31UUF2ISHUemLmKzflFvDzlFJo3SfA7johEmHo/4jezZsB/gFucc/urue29qgnuOMq/WujcVGAqwKhRo1x6evoxUtdMRkYGdbWuWHC89fHKi5/Ttlk+P7r0bOLjYmPsRj9/N84IOWbkzGHOzgB3TDoNv4ea0P+TCqqLw6k+KqguRORoPly9nX8v3MwPzujFmJ6pfscRkQhUry0oM0sg3KB/0Tn3ule83es6j/dzh1eeA3SttHgXYNsxyrtUUS5RZH9xGe+v2sFFwzrFTIPeb4GAMeWMXqzK3c/cdbv8jiMiIiLHKb+wlF+8tpwBHZpz63n9/I4jIhGqPke/N+AZYJVz7q+VJk0HDo1gfx3wZqXya71R8E8G9nnd9GcD55lZa2+AvPOA2d60A2Z2svdd11Zal0SJdzO3U1oe0rPp69jE4Z1Ia5HEk3PW+x1FREREjoNzjl+/sZx9B0v56xXDSYrX4+tEpGr1eWl0LPAd4GwzW+q9JgB/BM41s3XAud5ngJlANpAFPAX8CMA5lw/cDyzyXvd5ZQA/BJ72llkPvFOP2yP14O1l2+jSuinDu7byO0pMSYqP4/pTe/JJ1m5W5e73O46IiIjU0htfbOWdFXncdl5/BnVq4XccEYlg9XZPvXNuHlXf9w5wThXzO+Cmo6zrWeDZKsoXA0O+Rkzx0d6iUuat28Xk03v6ft93LLpqTDce+WAdz8zbwJ8vH+Z3HBEREamhrXsPcvebmYzpkcr3T+/ldxwRiXC6iVl8Mzszj/KQ48Kh6npfH1omJ3DFqC68uXQrO/YX+x1HREREasA5xx3/WUbIOf58+TDiArrwISLVU6NefPP2sly6t0lmSGd1KasvN4ztSXnI8fz8TX5HERERkRp4edEW5q7bxZ0TBtKtTbLfcUQkCqhRL77YXVDCp+t3c8HQjup6X496tE3h3IFpvLBwEwdLg37HERERkWrk7jvIAzNWcXKvVK4a083vOCISJdSoF1/MyswjGHJceIK63te3753ei71FZfxnSY7fUUREROQonHP86vXllIccf/rWCQTU7V5EakiNevHF21/m0qtdCgM7Nvc7Sswb3aM1J3RpybPzNhAKOb/jiIiISBVeX7KVj9bs5PZx/eneJsXvOCISRdSolwa340AxCzfs5kJ1vW8QZsbk03qSvauQj9bs8DuOiIiIHGHH/mLufSuTUd1bc/2pPfyOIyJRRo16aXCzVuQRcnDhMHW9bygThnakU8smPD13g99RREREpBLnHL/57wpKykP86TJ1uxeR2lOjXhrc28ty6du+Gf3S1PW+oSTEBbh+bA/mZ+9mxdZ9fscRERERz9vLcnl35XZuPbcfvds18zuOiEQhNeqlQW3fX8yijfkaIM8H3x7djZTEOJ6Zp6v1IiIikSC/sJS7p2cyrEtLJp/W0+84IhKl1KiXBjVjWS7OwQUndPQ7SqPTsmkCV4zuyltfbiNvX7HfcURERBq9B2asYv/BMv502QnEx+mwXESOj/56SIOasTyXAR2a06e9upf54YZTexJyjufmb/Q7ioiISKP2adYu/rMkhyln9GJAhxZ+xxGRKKZGvTSY7fuL+XzTHiYM1VV6v3Rrk8y4wR14ccEmCkvK/Y4jIiLSKBWXBfn1f1fQvU0yPzmnr99xRCTKqVEvDWZ2Zh4A44d08DlJ4/a903uyv7ic/yzJ8TuKiIhIo/T4R1ls2FXIA5cMpUlCnN9xRCTKqVEvDead5Xn0bpdCX41676sTu7VmeNdWPDtvA8GQ8zuOiIhIo7Ju+wGe+Hg93xzRmdP6tvU7jojEADXqpUHkF5aycMNuxg9R13u/mRnfO70nG3cX8cGq7X7HERERaTRCIcedry8nJSme31ww0O84IhIj1KiXBvHeyjxCDs5X1/uIcP7gDnRu1ZSn5+rxdiIiIg3l5cVbWLxpD7+aMJA2zZL8jiMiMUKNemkQs1bk0aV1UwZ30uiukSA+LsANY3vw2cZ8vtyy1+84IiIiMS+/sJQ/vrOak3qmcvnILn7HEZEYoka91Lv9xWXMy9rF+CEdMDO/44jn26O70iwpnmfm6Wq9iEQWMzvfzNaYWZaZ3XGUea4ws5Vmlmlm/27ojCK19eCs1RSWlPO7S4boeEhE6pQa9VLvPly1g7KgU9f7CNO8SQJXju7KjOW5bN170O84IiIAmFkc8DgwHhgETDKzQUfM0xe4ExjrnBsM3NLgQUVqYcnmPUxbtIXvntZTAwaLSJ1To17q3awVebRvnsSIrq39jiJHuH5sDwCe+3SjrzlERCoZA2Q557Kdc6XANGDiEfN8H3jcObcHwDm3o4EzitRYMOS4680VpLVI0jPpRaRexPsdQGJbUWk5GWt3cPnIrgQC6moWabq0Tmb8kA68tHAzPzmnL82S9CdBRHzXGdhS6XMOcNIR8/QDMLNPgDjgHufcrCNXZGZTgCkAaWlpZGRk1EnAgoKCOltXLFB9VKiqLj7cXMaKraXcOCyJxfPn+RPMB/q9OJzqo4LqokJd1YWO4KVefbxmJ8VlIcar633E+t7pvXh7WS4vL9rC5NN6+h1HRKSqM8DuiM/xQF8gHegCzDWzIc65w0b+dM5NBaYCjBo1yqWnp9dJwIyMDOpqXbFA9VHhyLrYXVDCTz/+mFN6teGXV57UqO6l1+/F4VQfFVQXFeqqLtT9XurVrMw8WicnMKZnqt9R5CiGd23F6B6t+ccnGygPhvyOIyKSA3St9LkLsK2Ked50zpU55zYAawg38kUiyoOz1lBYUs59Ewc3qga9iDQsNeql3pSUB/lw1Q7OHZRGfJx+1SLZ5NN6kbPnILMzt/sdRURkEdDXzHqaWSJwJTD9iHn+C5wFYGZtCXfHz27QlCLHsGTzHl5erMHxRKT+qaUl9eaTrF0cKCln/JCOfkeRYzh3UBrd2yTz9DwdE4uIv5xz5cDNwGxgFfCKcy7TzO4zs4u92WYDu81sJfARcLtzbrc/iUW+SoPjiUhD0j31Um9mrcijeVI8p/Zp43cUOYa4gPHdsT25e3omn2/aw8juelKBiPjHOTcTmHlE2V2V3jvgVu8lEnH+/dlmVmzdzyOTRmgQWhGpd7pSL/WiPBjivZXbOXtge5Li4/yOIzVw2cgutGgSz9NzdbVeRETkeO0uKOHPs9dwSq82XHSCeiuKSP1To17qxcIN+ewpKtOo91EkJSmeq0/uzuzMPDbvLvI7joiISFTS4Hgi0tDqrVFvZs+a2Q4zW1Gp7B4z22pmS73XhErT7jSzLDNbY2bjKpWf75Vlmdkdlcp7mtlCM1tnZi97g+lIhJi1Io8mCQHO6NfO7yhSC9ed0oOAGc9+ssHvKCIiIlFn474gr3y+hRvG9tDgeCLSYOrzSv0/gfOrKH/IOTfce80EMLNBhEe3Hewt8zczizOzOOBxYDwwCJjkzQvwJ29dfYE9wOR63BaphVDIMTszj/R+7UlO1H1k0aRDyyZcNKwTryzewr6DZX7HERERiRrOOV5cVUqblER+rMHxRKQB1Vuj3jk3B8iv4ewTgWnOuRLvebNZwBjvleWcy3bOlQLTgIkW7st0NvCat/xzwCV1ugFy3L7YsocdB0o4X13vo9Lk03pSVBpk2meb/Y4iIiISNd5alsu6vSFuH9efFk0S/I4jIo3IMS+jmlkKcNA5FzKzfsAA4B3n3PFexrvZzK4FFgO3Oef2AJ2BBZXmyfHKALYcUX4S0AbY6z325sj5q9qGKcAUgLS0NDIyMo4z+uEKCgrqbF2x4FB9TFtdSpxB4q61ZGSs8zuWL6L9d2NgaoAnP1pD7+Bm4gNf737AaK+LuqS6OJzqo0Is1kU9HD+IRKyDpUH+MHMV3VsEuGxkV7/jiEgjU5O+0XOA082sNfAB4cb4t4Grj+P7/g7cDzjv51+A7wJVtRocVfckcNXMXyXn3FRgKsCoUaNcenp6rUIfTUZGBnW1rliQkZHBmWeeyV2fZXBa31ZMOHeM35F8E+2/G8G07Ux+bjGFqf2YOPyo58tqJNrroi6pLg6n+qgQo3VRl8cPIhHtiY/Xk7uvmDvHNCHua54MFxGprZp0vzfnXBFwKfCoc+6bhO9vrzXn3HbnXNA5FwKeIty9HsJX2iuf1uwCbKumfBfQyszijygXn63OO8Dm/CLGDVbX+2h2Vv/29GqXwlNzswk/DlpEpNbq7PhBJJJt3XuQJz5ez4UndKR/qh7jKyINr0aNejM7hfCZ9Rle2XGNfmZmlR/W+U3g0Mj404ErzSzJzHoCfYHPgEVAX2+k+0TCg+lNd+FWxkfAZd7y1wFvHk8mqVuzVuRhBucOSvM7inwNgYAx+bSerNi6n4Ubajo0hojIYers+EEkkv1h5ioA7pww0OckItJY1aRR/1PgTuAN51ymmfUi3KCulpm9BMwH+ptZjplNBh40s+Vmtgw4C/gZgHMuE3gFWAnMAm7yruiXAzcDs4FVwCvevAC/BG41syzC99g/U+OtlnozOzOP0d1Tadc8ye8o8jV968QutE5O4Om5erydiByX4zp+EIkmn23I5+1ludx4Zm86t2rqdxwRaaRqcsY8zTl38aEPzrlsM5t7rIWcc5OqKD5qw9s59wDwQBXlM4GZVZRnU9F9XyLA9sIQq/MK+c0FOlMdC5okxPGdk7vz6EdZZO8soFe7Zn5HEpHoclzHDyLRIhhy3PtWJh1bNuHGM3v7HUdEGrGaXKm/s4Zl0sh9viP8MALdTx87rjmlOwmBAM9+oqv1IlJrOn6QmPbq4i1kbtvPnRMG0jRR99KLiH+OeqXezMYDE4DOZvZIpUktgPKql5LGbMn2IIM7taBrarLfUaSOtG/ehEtGdOK1z3O47dz+tE5J9DuSiEQ4HT9IY7C/uIz/m72GUd1bc9EJHY+9gIhIParuSv024HOg2Pt56DUdGFf/0SSabN9fTNbeEOfrKn3MmXxaL4rLQry4cJPfUUQkOuj4QWLeox+sI7+olLsvGoyZHmEnIv466pV659yXwJdm9oI3YJ3IUb27cjsA44aoUR9r+ndozhn92vHc/E18/4xeJMWri6GIHJ2OHyTWZe8s4B+fbOSKkV0Z2qWl33FERKrtfr8ccN77r0x3zp1Qf7Ek2sxekUeHZKNvew2mFou+d1pPrn32M978YhtXjO7qdxwRiWA6fpBY98CMVTRJiOPn4/r7HUVEBKh+9PsLGyyFRLW9RaUsyN7NuO7x6oIWo07v25ZBHVvwxJz1XDayC4GA/p1F5Kh0/CAxK2PNDj5YvYM7xw/Q43tFJGIc9Z5659ymQy/C98UN9V4HvTIRAD5YtYPykGNkmrplxyoz4wdn9iJ7ZyHvrdrudxwRiWA6fpBYVRYMcf/bK+nRJpnrx/bwO46IyP8c85F2ZnYF8BlwOXAFsNDMLqvvYBI9Zmfm0bFlE3q0rMkTEiVaXTC0I11Tm/LEx+txzvkdR0QinI4fJNb8a/4m1u8s5DcXDNL4MiISUarrfn/Ir4HRzrkdAGbWDngfeK0+g0l0KCot5+O1O7lydFcCtsvvOFKP4uMCfP/0Xtz1ZiafbcjnpF5t/I4kIpFNxw8SM3YXlPDQ+2s5vW9bzhnY3u84IiKHqcml1cChHbJndw2Xk0ZgztqdlJSHNOp9I3H5yK6kpiTyxMfr/Y4iIpFPxw8SM/763lqKSoPcdeEgjR8kIhGnJjvXd8xstpldb2bXAzOAmfUbS6LFrBV5tE5OYEyPVL+jSANomhjHDaf24KM1O1mVu9/vOCIS2XT8IDFh5bb9vPTZZr5zcnf6pjX3O46IyFfUpFGfB7xAeJCbE4Cpzrlf1msqiQql5SE+WL2DbwxMIz5OF18ai++c0p3kxDie1NV6Eamejh8k6jnnuO/tTFo2TeBn3+jndxwRkSrVpCXWHLgDGAOsBz6t10QSNeZn7+ZAcTnnq+t9o9IqOZFJY7rx1rJctuQX+R1HRCKXjh8k6s1akceC7HxuPa8/LZMT/I4jIlKlYzbqnXP3OucGAzcBnYCPzez9ek8mEW/WijxSEuMY26et31GkgU0+rScGPDNvg99RRCRC6fhBol1xWZAHZq5iQIfmTBrd1e84IiJHVZs+0zsId6XbDWjYz0YuGHK8t3I76QPa0yRBj3VpbDq1asrE4Z2Ztmgz+YWlfscRkcim4weJSk/PzSZnz0HuunCQbjMUkYhWk+fU/9DMMoAPgLbA951zJ9R3MIlsSzbvYVdBCeMGq+t9Y3Xjmb0oLgvx3Kcb/Y4iIhFIxw8SzfL2FfO3jPWMG5zGqeqRKCIRribPqe8O3OKcW1rfYSR6zF6RR2JcgLP6t/M7ivikb1pzvjEwjefmb+QHZ/YiObEmf05EpBHR8YNErQdnraY86Pj1hEF+RxEROaaa3FN/h3bIUplzjlmZeYzt04bmTTRoTGP2w/Re7C0qY9pnW/yOIiIRRscPEq2WbN7D619sZfLpPenWJtnvOCIix6QbhKTWVubuJ2fPQY16L4zsnsqYnqlMnZNNSXnQ7zgiIiJfSyjkuO+tlbRrnsRNZ/XxO46ISI2oUS+1NntFHgGDbwxM8zuKRIAfn92HvP3FvLo4x+8oIiIiX8ubX25l6Za9/GJcf5ol6bYyEYkOatRLrb2zIo/RPVJp0yzJ7ygSAU7r05YR3Vrx94z1lAVDfscRERE5LoUl5fzxndWc0KUl3zqxi99xRERqTI16qZV12w+wbkcBE4Z29DuKRAgz4ydn92Xr3oO8sWSr33FERESOyxMfr2f7/hLuvmgQgYD5HUdEpMbUqJdaeWdFHmbofno5THr/dgzt3JLHM7Io19V6EfmazOx8M1tjZllmdkc1811mZs7MRjVkPok9W/KLeHJONhOHd2Jk91S/44iI1Ioa9VIrM5fnMqp7a9JaNPE7ikQQM+Pms/uwaXcRby3b5nccEYliZhYHPA6MBwYBk8zsK88VM7PmwE+AhQ2bUGLRH99ZTcDgl+cP8DuKiEitqVEvNbZ+ZwGr8w4wfoi63stXnTswjQEdmvPYh1kEQ87vOCISvcYAWc65bOdcKTANmFjFfPcDDwLFDRlOYs+C7N3MWJ7LD8/sQ6dWTf2OIyJSaxrWU2ps1oo8AMYPVdd7+apAIHy1/uZ/f8E7K3K58IROfkcSkejUGdhS6XMOcFLlGcxsBNDVOfe2mf38aCsysynAFIC0tDQyMjLqJGBBQUGdrSsWRHN9hJzjnk+LSW1iDLAcMjK+3tgw0VwXdU11cTjVRwXVRYW6qgs16qXGZizL5cRurejYUmexpWrjh3Skd7u1PPZhFhOGdNRAQyJyPKr6w/G/7j9mFgAeAq4/1oqcc1OBqQCjRo1y6enpdRIwIyODulpXLIjm+pj22WY2H1jOo5NGMG7Y1z8ZHc11UddUF4dTfVRQXVSoq7pQ93upkY27ClmZu1+j3ku14ryr9avzDvDequ1+xxGR6JQDdK30uQtQebCO5sAQIMPMNgInA9M1WJ7U1v7iMv5v9hpG92jNhSfo+EZEole9NerN7Fkz22FmKyqVpZrZe2a2zvvZ2is3M3vEG+V2mZmdWGmZ67z515nZdZXKR5rZcm+ZR8xMlwTr0cwVuQCMV6NejuGiEzrRo00yj364Dud0b72I1NoioK+Z9TSzROBKYPqhic65fc65ts65Hs65HsAC4GLn3GJ/4kq0euzDLPKLSrnrwsHoMFJEoll9Xqn/J3D+EWV3AB845/oCH3ifITzCbV/vNQX4O4RPAgB3E76Xbgxw96ETAd48Uyotd+R3SR16Z3kew7q2orMGkJFjiI8LcNNZfVixdT/vrdTVehGpHedcOXAzMBtYBbzinMs0s/vM7GJ/00ms2LCrkH98soHLR3ZhaJeWfscREfla6q1R75ybA+QfUTwReM57/xxwSaXy513YAqCVmXUExgHvOefynXN7gPeA871pLZxz8134UuDzldYldWxLfhHLt+7jAg2QJzX0zRGd6dk2hb++t5aQrtaLSC0552Y65/o553o75x7wyu5yzk2vYt50XaWX2npgxkqS4uP4+bj+fkcREfnaGnqgvDTnXC6Acy7XzNp75VWNdNv5GOU5VZRXSaPffj0zN5QC0LpgExkZW446X2Opj5pQXcC4TuU8sayEuS0dgUZeF4fo9+Jwqo8KqguRhvPx2p28v2oHd4wfQPvmTfyOIyLytUXK6PdHG+m2tuVV0ui3X89DmZ8wtLPj8gmnVTtfY6mPmlBdwBkhx0fb5/JOTgG/vvYM4uM0Lqd+Lw6n+qiguhBpGKXlIe6dnkmPNsncMLaH33FEROpEQx9lb/e6zuP93OGVH22k2+rKu1RRLnUsZ08RX27Zq1HvpdYCAeNn5/Yjr9Dx36X67ykiIv579pMNZO8q5O6LB5MUH+d3HBGROtHQjfrpwKER7K8D3qxUfq03Cv7JwD6vm/5s4Dwza+0NkHceMNubdsDMTvZGvb+20rqkDr2zPA+A8UN0P73U3rjBaXRvEeDhD9ZSWh7yO46IiDRiefuKeeSDdXxjYBpn9W9/7AVERKJEfT7S7iVgPtDfzHLMbDLwR+BcM1sHnOt9BpgJZANZwFPAjwCcc/nA/YQfb7MIuM8rA/gh8LS3zHrgnfralsZs+pfbGNq5JT3apvgdRaKQmfGtvglsyT/Iq58ffTwGERGR+vb7masoDznuunCQ31FEROpUvd1T75ybdJRJ51QxrwNuOsp6ngWeraJ8MTDk62SU6m3YVcjyrfv49YSBfkeRKDa0bRwju7fm0Q+y+NaJXWiSoO6OIiLSsOav3830L7fx03P60q1Nst9xRETqlEaukqN668vwfdAXDtP99HL8zIzbzutH3v5iXly42e84IiLSyJQFQ9wzPZMurZvyw/TefscREalzatRLlZxzTP9yG2N6pNKxZVO/40iUO7V3W07t3Ya/fZTFgeIyv+OIiEgj8q/5m1iz/QC/vXCQeouJSExSo16qtCr3AFk7CrhoeCe/o0iMuGP8AHYXljJ1TrbfUUREpJHYeaCEh95byxn92nHeoDS/44iI1As16qVKby3bRlzAmKBR76WOnNClFRcP68RTc7PZvr/Y7zgiItII/GnWaorLg9x90SDCD0wSEYk9atTLVzjneOvLbZzWpy1tmiX5HUdiyO3j+hMMOR56b63fUUREJMZ9vmkPr32ew+TTetG7XTO/44iI1Bs16uUrlmzeS86eg1w0TF3vpW51TU3m2lN68MriLazdfsDvOCIiEqOCIcddb64grUUSPz67j99xRETqlRr18hVvfbmNxPgA4wbr3jOpezef1YeUpHj+9M5qv6OIiEiM+vfCTWRu28+vLxhESlK9PcFZRCQiqFEvhwmGHG8vy+Xs/u1p3iTB7zgSg1qnJHLTWX34YPUO5q/f7XccERGJMTsOFPPg7DWc2rsNF52gx/KKSOxTo14OsyB7N7sKSrhYo95LPbr+1B50atmEP7yzilDI+R1HRERiyAMzVlFSFuL+S4ZocDwRaRTUqJfDvL5kK82T4jl7QHu/o0gMa5IQx23n9WdZzj7eWrbN7zgiIhIj5q3bxZtLt3Fjem8NjicijYYa9fI/RaXlvLMilwtO6EiThDi/40iMu2REZwZ3asEf31lNUWm533FERCTKFZcF+e2bK+jeJpkfpff2O46ISINRo17+Z3ZmHkWlQS49sYvfUaQRiAsY91w8mNx9xTyRsd7vOCIiEuWe/P/t3XecVPW9//HXZ2Z3tgJLl94RkSrNGAtCNGiuYGIBo1ETE2OsiT9N9Hpzo1FTNDfRdMnV2HKDitFgFI0l2JBQpEiVpS5FYFlgd9k25fv7Yw7MLoIiuzNnZ/b9fDCPOXPmzNnPfJiZ7/dzyve8uZ4Npfu5e8oQ7ZwQkRZFRb0c9Lf3t9KjXR6je7X1OxRpIcb0bsfk4V156K31lJRV+R2OiIikqQ2l+/ndnGLOG96V0wd29DscEZGUUlEvAHy0r4Z3ikv58sjuBAIaVEZS5/ZzBxEw4ycvrfI7FBERSUPOxa9JnxMM8MMvneB3OCIiKaeiXgB4bvFWnIOvjOzmdyjSwnRpk8e14/sxe/lHzC0u9TscERFJMy8s287ba0u5ddLxdGqd63c4IiIpp6JecM7xt/e3MKpXW3p3KPA7HGmBvnV6X3q0y+OuF1YSicb8DkdERNLEvqowP35hJcO6t+HScb38DkdExBcq6oXlW8tZu7OSCzRAnvgkNzvIHecOZs2OCh5/b5Pf4YiISJq458WV7Kmq46dfGUpQpw+KSAulol6YuaiEUFaALw3t4nco0oJ98cTOnDGwI7989UM+2lfjdzgiIjBlRMUAACAASURBVNLMvb12F88s2sI1Z/TlxK5t/A5HRMQ3KupbuJpwlOcWb+WcIcfRJj/b73CkBTMz7p4yhHA0xl0vrPA7HBERacb210a4/W8f0LdjATdMGOB3OCIivlJR38LNXr6d8poIU8f08DsUEXq2z+fGiQOYvfwj3li9w+9wRESkmfrFP9ewdW81910wTNekF5EWT0V9C/fX+SX0bp/P5/q29zsUEQC+dVpfBnQq5IfPr6CqLuJ3OCIi0sws2rSHR+du5Gsn92J073Z+hyMi4jsV9S3Y+l2VzN9QxsVjemCmwWWkeQhlBbj3y0PZureaB19f63c4IiLSjNRGovzg2WV0aZ3L9ycN8jscEZFmQUV9C/bUghKCAePCURr1XpqXsX3acfHo7jz89gZWbS/3OxwREWkmfvN6McU7K7n3K0MpzMnyOxwRkWZBRX0LVReJ8ez7W5g4qBOdWuX6HY7Ix9x+zgkU5Wdz68ylhHXtehGRFm/x5j384c11XHBSd848vpPf4YiINBsq6luo11ftoLSyjkvG9vQ7FJHDalsQ4p7zh7B8azkPvbnO73BERMRH1XVR/t/TS+ncKocfTR7sdzgiIs2KivoW6i//3kyXNrmcPrCj36GIHNGkIV04b3hXHnx9Las/0mH4IiIt1c9fXs360v3cf9FwWufqErwiIvWpqG+BindW8E5xKZed3ItgQAPkSfN21+QTaZ2bzS3P6DB8EZGW6N3iUh6du5ErT+nN5/t38DscEZFmR0V9C/TY3E2EsgJM07XpJQ20q3cY/vS31vsdjoikgJlNMrM1ZlZsZrcd5vmbzWylmS0zs9fNrJcfcUryldeEufWZpfTtUMAPNNq9iMhh+VLUm9lGM/vAzJaY2UJvXjsze9XM1nr3bb35Zma/9hr2ZWZ2Ur31XOEtv9bMrvDjvaSb8powz76/hfOGdaV9YY7f4YgclXOGduFLw7rwwGsfajR8kQxnZkHgd8A5wGDgEjM79CTqxcBo59wwYCZwX2qjlFS5a9ZKdlTU8supI8gLBf0OR0SkWfJzT/2ZzrkRzrnR3uPbgNedcwOA173HEG/UB3i3q4E/QHwjAPAjYBwwFvjRgQ0BcmQzF26hqi7Klaf09jsUkc/k7ilDKMoPceNfF1MTjvodjogkz1ig2Dm33jlXB8wAptRfwDn3L+dclfdwHqBrs2ag2R9s59n3t3Dt+H6M6FHkdzgiIs1Wc7rA5xRgvDf9GDAH+IE3/3HnnAPmmVmRmXXxln3VOVcGYGavApOAv6Y27PQRizkef28jJ/UsYmj3Nn6HI/KZtCsI8cuLh/O1h+dz74uruPv8IX6HJCLJ0Q0oqfd4C/EN+EdyFTD7cE+Y2dXEdwjQuXNn5syZ0yQBVlZWNtm6MkEy8lFaHeO/362mT5sAw7O2MWfO9iZdf7Los5GgXDSkfCQoFwlNlQu/inoH/NPMHPCQc2460Nk5tx3AObfdzA5cgPRwjXu3T5j/MWrU45btirBxdy2TukWTEne65SOZlIuEps7FpN7ZPDFvE+3qPmJkp+a0XfLT6XPRkPKRoFw0cLgRXN1hFzS7DBgNnHG4573+xXSA0aNHu/HjxzdJgHPmzKGp1pUJmjofkWiMqdPnEQiGeezq0+jZPr/J1p1s+mwkKBcNKR8JykVCU+XCrx7x551z27zC/VUzW/0Jyx6pcT/qRl+NetyfH5lPx1bl3HzxBEJZTX/mRbrlI5mUi4SmzsUpp8b4yh/e5fHV1Xx10sl0bp3bZOtONn0uGlI+EpSLBrYA9Udy7Q5sO3QhM/sCcAdwhnOuNkWxSQo88NpaFm3aw68vGZlWBb2IiF98OafeObfNu98JPEf8/Lkd3mH1ePc7vcWP1LgfVaMvcau2l/Pmh7u44nO9klLQi6RKKCvAg9NGUhOOcfPTS4jFDrstT0TS1wJggJn1MbMQMA2YVX8BMxsJPARM9voSkiHmFpfyuznFXDy6O5OHd/U7HBGRtJDy6s7MCsys1YFp4GxgOfEG+8AI9lcAf/emZwGXe6Pgnwzs8w7TfwU428zaegPkne3Nk8OY/tZ68kNBvnZyb79DEWm0fh0LuXPyYN4t3s2v31jrdzgi0oSccxHgeuJt+irgaefcCjP7sZlN9ha7HygEnvGupDPrCKuTNFJaWct3n1pC3w4F3Dn5RL/DERFJG34cft8ZeM7MDvz9/3POvWxmC4CnzewqYDNwkbf8S8C5QDFQBXwdwDlXZmZ3E9+iD/DjA4PmSUNb9lQxa+k2rjylN23ys/0OR6RJXDy6B/M37OHB19cyvEcRZx7f6dNfJCJpwTn3EvH2v/68/643/YWUByVJFYnGuOH/FrOvOsxj3xhLfii9xkwREfFTyn8xnXPrgeGHmb8bmHiY+Q647gjregR4pKljzDQPv7MBA646tY/foYg0GTPj3i8PYdX2cr47Ywn/uOFUerTTuZciIuno/lfW8N763fzPRcM5oUtrv8MREUkrOrk6w+3ZX8eM+SVMHtGVrkV5focj0qRys4P88bJROOe45slFun69iEgaeumD7Tz01nq+dnIvLhjV3e9wRETSjor6DDf97fXURKJ854x+focikhQ92+fzwLQRrNhWzg+fX0784B4REUkHxTsruPWZpYzsWcQP/2Ow3+GIiKQlFfUZbHdlLY/N3ch5w7oyoHMrv8MRSZoJgzpz48QBPLNoCw+/s8HvcERE5CiU14T59hOLyAsF+f2lJ+nqPCIix0ijkGSw6W+vpzoc5caJ/f0ORSTpvjtxAGt3VHDvS6vo1b6AswZ39jskERE5ggMD423aXcUTV42jSxudIigicqy0STRDlVbW8vjcTUwe3pX+nbSXXjJfIGD88uIRDOvWhhv/upjlW/f5HZKIiBzBPS+u4s0Pd3H3+UP4XL/2focjIpLWVNRnqN//ax21kSg3TBjgdygiKZMXCvKnK0bTriDEVY8tYPu+ar9DEhGRQzzx3kYenbuRb57ah0vG9vQ7HBGRtKeiPgNt2r2fJ+Zt5KJRPejfqdDvcERSqlOrXB6+cjT7a6N849GFlNeE/Q5JREQ8b324iztfWMnEQZ24/dwT/A5HRCQjqKjPQPe9soasQICbzx7odygivhh0XGt+d+lJrN1RwTcfXahL3YmINAMrt5Vz3V/eZ0CnQh68ZCTBgPkdkohIRlBRn2He37yHF5dt51un96Vz61y/wxHxzRkDO/KrqSNYsKmMa//yPuFozO+QRERarM27q7jiz/MpzM3i4SvHUJijsZpFRJqKivoMEos57n1xFR0Kc/j26X39DkfEd+cN78o95w/hjdU7ueWZpURjuoa9iEiq7ayo4bKH/004GuOJq8bSrUgj3YuINCVtJs0gMxdtYdGmPdx3wTAKtAVcBIBLx/ViX3WY+16On5Zy34XDdMiniEiK7KsOc8UjCyitrOUv3xynK/KIiCSBKr8MUba/jp/MXsWY3m25cFR3v8MRaVauHd+fcMTxq9c+xDnH/RcNV2EvIpJkVXURvvXYQop3VvDwFWMY2bOt3yGJiGQkFfUZ4mezV1FZE+Ge84cSULEi8jE3fWEAAYP/efVDYs7xi4uGkxXUGUgiIslQVRfh639ewMJNZfz6kpGcPrCj3yGJiGQsFfUZYO66Up5euIVvn9GX44/TYW0iR3LDxAEEAsb9r6xhf12U31wyktzsoN9hiYhklAMF/YKNZTwwbST/Mayr3yGJiGQ07aZKc/uqw9zy9FL6dijgpokD/A5HpNm77sz+3HneYF5btYPLH57Pvmpdx15EpKlU1jYs6CcPV0EvIpJsKurT3F2zVrCjopZfTh1BfkgHXogcjSs/34dfTxvJ4pI9TH3oPT7aV+N3SCIiaW93ZS2XTJ/Hwk17VNCLiKSQivo09uKy7fxt8VauO7M/I3oU+R2OSFo5b3hX/nzlWErKqpj823dYWrLX75BERNLWlj1VXPTH9/hwRwV/unyUCnoRkRRSUZ+m1u6o4PszlzKiRxE3TOjvdzgiaenUAR3427WfJ5QV4OKH3uPvS7b6HZKISNopqYhx4R/eo7Sylie/OY4Jgzr7HZKISIuioj4NldeE+fYTi8gLBfnDZSeRrRG8RY7Z8ce14u/XfZ7hPYq4acYSfjp7FeFozO+wRETSwqsrd3DPvGocjqe+/TnG9G7nd0giIi2OqsE0E4nGuPmpJWwqq+K3Xz2JLm3y/A5JJO21L8zhyavGcem4njz05noumT6P7fuq/Q5LRKTZcs7x0JvruPqJhXQtCDDr+lM5oUtrv8MSEWmRVNSnEeccdzy3nNdW7eRH5w3m5L7t/Q5JJGOEsgLc++WhPDhtBKu2l3Pug2/zxuodfoclItLsVNZGuHHGEn46ezXnDu3CbeNy6dw61++wRERaLBX1aeTnL6/hqYUl3DihP5d/rrff4YhkpCkjujHrhlPp3DqXbzy6kNueXUZFjS57JyICsGp7OZN/8w4vLtvGrV88nt9MG0lO0PwOS0SkRVNRnwacc/x09ir++OY6Lju5J987a6DfIYlktH4dC/n79Z/nO+P78fTCEiY98DbvFpf6HZaIiG+cczw5bxPn/+5dKmoj/N+3Tua6M/sTCKigFxHxm4r6Zi4SjfH9mct46M31XHZyT+6aPAQzNaAiyZaTFeQHkwbxzDWnEMoKcOn//pubZixmZ7muaS8iLcu2vdVc/sh8/uv55Yzt046XbjxNpwCKiDQjWX4HIEe2q6KW7z21hHeKS/nuFwZw08QBKuhFUmxUr7bMvuk0fj9nHX+cs443Vu3ke2cN5LKTexHK0nZREclcsZjjqYUl/OTFVUSd457zh3DpuJ7qi4iINDMq6pupuetKuWnGEsqrw9x3wTAuHtPD75BEWqzc7CA3nzWQL4/sxo9mreDH/1jJY+9t5Jazj+dLQ7vo8FMRyThLSvbyo78vZ+mWfYzr0477LxxOz/b5foclIiKHoaK+mSmtrOVns1czc9EW+nYs4ImrxjLoOF0iRqQ56NOhgMe+PoY5H+7i57NXc8NfFzP9rfVcd2Z/zh7cWcW9iKS9krIqHnx9Lc++v4UOhTk8MHUEU0Z01d55EZFmLO2LejObBDwIBIH/dc79zOeQjsnuyloee28Tf353AzXhKNec0Y8bJ/YnP5T2/0UiGcXMOPP4Tpw+oCPPL97Kg6+v5ZonF9GvYwHXnNGPKSO66bB8EUk7O8pr+O0bxcxYsBkz41un9eWGCf1plZvtd2giIvIp0rpiNLMg8DvgLGALsMDMZjnnVvob2dGJRGPMXbebWUu38Y9l26gJxzhrcGduO2cQ/ToW+h2eiHyCYMC4YFR3pozoykvLP+IPc9Zx68xl/OKfa5g6pidTx/SgW1Ge32GKiHyi5Vv38ed3N/LC0m3EnGPqmB5cP6E/Xdro90tEJF2kdVEPjAWKnXPrAcxsBjAFaHZFfSQaY8ueajaU7mfNjgoWbixj/oYyymsitMrJ4vwR3fjmaX3p30nFvEg6yQoGmDy8K+cN68KcNbt4dO5GfvPGWn7zxlrOGNiRqaN7cOagTuRmB/0OVY6Cc45w1FEbiVIXiVEbiVEXiRGJOaL1bpFY7JDHDacHdi6krzbOSjNVXRdl9vLtzFhQwvwNZeSHglwytgdXndpX582LiKShdC/quwEl9R5vAcal4g+/vPwjHllSw9NbF3kdOYi5eIcu5uK3mnCMfdVh9lWH2bO/jkjMHXx93w4FnDOkCxNO6MQZAzuqwy+S5syMMwd14sxBnSgpq+LphSU8vbCE7/zlffJDQSYM6kSvQISxdRGdVtMEnHOU10TYW1VHRU2EytoIVXURKmuj7K+NeLco++vizx14XFUXoSYcpdYr2GsjUWrD9aYjMZz79L//af7z3EFcraJempG6SIx563cze/l2Xli6ncraCL3a53PHuSdw8ZgetMnTYfYiIukq3XuWhxu15WPdMTO7GrgaoHPnzsyZM6fRf3ju5jCb9kXYUrmDQPxvEDDiN8AMsgNQlG10a2O06phF53zjuIIAxxUEaBUCKINdZczbtbrR8TQHlZWVTZLbTKBcJLTUXIwKwYiTg6wuy2XBjghvrt5ORR08tPQVBrQNcGL7IIM7BOndOkCghQ5AdeCzEYk5KsOO/XVQGY5PV9Z592ES0wfnOfaHIXYUxXcoADlZkBs0crOM3CCEgpAVMPICkJ0L2flGdgCyA0Gyg0Fv2psXhCyDoBmBAAQP/M7bgWk7zDwoqtnMnDklnx7gIbkQaSrOOUrKqpm3YTfvrC3lX6t3UlEbIS87yLlDu3Dx6O6M7dNOA+CJiGSAdC/qtwD1r/XWHdh26ELOuenAdIDRo0e78ePHN/oPjwcmzJlDU6wrU8xRPg5SLhJaei4meveRaIzpz/+LPbldeHttKTPXVsDaMIU5WQzt1oYRPYsY3r2IE7u2pltRXlqOpO+co6ouyp6qOvZWhdlTVUfZ/sT0gfs9VWH2VtWxfXeA6lgtlbWRI64zJytA2/wQRfnZdGgXYkBBNkX5IdrmZ9M2P0Tb/BCtcrMozMkiPyeLwpwgBTlZ5IeyKAgFyQqmx6CFLf17cqhPGwTXzHKAx4FRwG5gqnNuY6rjbE72VtWxcns5K7eVs3zrPuZvKGPbvhoA2heEOGfocZw9+DhOHdBBRweKiGSYdC/qFwADzKwPsBWYBnzV35BERD4uKxhgcPsg48cPBmBXRS1z15WycOMelpTs5U9vrT94ik5udoC+HQrp16mQfh0L6FaUx3FtcunSJpfOrXOTPhq1c479dVH2VtXFTyGqCrO3OszeqvjpRHur6+LzDinW91aFqYvGjrjeVrlZXiEeL8gLYgEG9el+cF6RV6QX5WfTtiBEu/wQeSEVHy3NUQ6CexWwxznX38ymAT8HpqY+2tQIR2Ps2V9HWVUdZZV1bNtXQ0lZFVv2VFOyp4rNu6v4qLzm4PKdWuUwpk87vtOnHeP6tmdAp0LtkRcRyWBpXdQ75yJmdj3wCvGt+Y8451b4HJaIyKfq2CqHKSO6MWVENwBqwlFWbCvnwx0VFO+sZN2uShZv3sM/lm372DneedlB2uRl0zovi9a52bTOyyY/FCQ7GCA7aN59gKyAEXMQjcWIuoYDudWGY1TVRdhfFz/PvKo2SlVd/Bz0qroo0U84tj0UDFCUn02bvHhx3qt9PiN6FFFUkN2gQG9XkJguysv+2F7z+N7pE5s8t5L2jmYQ3CnAnd70TOC3ZmbONcWICJ+seGcFM1bX8k7lShzx8XQO/FXnXIN5DuL3Bx/H72PetPePcDRGTThKTThGdThKdV2UmkiUmrooFbURKmo+fjSLGRzXOpfubfM4pV97jj+uFYO7tuaELq3pUJiT7DSIiEgzktZFPYBz7iXgJb/jEBFpjNzsIKN6tWVUr7YN5teEo+wor+GjfTV85N3vrKiloiZMeXWE8powOytqqKqNEo7FiEQd4WhixPaAGcFAvZv3ODc7QH4oi/xQkE6tcslvHyQ/FDw4r01etle4hw4W8EX52RTlhcjNDmivnyTT0QyCe3AZbwP/PqA9UFp/oWSMqbNsV4Q3Noexkg0Y8eIaODht3jQHps0ODgBUfxnqTQcNQkEj5I35EAoYhUEIFRo5baB1KJtWIaMwZLTKNtrmGu3zjOyAAXXxm9tLdCss39rot/iZaUyIBOUiQbloSPlIUC4SmioXaV/Ui4hkstzsIL3aF9CrfYHfoYikytEMgntUA+Uma0ydYR01BkJ9GhMiQblIUC4aUj4SlIuEpspFeowgJCIiIi3F0QyCe3AZM8sC2gBlKYlORESkmVFRLyIiIs3JwUFwzSxEfBDcWYcsMwu4wpu+EHgjFefTi4iINEc6/F5ERESajSMNgmtmPwYWOudmAQ8DT5hZMfE99NP8i1hERMRfKupFRESkWTncILjOuf+uN10DXJTquERERJojHX4vIiIiIiIikqZU1IuIiIiIiIikKRX1IiIiIiIiImlKRb2IiIiIiIhImlJRLyIiIiIiIpKmrKVd1tXMdgGbmmh1HYDSJlpXJlA+EpSLBOUiQbloSPlI+KRc9HLOdUxlMJlI7X9SKR8JykWCctGQ8pGgXCQ0Sfvf4or6pmRmC51zo/2Oo7lQPhKUiwTlIkG5aEj5SFAu0ov+vxpSPhKUiwTloiHlI0G5SGiqXOjwexEREREREZE0paJeREREREREJE2pqG+c6X4H0MwoHwnKRYJykaBcNKR8JCgX6UX/Xw0pHwnKRYJy0ZDykaBcJDRJLnROvYiIiIiIiEia0p56ERERERERkTSlov4IzGySma0xs2Izu+0wz+eY2VPe8/82s971nrvdm7/GzL6YyriT4VhzYWZnmdkiM/vAu5+Q6tibWmM+F97zPc2s0sxuSVXMydTI78kwM3vPzFZ4n5HcVMbe1BrxPck2s8e8HKwys9tTHXtTO4pcnG5m75tZxMwuPOS5K8xsrXe7InVRJ8+x5sPMRtT7jiwzs6mpjbxlUvufoPa/IfUBEtT+J6j9b0h9gISUtv/OOd0OuQFBYB3QFwgBS4HBhyxzLfBHb3oa8JQ3PdhbPgfo460n6Pd78ikXI4Gu3vQQYKvf78evXNR7/lngGeAWv9+Pz5+NLGAZMNx73L4Ff0++CszwpvOBjUBvv99TknPRGxgGPA5cWG9+O2C9d9/Wm27r93vyMR8DgQHedFdgO1Dk93vK5Fsjv8tq/zO0/W9sPuo9nxF9gEZ+NtT+Z2j7/xnycaQ2L6P6AI3MxWdu/7Wn/vDGAsXOufXOuTpgBjDlkGWmAI950zOBiWZm3vwZzrla59wGoNhbX7o65lw45xY757Z581cAuWaWk5Kok6MxnwvM7HziP1ArUhRvsjUmH2cDy5xzSwGcc7udc9EUxZ0MjcmFAwrMLAvIA+qA8tSEnRSfmgvn3Ebn3DIgdshrvwi86pwrc87tAV4FJqUi6CQ65nw45z50zq31prcBO4GOqQm7xVL7n6D2vyH1ARLU/ieo/W9IfYCElLb/KuoPrxtQUu/xFm/eYZdxzkWAfcS3Nh7Na9NJY3JR3wXAYudcbZLiTIVjzoWZFQA/AO5KQZyp0pjPxkDAmdkr3mFH309BvMnUmFzMBPYT3wq7GfiFc64s2QEnUWN+AzPt9xOa6D2Z2VjiW/rXNVFccnhq/xPU/jekPkCC2v8Etf8NqQ+QkNL2P+uzrriFsMPMO/QyAUda5mhem04ak4v4k2YnAj8nvnU2nTUmF3cBv3LOVXob7TNBY/KRBZwKjAGqgNfNbJFz7vWmDTFlGpOLsUCU+OFVbYG3zew159z6pg0xZRrzG5hpv5/QBO/JzLoATwBXOOcO3bMhTUvtf4La/4bUB0hQ+5+g9r8h9QESUtr+a0/94W0BetR73B3YdqRlvMNm2gBlR/nadNKYXGBm3YHngMudc+m+h6kxuRgH3GdmG4HvAv9pZtcnO+Aka+z35E3nXKlzrgp4CTgp6REnT2Ny8VXgZedc2Dm3E3gXGJ30iJOnMb+Bmfb7CY18T2bWGngR+C/n3Lwmjk0+Tu1/gtr/htQHSFD7n6D2vyH1ARJS2v6rqD+8BcAAM+tjZiHig1rMOmSZWcCBURkvBN5w8dEMZgHTvJEu+wADgPkpijsZjjkXZlZE/MN4u3Pu3ZRFnDzHnAvn3GnOud7Oud7AA8BPnHO/TVXgSdKY78krwDAzy/cauDOAlSmKOxkak4vNwASLKwBOBlanKO5kOJpcHMkrwNlm1tbM2hLfu/dKkuJMlWPOh7f8c8DjzrlnkhijJKj9T1D735D6AAlq/xPU/jekPkBCatt/1wxGB2yON+Bc4EPi5y/c4c37MTDZm84lPoJpMfFGu2+9197hvW4NcI7f78WvXAD/RfxcoSX1bp38fj9+fS7qreNO0nzk26bIB3AZ8QGDlgP3+f1e/MoFUOjNX0G8Y3Or3+8lBbkYQ3wL9n5gN7Ci3mu/4eWoGPi63+/Fz3x435HwIb+hI/x+P5l+a+Tvmtp/l5ntf2M/G/XWcScZ0Ado5PdE7b/LzPb/KPPRYvoAx5oLjqH9N++FIiIiIiIiIpJmdPi9iIiIiIiISJpSUS8iIiIiIiKSplTUi4iIiIiIiKQpFfUiIiIiIiIiaUpFvYiIiIiIiEiaUlEvkqHMrMjMrq33uKuZzfQzJhEREUk+9QFEWhZd0k4kQ5lZb+AfzrkhPociIiIiKaQ+gEjLoj31IpnrZ0A/M1tiZvebWW8zWw5gZlea2fNm9oKZbTCz683sZjNbbGbzzKydt1w/M3vZzBaZ2dtmNuiT/uBnWO+NZrbSzJaZ2QxvXoGZPWJmC7zlp3jzg2b2CzP7wFv+hqRmTUREJP2pDyDSgmT5HYCIJM1twBDn3Ag4uNW+viHASCAXKAZ+4JwbaWa/Ai4HHgCmA9c459aa2Tjg98CET/m7R7Pe24A+zrlaMyvyXncH8IZz7hvevPlm9pr3mj7ASOdc5ECnQERERI5IfQCRFkRFvUjL9S/nXAVQYWb7gBe8+R8Aw8ysEDgFeMbMDrwmp7Hr9aaXAX8xs+eB5715ZwOTzewW73Eu0BP4AvBH51wEwDlX9tnfqoiIiNSjPoBIBlFRL9Jy1dabjtV7HCP+2xAA9h7Yyt+E6wX4EnA6MBn4oZmdCBhwgXNuTf2VWbw3ocE/REREmo76ACIZROfUi2SuCqDVsb7YOVcObDCziyDesJrZcG/6y2b202NZr5kFgB7OuX8B3weKgELgFeAGrwHHzEZ6L/kncI2ZZXnzdeidiIjIJ1MfQKQFUVEvkqGcc7uBd81suZndf4yruRS4ysyWAiuAKd78fkD5Ma4zCDxpZh8Ai4FfOef2AncD2cAybzCfu73l/xfY7M1fCnz1GP+uiIhIi6A+gEjLokvaichnZmZPAt9zzu3yOxYRERFJHfUBRJofFfUiIiIiIiIi+ksl0AAAAFNJREFUaUqH34uIiIiIiIikKRX1IiIiIiIiImlKRb2IiIiIiIhImlJRLyIiIiIiIpKmVNSLiIiIiIiIpCkV9SIiIiIiIiJpSkW9iIiIiIiISJr6/9EQPK4J48bsAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# figsize() function to adjust the size\n", "plt.subplots(figsize=(15, 5))\n", "\n", "# using subplot function and creating\n", "# plot one\n", "plt.subplot(1, 2, 1)\n", "\n", "# impulse response\n", "t, y = signal.impulse2(system_lp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Impulse response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# using subplot function and creating plot two\n", "plt.subplot(1, 2, 2)\n", "\n", "t, y = signal.step2(system_lp,N=500)\n", "plt.plot(t/1e-3, y)\n", "plt.title('Step response')\n", "plt.ylabel('volts')\n", "plt.xlabel('time, msec')\n", "plt.grid()\n", "\n", "# space between the plots\n", "plt.tight_layout(4)\n", "\n", "# show plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot the group delay.\n", "The following python code calculates and plots [group delay](https://en.wikipedia.org/wiki/Group_delay_and_phase_delay#). Frequency components of a signal are delayed when passed through a circuit and the signal delay will be different for the various frequencies unless the circuit has the property of being linear phase. The delay variation means that signals consisting of multiple frequency components will suffer distortion because these components are not delayed by the same amount of time at the output of the device.\n", "\n", "Group delay: $\\tau _{g}(\\omega )=-\\frac {d\\phi (\\omega )}{d\\omega }$" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('Filter group delay')\n", "plt.semilogx(w/(2*np.pi), -np.gradient(phase)/np.gradient(w)/1e-3,'-',label='group delay')\n", "#plt.semilogx(w/(2*np.pi), -np.gradient(phase)/w/1e-3,'-',label='phase delay')\n", "plt.ylabel('Group delay, msec')\n", "plt.xlabel('Frequency, Hz')\n", "#plt.ylim((0,20))\n", "plt.legend()\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The group delay graph shows that the delay through the filter is constant for frequencies below 10kHz. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Filter synthesis example\n", "The following example walks through the filter design steps for a low pass filter using the SciPy analog filter functions. Specifications for the filter are determined and the order of the filter is calculated. The type of filter selected for implementation is a passive Butterworth filter implemented with capacitors and inductors in a ladder topology. At this point in the design process, filter design tables are used and the normalized element values for a ladder topology are obtained. In this example. I'm going to calculate the normalized values using partial fraction decomposition following the Cauer method. \n", "\n", "### Filter specification\n", "The following filter Specifications are derived from the system requirements. The engineer has determined that a low pass filter is needed and that a passive filter using capacitors and inductors with Butterworth characteristics will meet the system requirements and design goals.\n", "\n", "Required: Design a low pass filter meeting the following specifications: \n", "- Low pass Butterworth filter, implemented with inductors and capacitors \n", "- 3dB attenuation frequency of 1kHz\n", "- 20dB minimum stop band attenuation at 2kHz\n", "- $R_{source}$ = $R_{load}$ = 1000 ohms\n", "\n", "Using the Butterworth filter order selection function, determine the order of the filter required." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order = 4, -3dB cutoff frequency = 1000.59 Hz\n" ] } ], "source": [ "fp = 1e3 # passband edge frequency, Hz\n", "gpass = 3 # The maximum loss in the passband (dB)\n", "\n", "fs = 2e3 # stopband edge frequency, Hz\n", "gstop = 20 # The minimum attenuation in the stopband (dB)\n", "\n", "# uncomment filter type to use\n", "order, Wn = signal.buttord(fp*2*np.pi, fs*2*np.pi, gpass, gstop,analog=True)\n", "\n", "print('order = {:.0f}, -3dB cutoff frequency = {:.2f} Hz'.format(order,Wn/(2*np.pi)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The filter order meeting the attenuation requirements is 4.\n", "\n", "### Plot the Bode magnitude and phase data\n", "Use the SciPy function [bode](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html) to plot the magnitude and phase of the filter. The gray areas are the keep out areas specified above." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbcAAAEaCAYAAACSFRnbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd8VFX6+PHPk56Q0LuUoSsdKaIgJISmI6CIfcWCsiquurqrw2JXdBSXle+KhVV+LoorrAXBoYOxrKJip4hSBqT3QEhm0s7vj5lgxJSbxp1JnvfrlZdz7z3n3CcY8nDuPUWMMSillFLVSYTdASillFKVTZObUkqpakeTm1JKqWpHk5tSSqlqR5ObUkqpakeTm1JKqWpHk5tSFSAiDhExIhJVBW17RWRoZberVE2gyU3VOMGkkSUiGSJyREQ8ItLS7rjKS0SSRWSn3XEoFUo0uamaapQxJhFoBuwD/mlzPEqpSqTJTdVoxhgf8BbQueCciNQRkTkickBEtovI/SISEbwWKSLPiMhBEdkKOAu3F6z7iojsEZFdIvK4iEQWdW8ReVhE3hKReSJyXES+FpEexZSNFZFnRWR38OvZ4LlawBKgebAnmiEizSvpj0epsKXJTdVoIpIAXAGsKXT6n0AdoC0wGBgP3BC8djNwEdAL6AOMO6XJfwO5QPtgmeHATSWEMAb4L1AfeANYICLRRZSbAvQHegI9gH7A/caYE8AFwG5jTGLwa3fp37lS1ZsmN1VTLRCRo8AxYBgwDQI9MwLJbrIx5rgxxgv8Hbg2WO9y4FljzC/GmMPAkwUNikgTAonmLmPMCWPMfuAfwJUlxPGVMeYtY0wOMB2II5DETnUN8KgxZr8x5gDwSKGYlFKnqPQRXkqFiYuNMSuDyWwM8KGIdAYMEANsL1R2O3BG8HNz4JdTrhVoDUQDe0Sk4FzEKeVPdfKaMSY/ODCkqMeKzYuISR8/KlUM7bmpGs0Yk2eMeQfIAwYCB4EcAomqQCtgV/DzHqDlKdcK/AL4gYbGmLrBr9rGmC4lhHCyreB7vRZAUY8VdxcRU0E53dpDqVNoclM1mgSMAeoBG40xecB8YKqIJIlIa+Bu4PVglfnAHSLSQkTqAa6Ctowxe4DlwN9FpLaIRIhIOxEZXEIIvUVkbHCe3F0EkuOaIsr9B7hfRBqJSEPgwUIx7QMaiEidcv4xKFXtaHJTNdUiEckg8M5tKnCdMWZ98NqfgBPAVuATAgM9Zgev/QtYBnwHfA28c0q74wk81twAHCEwErNZCXG8R+Ad3xEC79DGBt+/nepxYC3wPfBD8N6PAxhjfiSQ/LaKyFEdLakUiG5WqpQ9RORhoL0x5g92x6JUdaM9N6WUUtWOrclNRGaLyH4RWVfoXH0RWSEiPwf/W8/OGJVSSoUfWx9LisggIAOYY4zpGjz3NHDYGOMWERdQzxhzn21BKqWUCju2v3MTEQfwfqHktglINsbsEZFmQJoxppONISqllAozofjOrUlwSHXB0OrGNsejlFIqzITtCiUiMhGYGDzsHRsba2c4SikVdvx+vzHGhGInp8JCMbntE5FmhR5L7i+qkDFmFjALoFatWubEiROVcvO0tDSSk5Mrpa1QvH9ltV+RdspatyzlrZStrDLhbMWKFXTt2tXWGNatW1dlMVRW2xVpp6x1y1LeSlkrZZo3b55lOcAwE4oZeyFwXfDzdQQmuSqllFKW2T0V4D/AZ0AnEdkpIhMANzBMRH4msFq7284YlVJKhR9bH0saY64q5lLqaQ1EKaVUtRKKjyWVUkqpCtHkppRSqtrR5KaUUqraqRbJzUREcfhEtt1hKKWUChHVIrnlxdfjz/O+PXn8+prtfLblkI0RKaWUslO1SG6RvnQmpbQHwBjD00t/ZNn6vSePb/h/X/DuNztPls/P1z3slFKqOqsWyU3ysunXpn7gswhfTBnKXUM7AJCZnccJfx7+nHwAjvly6PbwMt76KpDscvLy2XkkE7sXkFZKKVV5qkVyO1VcdCR1E2IAqBUbxfxbzuXKfq0A8Ofkc1mflrRrVAuAH/ccZ+BTH7B0XaCnl5Ft+GzLIXw5efYEr5RSqsKqZXIrSaOkWB4e3YVerQJ7oDatE8djF3eltyNw/P3BPK761xq2HMgAYMuBDFZs2KfJTimlwkiNS26napQUy7X9W9M4KQ6Ano0imX19H85sWhuA977dzR9fW0tOXuCx5mdbDrHwu93k6Xs7pZQKWaG4K4CtEqKF5DObnDy+Lbkdw85qQlJcNAD//eoXPttyiFHdmwGwYsM+4qIjOL9DI1viVUop9Xua3EoRFx1JtxZ1Th5PG9eD3UezEBEA/rn6Z5Liok4mt3e/2Un7Rkm/qaOUUur00uRWRpERQsv6CSeP5//xXA5m+AHIyzc8uGA9F/c642RyW7Z+L+e0qX9ygItSSqmqV+PfuVVUXHQkLeoFkl1khPDxfSn8aUhgzt2OQ5n88bWveOfrXQD4cvL4ce8xnXaglFJVTJNbJaubEEPj2oHBKS3qxfPubecxqkdzAD7beoiRz37MRz8fBMCfm6cTypVSqgqEbHITkZEisklENouIy+54yiMiQujVqh6NkmIB6NGiLk9d2o3+bQMTzueu2cG57lUczdR1MZVSqjKF5Ds3EYkEZhLYiXsn8KWILDTGbLA3soqpXyuGK/q2OnncqWkSzm7NT76Pm758Exs2+0lOtilApZSyyOHyPAzcDBwInvqb1+1cHLw2GZgA5AF3eN3OZac7vpBMbkA/YLMxZiuAiLwJjAGKTW4+n+/k54KRjFaOT72Wl5dHXl6epbKnHpfVgPYNGdC+4cnjDH8e/kJzxed9uYOeLevRqWlShe6jlFJV5B9et/OZwiccLk9n4EqgC9AcWOlweTp63c7TuhJGqCa3M4BfCh3vBM4prnBmZibx8fFVHlRZlDfBGmOYd08EEh1Hk1te5cQ3HjL+9zoAEYkNMCcOl6vdguO8vDwiIyMtlS2p3dzcXKKiokotGxUVRXR0NNHR0cTExBAdHY3f76devXq/Ox8TE0NiYuLvvnbv3s3u3btp0KABjRs3PvkVHR2NUirkjAHe9LqdfmCbw+XZTKDD8tnpDCJUk1tRXaLfjLwQkYnARICIiAgmTJgQKHTKSMSSRiYWVTY7O5uYmJhy1bVyz9LKZmdnn/ylnbP/fcwZEDNuHBnR9fiuyUjOPPgR9bN2lhpDcfcs+P4qGm9OTg7R0dGl3jMvL4/c3Fxyc3NPfvb7/Rhj8Pl8ZGRknDyfk5ODz+cjKyuLzMxM/H5/iXElJSVRv359mjVrRrNmzWjevDn169dn9+7dNGvWrNiedUZGBmlpaSW2baVMOPP5fKxbt67axlBZbVeknbLWLUt5K2VP0//j2x0uz3hgLXCP1+08QqBzsqZQmZ3Bc6dVqCa3nUDLQsctgN2FCxhjZgGzAGrVqmVmzZpVKTdOS0sj2caXXsXdf/8xH3M/38GNA0dQJz6aDzbt59PNB7lzaEcSY63/b6ys768i7Vitm5eXx4kTJ1i2bBndunXj0KFD7N+/n3379rF//37279/P7t272bp1KytWrCAjI+Nk3Tp16tCzZ0969uzJwIEDSU5OpmHDhpbvb/fPQVVbsWIFXbt2tTWGdevWVVkMldV2Rdopa92ylLdS1mJ7USKyttDxrODvVgAcLs9KoGkR9aYALwCPEeh4PAb8HbgRC52T0yFUk9uXQAcRaQPsIvD89mp7Q7JX49px/HlYx5PHG3YfY+n6vbguOAuAbQdP0LxuHLFRkXaFWOkiIyOpXbs2jRo14swzzyyxrDGGgwcPMn/+fKKjo/nmm2/49ttvmTVrFjNmzACge/fupKam4nA4GDRoEBERITtYWKnTJdcY06e4i163c6iVRhwuz7+A94OHpXZOToeQTG7GmFwRuR1YBkQCs40x620OK6RMSmnPTee3ITJCyM833PTvL2lZP4FXb+hnd2i2EBEaNWpEly5dftPjysnJYe3atXzwwQesXr2a559/Hr/fj9vtZuzYsYwfP56+fftWeHCQUjWNw+Vp5nU79wQPLwEKnoEuBN5wuDzTCQwo6QB8cbrjC8nkBmCMWQwstjuOUFbQSxOBh0d3ITIi8Aval5PHI4vWc+OANnRoUrNHWkZHR3Puuedy7rnn8re//Y3jx48zbdo0Nm7cyOzZs5k5cyY9e/Zk4sSJXHvttSQmJtodslLh4mmHy9OTwCNHL/BHAK/bud7h8swnMLo9F5h0ukdKQggnN2WdiPxmV4KNe46x6Ls9jOrenA5NkvDn5hEdEUFEhPZOkpKSGDJkCI8++ijHjh3jjTfe4KWXXuK2227j/vvv58477+T222+3O0ylQp7X7by2hGtTgamnMZzf0ZcO1VCvVvVY87dUzm3XAIB/fbSVYf/4kAx/rs2RhZbatWtzyy238PXXX/Ppp58yYMAAHnroIVq3bs3s2bN/M0BFKRVeqkXPzRjDnj17Si9oQU5OTqW1Zff9jwf/2zg2l74tanH88AFycnLwfPkTZzZOICGm/INPKhJnWeuWpbyVskWVcTgcvPTSS9x5553MmDGD1157jeXLl/PYY49x4403npwbqJQKD9pzqwHOb1uXOwe1ACAz13DPe1v4v4932RxVaOrcuTMvvfQSM2fOpH379kycOJG+ffvy9ddf2x2aUqoMNLnVMAlRwv+Nbc81vRsDsPdYNm98vQ9fTr7NkYWWzp078/HHHzN//nz27t1L3759+etf/0pmZqbdoSmlLNDkVgN1a5ZIy7qBbXnSthzlxU93czRL38edSkS47LLL2LBhAzfddBPPPPMM3bp147PPTusqQkqpctDkVsNd2asxb17bmaa1A0uOPf/JLlb+dMTmqEJL3bp1eemll/jwww/Jz8/n/PPP57HHHvvNAttKqdCiyU3RvE5gvzl/bj5f/nKcn/bro7eiDBo0iG+//ZYrrriCBx98kOTkZHbu3Gl3WEqpImhyUyfFRkXwypWdmNC/GQAb953A9f4WDp7IsTmy0FGnTh3mzp3La6+9xrfffsvZZ59drRdYVipcaXJTvxEhQmxU4MdixxE/mw/6iI/SH5NT/eEPf+DLL7+kQYMGDB06lOnTp5e6u4JS6vTR31qqWCPOrM+b4ztTKzYSYwwPL93Gx1uP2h1WyDjzzDP5/PPPGT16NPfccw9XX321jqZUKkRoclMligou2XU0K5eth3wcOqGjKgurXbs2b7/9Nm63m/nz5zN48GD27t1rd1hK1Xia3JQl9RKimX3VmYzuGljS69sD+cz+fA+5efooTkS47777WLBgARs2bOCcc86xfSNQpWo6TW7KsqgIISK4NcymI/l8sPko5vTvQRiyRo0axccff0xOTg4DBgxg+fLldoekVI2lyU2VyxUdo3hxXEeiIyPIzs3nzW/2k5Onq5ycffbZfP755zgcDi688EJefvllu0NSqkbS5KbKrVZsYDHhj7elM+OjnXy3+4TNEYWGli1b8sknnzBs2DBuvvlmnnjiCR1JqdRpZktyE5HLRGS9iOSLSJ9Trk0Wkc0isklERtgRnyqb1A71mHP1mfRpGdgYdfPBLPJr+C/zpKQkFi5cyDXXXMOUKVO45557yM/Xnq1Sp4tdW96sA8YCLxU+KSKdgSuBLgS2J18pIh2NMbrOUYjr0CgBgP3Hs5k4fxOX9WjErQPOsDkqe0VHRzNnzhwaNGjAP/7xDw4ePMgrr7xCdHS03aEpVe3ZktyMMRshMMrsFGOAN40xfmCbiGwG+gG6Um2YaJQYzV2DWtC/dW0A8vINkTV4B/CIiAieffZZGjVqxAMPPMCRI0eYN28eCQkJdoemVLUmdr4LEJE04C/GmLXB4+eANcaY14PHrwBLjDFvFVF3IjARICoqqvfixYsrJSafz0dcXFyltBWK96+s9q2288r6XGrHwLj2kSf/MVPWGMpS3kpZK2X8fj+JiYmWY7Ri4cKFPPvss3Tt2pUnnnii0tsvi+PHj9v6cw5V+7N+un/OK6OuHT/nw4cPzzTG1LIcZBipsp6biKwEmhZxaYox5r3iqhVxrsjsa4yZBcwCSEhIMF27di1XnKdat24dldVWKN6/stq30k5evqHFwZ3Ui4+iW7dm5Y6hLOWtlLVSZtOmTSQnJ1sN0ZLk5GT69+/PNddcwyOPPMKyZcuoX79+pd7DqhUrVtj6cw5V+7N+On/OK6uuHT/n1VmVJTdjzNByVNsJtCx03ALYXTkRqdMtMkK4J7nlyZGCPx3IJCs7n0ib47LT5ZdfTnx8POPGjSM1NZXly5fTqFEju8NSqtqxa0BJcRYCb4jIdAIDSjoAX9gbkqqogseRz3+yi1+O+nmgd80eSTlq1CgWLlzIxRdfTEpKCitXrqRp06IecigVuhwuz2XAw8BZQD+v27m20LXJwAQgD7jD63YuC54fCcwAIoGXvW6nu6ris2sqwCUishM4F/CIyDIAY8x6YD6wAVgKTNKRktXHYxe2YdrodkRFCMYY8vJrbpIbMWIEixcvxuv1MnjwYN0XToWjglHvHxU+6XB5Co96Hwk873B5Ih0uTyQwE7gA6AxcFSxbJWxJbsaYd40xLYwxscaYJsaYEYWuTTXGtDPGdDLGLLEjPlU1kmKjaNsgHoC5X+/n7vc248upuXO/UlJSWLZsGXv27GHQoEF4vV67Q1LKMq/budHrdm4q4tIY4E2v2+n3up3bgIJR7/2AzV63c6vX7cwG3gyWrRK6QomyRd24KOonRBMTVXOnCQAMGDCAlStXcuTIEQYPHszmzZvtDknVLFEisrbQ18RKaPMM4JdCxzuD54o7XyVC7Z2bqiEu6tIAZ+f6iAjpWbnsPZ5Np8Y1c+5Xv379WL16NcOGDWPw4MGkpaXRoUMHu8NSNUOuMaZPcRcdLk+xo969bmdZR70X1ZmqsncTmtyUbQoGmjyT9gtrfznO29d3ISGmZo6l7NWrFx988AFDhgwhJSWFtLQ02rdvb3dYqobzup2VPer9tI2G1+SmbHfH+Wew9ZCvxia2At26dWPVqlW/SXDt2rWzOyylymoh8IbD5Tl11LsAHRwuTxtgF4FBJ1dXVRD6zk3ZrlFiDOcEl+v6zJvOgh8O2hyRfbp3787q1avJysoiJSWFrVu32h2SUkVyuDyXOFyek6PeHS7PMgCv2/m7Ue9etzPP63bmArcDy4CNwPxg2SqhPTcVUt7fcIidR/1ceFZ9YqJq5r+9unfvfrIHl5ycTFpaGm3btrU7LKV+w+t2vgu8W8y1qcDUIs4vBipnrcRS1MzfHipkPTKiDc9d2oGYqIgavQdajx49WLVqFSdOnCAlJYVt27bZHZJSYUWTmwopUZFCUmwU+cYwdeUO5n61z+6QbNOzZ09WrlzJ8ePHSUlJ0XlwSpWBJjcVkvIN+HLyyMqp2QvU9OrVi5UrV3Ls2DGSk5M1wSllkSY3FZKiIoRHL2jDTf2bA+DLrbkrmZx99tmsXLmS9PR0UlJS2L59u90hKRXyNLmpkBURnAd3KMtwzWsbWPbjYZsjsk9Bgjt69CgpKSns2LHD7pCUCmma3FTIqx0DZzVJoHU9ezfXtFvv3r1ZsWIFhw8fZsiQIezatcvukJQKWZrcVMiLjhQev7AtZzYJLM+VnpVrc0T26dOnD0uXLmXfvn2kpqayd+9eu0NSKiRpclNhZdmPhxn36nq8h7PsDsU2/fv3Z8mSJfzyyy8MHTqUAwcO2B2SUiFHk5sKK73OSGRYp3o0TYq1OxRbDRw4kEWLFrFlyxaGDRvG4cM1932kUkWxa7PSaSLyo4h8LyLvikjdQtcmi8hmEdkkIiNKakfVPI2TYrh3SCvioiPIzs2v0fvBDRkyhAULFrBx40ZGjBhBenq63SEpFTLs6rmtALoaY7oDPwGTAUTkdzu4ikjNXk1XFSnfGO5+bwsPLd1Wo1cyGTFiBG+//TbfffcdI0eO5Pjx43aHpFRIsGsn7uXGmIJRAWsIbH0AwR1cjTF+Y0zhHVyV+o0IEVLa1yW1Y72TW+fUVBdddBHz5s3jyy+/xOl0cuLECbtDUsp2Yve/ekVkETDPGPO6iDwHrDHGvB689gqwxBjzVhH1JgITAaKionovXlw5a3H6fD7i4uwbcl7V96+s9ivSTlnrWimfnWeIiRRLZa2U8fv9JCYmWo4xFKxevZqpU6fSo0cPnnzySWJji38vmZGRYfv3V5UxVFbbFWmnrHXLUt5KWStlUlJSMo0xtSwHGUaqbFcAESl2B1djzHvBMlOAXGBuQbUiyheZfY0xs4BZAAkJCaZr164Vjhlg3bp1VFZboXj/ymq/Iu2UtW5p5b/blcEDi7fyzOi2xB3YVmrbVu6/adMmkpOTLccYCpKTk+nQoQPXXXcdzz77LAsWLCg2waWlpdn+/VVlDJXVdkXaKWvdspS3UjYU/h/bqdjkJiINgUnAEWA2MA04H9gC3GOM2VxSw8aYEndwFZHrgIuAVPNr97GkHVyVKlKrerF0bVaLuvFRHLI7GJtde+21ZGdnc9NNN3HZZZfx1ltvERMTY3dYSp12Jb1zewOI5dddVLcC44D3gZcrclMRGQncB4w2xmQWurQQuFJEYkWkTaF7K1WsegnRPHVRO5rVDvRS8mvwABOACRMmMHPmTBYtWsTVV19Nbm7NnfSuaq6SHks2Mcb8TQJv67cbY6YFz/8oIpMqeN/nCCTOFcHBAGuMMbcYY9aLSMEOrrnAJGNMzV4WXlmWbwyvbcyl2aFd3DW4RekVqrHbbruN7Oxs/vznP3Pttdfy+uuvExmpA49VzVFScssDMMYYETl4yrUKTS4yxrQv4VqRO7gqVZoIEaIjISZKMMbU+FGUd911F36/H5fLRWxsLLNnzyYiQtdtUDVDScmtrYgsJDDIo+AzweM2VR6ZUuVwRYdIunU7w+4wQsZ9992H3+/noYceIiYmhhdffFETnKoRSkpuYwp9fuaUa6ceKxUSCnprWw5m8fpX+/jb0FZER9bsX+YPPPAAfr+fJ554gpiYGP75z3/aHZJSVa7Y5GaM+fB0BqJUZdp+xMeXO46xKz0bR/2avVWOiPD444/j9/v5+9//TmxsLBdddJHdYakw53B5LgMeBs4C+nndzrXB8w5gI7ApWHSN1+28JXitN/AqEA8sBu70up1VMgKspKkAP1DMHDOA4NJZSoWkIR3qcU7r2tSK0UEUEEhw06ZNIzs7m+nTp7N3716Sk5Nr/HtJVSHrgLHAS0Vc2+J1O3sWcf4FAotvrCGQ3EYCS6oiuJIeSxb8065gZORrwf9eA2T+vrhSoaVWTCTGGBatP8SANnVoUCva7pBsJSLMmDEDv9/PrFmzOOuss7j//vvtDkuFKa/buRHA4fJYKu9weZoBtb1u52fB4znAxZzu5GaM2Q4gIgOMMQMKXXKJyP+AR6siIKUq097j2fw97Rf2Hc/m5nOb2x2O7USEF154Aa/XywMPPEB8fDz33HOP3WGp6qeNw+X5BjgG3O91Oz8GziCwUEeBncFzRXK4PGOLOJ0O/OB1O/eXFoCV5bdqichAY8wnACJyHlAt1yJT1U+z2rG8fEUn2jWMtzuUkBEREcG9995L3bp1+ctf/kJcXByTJlV06qoKU1EisrbQ8azg0oYAOFyeYpdR9Lqd7xXT5h6gldftPBR8x7bA4fJ0oQzLKwZNAM4FPggeJxN4nNnR4fI86nU7XyuuIlhLbhOA2SJSJxhIOnCjhXpKhYQOjRIAOObL5US2rgkAEBkZyeuvv47f7+f2228nLi6OCRMm2B2WOv1yjTF9irvodTtLXEaxmDp+wB/8/JXD5dkCdCTQUyu8ukJpyyvmA2d53c59AA6XpwmBd3bnAB/x66uyIpU6RtoY85UxpgfQHehpjOlpjPm6tHpKhZJ8Y7j97Z95aKm3Ru//Vlh0dDTz5s1jxIgR3HzzzcydO7f0SkqVwuHyNHK4PJHBz20JLKO41et27gGOO1ye/g6XR4DxQHG9PwBHQWIL2g909Lqdh4Gc0uKwvCuAMeaY1bJKhZoIEW4d0Jy68VHkHdhmdzghIzY2lnfeeQen08l1111HXFwcl156qd1hqTDgcHkuAf4JNAI8DpfnW6/bOQIYBDzqcHlyCax0dUswIQHcyq9TAZZQ8mCSjx0uz/vAf4PH44CPHC5PLeBoafFV2ZY3SoWacx11AFh3AHLzDFGROgweICEhgUWLFjFixAiuuuoq3n33XZxOp91hqRDndTvfBd4t4vzbwNvF1FkLWN3vahKBqQYDCbyv+zfwdnBeXEpplWv20g2qRlq5I48b3/yR7NwKLZFarSQmJrJ48WJ69OjBpZdeysqVK+0OSdVwwSS2FvB43c67CMyLs7z7a5mTm4j0ERFdvE+Fraa1hHYN48nJ03dvhdWpU4dly5bRqVMnRo8ezUcffWR3SKoGc7g8NwNv8esk8TOABVbrl6fn9ifgfRGZV466Stmua4MIHhrhoFasrl5yqvr167NixQpat26N0+lkzZo1doekaq5JwAACc+Xwup0/A42tVi5zcjPGXGeM6QXcVNa6SoWSPcf8TFu9Qx9PnqJx48asWrWKJk2aMHLkSL7+WgdHK1v4vW5ndsGBw+WJouR5cb9RanKTgD+IyIPB41Yi0s8Yc7xc4QbaeExEvheRb0VkuYg0L3Sv/xORzcHrZ5f3HkqVZushH0t/PMzPB7PsDiXkNG/enFWrVlGnTh2GDx/OunXr7A5J1TwfOlyevwHxDpdnGIFRk4usVrbSc3uewCzxq4LHx4GZZY3yFNOMMd2NMT2B94EHg+cvIDAnogOBxTVfqOB9lCrWgDZ1ePuGrnRpqgvuFKV169asXr2a2NhYhg4dyk8//WR3SKpmcQEHgB+APxIYUGJ5MVQrUwHOMcacLSLfABhjjohITHkiLXDKnLla/NrVHAPMMYFZtmtEpK6INDPG7KnI/ZQqTt34wF+Btb8cp0fzWjV+77dTtWvXjlWrVjF48GCGDBnCRx99RNu2be0OS9UAXrczH/hX8KvMpLTVGkTkc+A84MtgkmsELA++dys3EZlKYIZ6OpBijDkgIu8D7kLrWK4C7jPGrC2i/kQuNaOpAAAgAElEQVQCvTuioqJ6L168uCLhnOTz+YiLs2//r6q+f2W1X5F2ylq3LOWtlD21zI7j+Tz2RS5XdIhkaKvAIBO/309iouVRx2EnIyOjTN/fli1buPvuu0lISGDGjBk0bmz5vX6lxWBH2xVpp6x1y1LeSlkrZVJSUjKNMSH16MLh8pS43ZrX7bS03ZqVntv/EZio1ziYkMZhoWsoIsUuuGmMec8YMwWYIiKTgduBhyjDwprBxT1nASQkJJiuXa3OCyzZunXrqKy2QvH+ldV+Rdopa92ylLdS9tQyXYHYhkc4v00dYqICPbdNmzaRnJxsOcZwk5aWVqbvLzk5mZ49ezJkyBCmTJnCRx99RLNmzU5rDHa0XZF2ylq3LOWtlK3KP98qVinbrZWa3Iwxc0XkKyCVQPK52Biz0UI9qwtuvgF4CCS3nUDLQtdKW1hTqUqR2qEeADl5+bqBZzF69+7NkiVLGD58OEOHDiUtLY1GjRrZHZaqZrxu53YAh8szwOt2/ma7NYfLY3m7tWJfMIhI/YIvAgtW/odAItoXPFduItKh0OFo4Mfg54XA+OCoyf5Aur5vU6dLhj+PG/7zI3O/2ld64RrqvPPO4/3332fr1q0MHz6cI0eO2B2Sqr5qOVyegQUHDpenTNutldRz+4rAI0EBWgFHgp/rAjuANuWJNsgtIp0IbGmwHbgleH4xcCGwmUD384YK3EOpMkmMjeTsFkm0axAPOel2hxOykpOTee+99xg1ahQjR45kxYoV1K5d2+6wVPUzAZjtcHnKtd1aSTtxtwEQkReBhcaYxcHjC4Ay7/FzSttFLjseHCWpuyYq29ydHHgqvmnTXpsjCW3Dhw/nrbfeYuzYsTidTpYuXUqtWiE1LkGFOa/b+RXQw+Hy1AbE63aW6V+cVsY99y1IbADGmCXA4LKFqVT4MMbwwY4cXluz3e5QQtqoUaN44403+PTTTxk9ejRZWToZXlU+r9t5rKyJDawlt4Micr+IOESktYhMAQ6VPUSlwsf3B/NI+3G/bmxaissuu4xXX32VDz74gHHjxpGdnV16JaVOAyvJ7SoCm9G9S2BF5sb8ulqJUtWOiPDH7rG8fF0fHTlpwbXXXstLL73E4sWLufLKK8nJKXWTZKWqnJWpAIeBO09DLEqFjLgoQURIz8ph/a50zmvf0O6QQtrNN9+Mz+fjjjvuYPz48bz++utERuquC6ryOFyePsAer9u5y0r5UpObiHxAEROpjTFDyh6eUuHlkYXrWbFxH59NTiUxVjeuL8mf/vQnsrKyuO+++4iLi+OVV14hIkKXM1OV5k9Ad4fL85PX7byitMJW/rb+pdDnOOBSILecwSkVVu4Z0YnrBzg0sVl07733kpWVxcMPP0x8fDwzZ87UR7uqUnjdzusAHC5PkpXyVh5LfnXKqf+JyIfliE2psHNG3XjOqBsPwHFfDklx0TZHFPoefPBBMjMzefrpp4mPj+eZZ57RBKfKzOHyCIElt9p63c5HHS5PK6Cp1+38wkp9K48lC69GEgH0pug1I5Wqtt76aidTPRtYfOf5NKsTb3c4IU1EcLvd+Hw+pk+fTnx8PI8//rjdYanw8zyBhT6GEFhy6zjwNtDXSmUrz1oKr1SSC2wjMHNcqRqjn6M+I7o0JSFaH09aISI8++yzZGVlMXXqVOLj45kyZYrdYalK5HB5pgGjgGxgC3CD1+08Grw2mUCeyAPu8Lqdy4LnRwIzgEjgZa/b6S7hFud43c6zHS7PNwBet/OIw+WxvN2alb+pZxljfIVPiEis1RsoVR20apCA+1JLO22oIBHhxRdfxOfzcf/99xMfH8/dd99td1iq8qwAJnvdzlyHy/MUMBm4z+HydAauBLoAzYGVDpenY7DOTGAYgUXyv3S4PAu9bueGYtrPcbg8kQQHNDpcnkYEenKWWElunwJnn3LusyLOKVXt7TqaxVTPBh4e1YXGte3b9y9cREREMHv2bHw+H/fccw9xcXHcdtttdoelKoHX7Vxe6HANge3QILDp9Jtet9MPbHO4PJuBfsFrm71u51YAh8vzZrBsccnt5HZrDpfH8nZrBYpNbiLSFDgDiBeRXvy611ptIMHqDZSqTnw5eXy+9TAb9hzT5GZRVFQUc+fOxe/3M2nSJOLj47nhBl0TPUREiUjhzaBnBffKLKsbgXnBz2cQSHYFdgbPAfxyyvlzimvQ63bOdbg8v9luzet2lrrdWoGSem4jgOsJ7Kk2vdD548DfrN5AqeqkXaNE/ucaQly0TlAui+joaObNm8eYMWOYMGECcXFxFd7sVFWKXGNMn+IuOlyeYjed9rqd7wXLTCEwHmNu8Fpxm04XNemx2PXtHC5PO2Cb1+2c6XB5koFhDpdnT8F7vdKUtCvAv4F/i8ilxpi3rTSmVE1QkNhW/7iPrs3raA/Oori4ON59912cTifXXnstDz74YLjuFF1jeN3OEneAcbg81xHYOTvV63YWJKqSNp0uy2bUbwN9HC5Pe+BlYBGBPUUvtBJ7SZuV/qEgfhG5+9QvK40rVV0dzPAzae43PJ+2xe5QwkpCQgKLFi2iX79+PPbYYyxevLj0SiokBUc+3geM9rqdmYUuLQSudLg8sQ6Xpw3QAfgC+BLo4HB52gRHPV4ZLFucfK/bmQuMBWZ43c4/A5a7+yWtjVOwOVMikFTEV4WJyF9ExIhIw+CxiMj/ichmEfleRHTQigpJDRNjef2mfky+8Ey7Qwk7iYmJLFmyhLZt2zJ27FhWrVpld0iqfJ4jkAtWOFyebx0uz4sAXrdzPTCfwECRpcAkr9uZF0xUtwPLgI3A/GDZ4uQ4XJ6rgPHA+8FzlldRKOmx5EvB/z5itbGyEJGWBIaE7ih0+gICWb4DgReNL1DCC0el7NS7dWB9A39uHocysmleVyd3W1WnTh2efvppHnjgAUaPHs3SpUs5//zz7Q5LlYHX7WxfwrWpwNQizi8GrHbXbwBuAaZ63c5twV7g61bjs7JCSSPgZsBRuLwxxvJ238X4B3Av8F6hc2OAOcEdudeISF0RaWaM2VPBeylVZW7691oOZmTz/p8GEhmhy0xZVadOHVasWEFycjJOp5OVK1fSr1+/0iuqGiE4/+2OQsfbgJImff+GlLYZo4h8CnxMYKWSvILzFRlkIiKjgVRjzJ0i4gX6GGMOisj7gNsY80mw3CrgPmPM2iLamAhMBIiKiupdWc/ufT4fcXH2DRCo6vtXVvsVaaesdctS3kpZK2X8fj+JiYmW7rnuYC65+dCzcfisXpKRkWH5+6vqGA4cOMBdd93FsWPHmD59Oh06dKi0tu1sp6x1y1LeSlkrZVJSUjKNMbVKLGQTh8vTAXgS6Exg0X4AvG5nWyv1rfxtTDDG3FfWwESk2CGkBKYSDC+qWhHnisy+wbkYswASEhJM165dyxpikdatW0dltRWK96+s9ivSTlnrlqW8lbJWymzatMnySL7CpbJz84mJCv1tXtLS0mwfqVg4hn79+jFo0CAmT57Mhx9+SJcuXSqtbbvaKWvdspS3UjYU/h9X0P8DHiLwlC+FwGNKy49GrPwtfF9ELA29LMwYM9QY0/XUL2Ar0Ab4LthrawF8HZw0XtIQUqVC2ooN+xjy9zT2pvtKL6x+o3Xr1qxatYqYmBhSU1P56aef7A5J2S/e63auAsTrdm73up0PE1hE2RIrye1OAgkuS0SOichxETlWzmAxxvxgjGlsjHEYYxwEEtrZxpi9BIaFjg+OmuwPpOv7NhUu2jSsRacmSej+nOXTvn17Vq1aRX5+PqmpqWzbts3ukJS9fA6XJwL42eHy3O5weS4BGlutXOpfQ2NMkjEmwhgTb4ypHTyuXZGIS7CYQM9uM/AvQBehU2GjfeNEXrm+L42TdFJ3eZ111lmsXLmSEydOkJqays6dO+0OSdnnLgJLPd5BYKu1a4HrrFa2MlqyqLlm6cB2Y0yFd+QO9t4KPhtgUkXbVMpOJ/y5TH7nB0b3aM7Qzk3sDifsdO/eneXLl5OamkpqaioffvghTZvqFpI1jdft/DL4MYPA+7YysTKg5HkCOwD8EDzuBnwHNBCRW4wxy4utqVQNFBkheA+dYMfhzNILqyL16dOHJUuWMHz4cIYOHUpaWhoNGza0Oyx1GgW3yfkr0JpCucrrdlp672YluXmBCcaY9QAi0jl4w8eAdwBNbkoVEhcdydu3nkd0pL58q4jzzjuP999/nwsuuIBhw4axevVq6tWrZ3dY6vT5L/AigVdUeaWU/R0rye3MgsQGYIzZICK9jDFbRXTCqlJFKUhs3+88yrvf7OLBizqjf1/KLjk5mQULFjB69GguuOACVqxYQVJSpaz+p0JfrtftfKG8la0kt00i8gLwZvD4CuCn4G7cOeW9sVI1wadbDrF8/T5uHdxOdw8opxEjRvDf//6XSy+9FKfTyZIlS6hVKyTnHatK4HB56gc/LnK4PLcR2LDUX3Dd63YettKOleR2PYFRi3cRmED3CfAXAoktxXrIStU8fxzUlqv6taJOvOX1XlURRo8ezdy5c7nqqqu4+OKLWbRoka0rCakq9RWBxTsKHnX8tdA1A1TOCiXGmCzg78GvU2VYuYlSNZWIUCc+GmMML364laFnNaZDE32sVh6XX345Pp+P66+/nnHjxvHOO+8QExNjd1iqknndzjaV0Y6VqQBFru9ljLGUPZVScOhENq98so1jvhzuG6nb5JTX+PHj8fl8/PGPf+Sqq65i3rx5REWFz5qeyjqHyxNH4KnhQAI9to+BF71up6UlgKz8VFRofS+lVGD/t0V/GkBTfe9WYRMnTsTn83HnnXdy3XXXMWfOHCIjI+0OS1W+OcBx4J/B46uA14DLrFS2ktzijTGrRESMMduBh0XkYwIJTyllUbM6gf3e9h/38a+PtnLvyDN1ukA53XHHHWRlZeFyuYiPj2fWrFlE6Lpn1U0nr9vZo9DxBw6X5zurla38NPhEJAL4WURuF5Eyre+llPqt/20+yOtrdrBp73G7Qwlr9913Hw8++CCvvPIKd9xxB6Vt36XCzjcOl6d/wYHD5TkH+J/VylZ6boXX93qMwKrMltf3Ukr91iW9WnBeu4Y00UeUFfbwww+TlZXFtGnTiI+P5+mnn9b5hNXHOcB4h8uzI3jcCtjocHl+AIzX7exeUmUroyUrtL6XUur3ChLb0nV72H4okz8ObmdzROFJRHjqqafIysrimWeeISEhgUceecTusFTlGFmRylZGS/YhsMHob9b3MsaUmDWVUqVbvn4f3kMnuGFAm7DY5DQUiQgzZszA5/Px6KOPEh8fT//+/UuvqEKa1+3cXpH6Vh5LziUwie4HIL8iN1NK/dZT47qTkxceu3eHsoiICF588UWysrKYPHkykyZNCvddqEOew+WZBowCsoEtwA1et/Oow+VxABuBTcGia7xu5y3BOr2BV4F4Aluc3el1O6vkZamV5HbAGLOwKm6uVE0XHRlBdGQE2bn5/OW/35FyZiMu6dXC7rDCUmRkJK+++io+n4+ZM2fSvXt3Jk6caHdY1dkKYLLX7cx1uDxPAZOB+4LXtnjdzp5F1HkBmAisIZDcRgJLqiI4K8ntIRF5GVhFofW9jDHvlPemIvIwcDNwIHjqb8aYxcFrk4EJBFaBvsMYs6y891EqXOTlGw6d8HMoI9vuUMJaVFQUb7zxBoMHD+aWW24hLi6O8ePH2x1WteR1OwvvCLMGGFdSeYfL0wyo7XU7PwsezwEuxsbkdgNwJhDNr48lDYHtbiriH8aYZwqfCG6ncyXQBWgOrBSRjsaYMm93oFQ4iY+J5N839CMqOO8tPStH16Msp5iYGB555BGmTZvGDTfcQFxcHJdffrndYVV3NwLzCh23cbg83wDHgPu9bufHwBlA4a3VdwbPVQkrya2HMaZbVQVwijHAm8YYP7BNRDYD/YDPTtP9lbJNQWLbeSSTS57/lD8P7cjV57SyOarwFBMTw4IFC7jgggu45ppriI2NZcyYMXaHFYqiRGRtoeNZxphZBQcOl2clUNQ26FO8bud7wTJTgFwC4zMA9gCtvG7noeA7tgUOl6cLRa9sVWWTE60ktzUi0tkYs6GS7327iIwH1gL3GGOOEMjiawqVqdLMrlQoapwUx7DOTejXRjfmrIhatWrh8XgYNmwYl19+OQsXLmTEiBF2hxVqco0xfYq76HU7h5ZU2eHyXAdcBKQWDAzxup1+gq+wvG7nVw6XZwvQkcDv88IvlFsAuysWfvGktFn9IrIRaAdsIxCwAKa0qQAiUmzGJ5DADhLI2o8BzYwxN4rITOAzY8zrwTZeARYbY94uov2JBF5MEhUV1Xvx4sUlfh9W+Xw+W7fSqOr7V1b7FWmnrHXLUt5KWStl/H4/iYmJlmOsSt/sz6V7w0giIypvcnJGRobt319VxlC47ePHj3P33XezY8cOnnrqKXr2LGqcQ+XHWNa6ZSlvpayVMikpKZnGmHJtjudweUYC04HBXrfzQKHzjYDDXrczz+HytCWw4HE3r9t52OHyfAn8CficwICSf3rdzsr55X0KKz23ck2kM8aUmPELiMi/gPeDhzuBloUuF5vZg13nWQAJCQmma9eu5Qnzd9atW0dltRWK96+s9ivSTlnrlqW8lbJWymzatCkkhpL/sDOdGUs/4aFRnblhQKXsBAJAWlqa7d9fVcZwatvnnnsugwcP5v7772f58uWcd955VR5jWeuWpbyVsqfh//FzQCywwuHywK9D/gcBjzpcnlwCAwNvKbTB6K38OhVgCVU0mASsrVBSoYl0RRGRZsaYPcHDS4B1wc8LgTdEZDqBASUdgC8q+/5KhYtuLerw8vg+DO7UyO5QwlrDhg1ZtWoVgwYN4oILLmD16tX07t3b7rDCmtftbF/M+beB3z1tC15bC5yW3oNdM0efFpEfROR7Atvo/BnAGLMemA9sAJYCk3SkpKrphnZuQnRkBCf8uUycs1YXXC6npk2bsmrVKurXr8/w4cP5/vvv7Q5JVSFbkpsx5lpjTDdjTHdjzOhCvTiMMVONMe2MMZ2MMVXWZVUq3OxJz2LdrnT2pGfZHUrYatmyJatXryY+Pp5hw4bx448/2h2SqiK65o9SYaJ94yRW/yWZ5E6BHad+2ndct3kphzZt2rB69WpEhNTUVLZs2WJ3SKoKaHJTKozERQd2nN5yIIOL/vkJsz7aanNE4aljx46sXLkSv9/PkCFD2LFjR+mVVFjR5KZUGGrbsBaukWcyrreuQ1leXbt2Zfny5aSnpzNkyBB2766yKVfKBprclApDIsKNA9vQIDEWYwx3vfkNC77ZZXdYYefss89m6dKl7Nu3j6FDh7J//367Q1KVRJObUmHuRHYeu9N9HMzwl15Y/U7//v3xeDx4vV6GDRvG4cOHS6+kQp4mN6XCXGJsFG/cdA4TBgYmeX+1/TA/7Ey3OarwMmjQIN577z02bdrEiBEjSE/XP79wp8lNqWogKjICEcEYw1TPRu7577fk5+tIyrIYNmwYb731Ft9++y1Op5OMjAy7Q1IVoMlNqWpERJh9fV+ev+ZsIiKE3Lx8dh/VeXFWXXTRRfznP//hs88+Y8yYMfj9+qg3XGlyU6qaqZsQQ/vGSQC8+OEWhk3/kJ1HMm2OKnyMGzeOOXPm8MEHH/DQQw9pggtTVhZOVkqFqTE9zyAyIoIW9RIA8OXknZwrp4p3zTXX4PP5uOmmm7jyyiuZP38+0dG6eWw40Z6bUtVYy/oJ3JrcDoB9x3wMfOoDFn6n87msmDBhAnfccQcLFixg/Pjx5OXpMrfhRHtuStUQkRHCgPYN6H5GHbxHID/fEFGJe8RVR5dccgktWrTg3nvvJS4ujldeeYWICO0ThANNbkrVEA0TY5lxZS8AvMCUBevIzcvn6XHdEdEkV5y//vWvZGZm8vDDDxMfH8/MmTP1zysMaHJTqgYyxtAoKZa8/PyTv6iNMfpLuxgPPvggWVlZPPXUU8THx/PMM8/on1WI0+SmVA0kItw9rOPJ4w27j3H3/G+ZcWUvOjVNsjGy0CQiPPnkk2RlZTF9+nTi4+N5/PHH7Q5LlcC25CYifwJuB3IBjzHm3uD5ycAEAtuT32GMWWZXjErVFBn+XOKiI2laOw6A7Nx8YqL03VJhIsKzzz5LVlYWU6dOJT4+nilTptgdliqGLclNRFKAMUB3Y4xfRBoHz3cGrgS6AM2BlSLSUXfjVqpq9WtTnwWTBgCBx5M3vPoF7Rol8uiYrjZHFlpEhBdffBGfz8f9999PQkICf/7zn+0OSxXBrp7brYDbGOMHMMYULMU9BngzeH6biGwG+gGf2ROmUjVPXr7h7Fb1aFon0IszxnAwI5tGSbE2RxYaIiIimD17Nj6fj7vvvpu4uDhuvfVWu8NSp7DruUNH4HwR+VxEPhSRvsHzZwC/FCq3M3hOKXWaREVGcM/wTlxzTmsAPti0nwFPrebrHUdsjix0REVFMXfuXEaNGsVtt93Gq6++andI6hRSVdvUi8hKoGkRl6YAU4HVwJ1AX2Ae0BZ4DvjMGPN6sI1XgMXGmLeLaH8iMBEgKiqq9+LFiyslbp/PR1xcXKW0FYr3r6z2K9JOWeuWpbyVslbK+P1+EhMTLccYbjIyMix/fwcy81m1I5dxHaOJihC2pedRL1aoG1exfxuXJQa72i6tnezsbKZMmcLXX3/NlClTGDJkSLljKEt5K2WtlElJSck0xtSyHGQhDpfnMQJP2/KB/cD1Xrdzt8PlEWAGcCGQGTz/dbDOdcD9wSYe97qd/y7Pva2osseSxpihxV0TkVuBd0wgs34hIvlAQwI9tZaFirYAilxOwRgzC5gFkJCQYLp2rZx3A+vWraOy2grF+1dW+xVpp6x1y1LeSlkrZTZt2kRycrLVEMNOWlpamb6/y4L/NcbgnvExsVERvHf7wNMagx1tW2ln4MCBXHjhhTzxxBP06tWLSy65pFwxlKW8lbJV+ecbNM3rdj4A4HB57gAeBG4BLgA6BL/OAV4AznG4PPWBh4A+gAG+crg8C71uZ5U8ErDrseQCYAiAiHQEYoCDwELgShGJFZE2BP5wvrApRqXUKUSEl67tzSPBgSb+3Dwmv/M9P+87bnNk9klISGDRokX07duXK664giVLltgd0mnhdTuPFTqsRSBhQaA3N8frdhqv27kGqOtweZoBI4AVXrfzcDChrQBGVlV8dg0omQ3MFpF1QDZwXbAXt15E5gMbCEwRmKQjJZUKLa0b1KJ1g8DnTXuP8/53e7iwWzM6NEkiOzef6EipcROck5KSWLJkCampqYwdOxaPxxMuy3RFicjaQsezgk/FLHG4PFOB8UA6kBI8XdzYidM6psKW5GaMyQb+UMy1qQTeySmlQlz3FnX5dPIQEmMDv0pe/mQr7369iwWTBlArtmatEVG3bl2WL19OcnIyo0aNwu12h8Oj7VxjTJ/iLjpcnmLHTnjdzve8bucUYIrD5ZlMYN7yQ0BR/7IxJZyvEjXrp08pVemS4n7dCqZtw1qc167BycTm+X4PnZomntxfrrpr0KABK1euZNCgQbhcLvr370/fvn1LrxiivG5nsWMnTvEG4CGQ3IobO7ETSD7lfFqFgyxGWPSblVLhYWTXZiffx2Xn5nP/gh94Pm3Lyet5+VX2D/WQ0aRJE1atWkWdOnUYMWIE3333nd0hVQmHy9Oh0OFo4Mfg54XAeIfLIw6Xpz+Q7nU79wDLgOEOl6eew+WpBwwPnqsSmtyUUlUiJiqCFXcP5i/DOwGw80gm/Z9cxcc/H7A5sqrXokULpk+fTq1atRg2bBgbNmywO6Sq4Ha4POscLs/3BBLVncHzi4GtwGbgX8BtAF638zDwGPBl8OvR4LkqoY8llVJVpmHir6ua+HLy6dWyLm0aBqZVedPz+M8XO7ik1xnVcnfwpk2bsnr1agYNGsTQoUP56KOPaN++vd1hVRqv23lpMecNMKmYa7MJDCisctpzU0qdFu0bJzJrfB9a1EsA4Mu9eUz1bCQ/uJDE3nQfOXn5doZY6Tp06MCqVavIyckhNTWV7du32x1SjaHJTSlli3Edo1ly5/kkxAQeIN017xuumrXG5qgqX+fOnVmxYgXHjh1jyJAh7Nq1y+6QagRNbkopW4gILesnnDy+aWBbJgxsA0B+vuGyFz/lv2t/Ka56WOnZsyfLli3jwIEDpKamsm/fPrtDqvY0uSmlQsLQzk24oFszAI75ckiKiz75Li49M4dHFq1n28ETdoZYIf369WPx4sX88ssvDBs2jEOHDtkdUrWmyU0pFXLqJsQw+/q+jOrRHID1e9KZ+/kOjmZmA7DjUCarf9xHdm54vaMbOHAgCxcu5KeffmLEiBGkp6fbHVK1pclNKRXyzmvXkG8eGEaPFnUBeOebndz077Uc9+UAsO3gCXYfzbIzRMtSU1N55513+P7777nwwgvJyMiwO6RqSZObUios1IqNIiIisILTrcnteOvW82gQnGowfcVPjH7uE/KDk8QPZOaHdK/uwgsv5M033+Tzzz9n1KhRZGZm2h1StaPJTSkVdmKjIjm7Vb2Tx3emdmDaZT1OJr/nvvUz4d9fnry+Jz2Lqtq7srzGjh3LnDlz+PDDDxk7dizZ2dl2h1St6CRupVTYa984kfaNf92Yc0y7aHr1DIy8zM3LZ/j0j7isT0seHNUZgF1HszijbrwtsRZ29dVX4/P5mDBhAhkZGaSkpBAdHV16RVUq7bkppaqds5tEkdKpMQB5xnD/RWfh7B4YibknPYsB7tW8viYwodqXk8fWAxm29exuvPFGnnvuOf73v//xhz/8gbw83eWrMmhyU0pVa7FRkVzRtxW9WwceY8ZHR/LI6C4MbN8QgK+3H2HI3z/ko58PArD/uI+vth85raulTJo0iVtvvZX58+dz4403kp8fuu8Lw4UtyU1E5onIt8Evr4h8W+jaZM91tL4AAA6ESURBVBHZLCKbRGSEHfEppaqvugkxXHeeA0dwjcv2TRJxj+3G2a0CIzGXrd/HpS98yp6jPgDW705n8Q97qnyAyuWXX85jjz3GnDlzuO2220LuHWG4sWuz0isKPovI3wns4oqIdAauBLoAzYGVItJRd+NWSlWVxklxXNmv1cljZ7dmNEmKpWX9eLYC7369i9fWbGfdI4F/ay/8bjfegyf405D2lb7j+JQpU8jMzOTJJ58kLi6Of/zjHzVuV/PKYuuAEgn8X7scGBI8NQZ40xjjB7aJyGagH/CZTSEqpWqY+rViGN7l182n/zqyE1f0bUl0ZOBB1xfbDrHWe4Q7UgPbmU31bMCfm8+jwX3s0jNzqB1fvl+tIsLUqVPJysri2WefJSEhgalTp2qCKwe7R0ueD+wzxvwcPD4DKLxy6s7gOaWUskVsVCQdmvy6k/jjF3cj95T3cYWfIF47+3MaJ8Xyh9aB41Ub99GqfsJv2vj/7d1/kFXlfcfx9wcWXZfVFYooouGSCBYxEUGWWpVlcZUflxGqGYYOnWjslIKSpKjT3hRNtOpwxdZWo8WiJYxD1aLFiNyNWxbcCh0zgRLFFUPBsIq1IWAQRXbRhW//OAf3liyw1733Hvbs9zVzZ86P5zzP97AP853n/HjO8UjioYceorm5mQULFlBWVsadd97Z6fPoblSo67qS6oFz2tk138xeDMssArab2d+F648Br5nZsnD9n4FaM/u3duqfBcwCKCkpGVVbW5uXuFtaWigtLc1LXSdj+/mqvzP15HpsLuU7UrYjZQ4ePEh5eflxy3Rl+/fvj/z8ChlDvur+MvWse/9zSkvEsPIWevfuzS1rDjBmQAk3DQ9eOH9i80FG9O/J6HOCscXBQ8apPfU7bR0+fJiFCxdSV1fHnDlzmD59ek5xdaRMdXX1ATPrndMJdhEFG7mZWc3x9ksqAa4HRmVtfh84P2v9POCDY9S/GFgMUFZWZhdffHGn4j2isbGRfNV1Mrafr/o7U0+ux+ZSviNlO1Jm69atjBs3rqMhdjkNDQ2Rn18hY8hX3V+mniOlGxoaqKqq4uVvHKBH+AWEls8Pcd+m9fQ97yuMu3Iwnx5s5eK767greRFfLX+Xy6+8ihWb/oerhvTjvD5lVFVVMXPmTBYtWsTw4cO59dZbOxzXyfA3jlKUlyVrgF+a2ftZ21YCT0t6iOCBkiHAz6MIzjnnOksSg36vbWBU2qsn9bdVfbF+yIzbrxnKqEF92PvOu+zY8ynfX/EmD88YwXl9ynhvbwv7/uAWrtaZzJ07F51Sxsirr6O51Z+kPJEok9sM4JnsDWb2lqTlwBagFbjVn5R0zsXVGaW9mDs+eDCl4R0Y2v901v1lNWecFsxS8vmhw5xTUcr3FtxHam8Td6Qfo/87/fnrMcFl9U3v7eXxhne4a8pFnN+3jD37D/LrfS0M7eD9vTiL7CVuM7vJzB5vZ/v9ZvY1M7vQzH4aRWzOOReFHj2Cy5cVYXIbevbp/PjblYxI9GPFihVcNrgfu5/7ATs3Bw+Q7zvwOTv2fEpJz+BpytVbdjHlR+vZvf8gAC83/pqbl25gX3Pw9YSdvz3AL97by6HD8R/5Rf20pHPOuQ4oKyuj9ifPM2HCBNL33cPlo0cyefJkqn+//xdlxl14FotmjuTs009lG8HUYrs+bqH3KcFHX5/buJNHX9nOf983Cejc6wWJVOZegte3DgO/AW5qSic/SKQy44AXgR1h0RVN6eTfhMdMBB4GegJPNqWT6U4FcRye3JxzrosoLy+ntraWyspKrr/+elatWkVNTduzewMqTmPA19smhJ526UCmXdr2NtX00eczKtGXkp55uWj3YFM6eRdAIpX5LvADYHa4b11TOjklu3AilekJPAZcQ/Dw4IZEKrOyKZ3cko9gjuZzSzrnXBdSUVHBwoULGTp0KFOnTmXdunUdPva8PmVUDT0rL3E0pZMfZ632Bk50rbMS2N6UTv6qKZ38DHiWYORXED5yc865LqaiooL6+nqqqqpIJpPU19dTWVlZ9DgSqcz9wLcIplCsztp1eSKVeYPgVa47mtLJtwgm5NiZVeZ9YEyhYvPk5pxzXVD//v2pr69n7NixTJgwgVdeeYURI0bkWk2JpI1Z64vDd4gBSKQyx5yMoymdfLEpnZwPzE+kMt8H5gI/BDYBg5rSyf2JVGYy8BOC17rau8lXsCdbPLk551wXNXDgQNauXcvYsWO55ppraGhoYPjw4blU0Wpmlx1rZ1M6edzJOLI8DWSAH2ZfrmxKJ2sTqcw/JlKZfuQwSUc++D0355zrwgYNGsSaNWvo1asXNTU1bNu27cQH5UEilRmStXod8Mtw+zmJVEbhciVBnvkQ2AAMSaQygxOpzCkE7zqvLFR8PnJzzrku7oILLmDNmjVUVVUxfvz4nB4y6YR0IpW5kOBVgHdpe1Lym8CcRCrTCjQDM5rSSQNaE6nMXKCO4FWAJeG9uILw5OacczEwbNgwVq9eTXV1NePHj+eBBx4oaHtN6eQNx9j+KPDoMfbVAvmZ5f4E/LKkc87FxCWXXEJdXR0ffvght99+O7t27Yo6pMh4cnPOuRgZPXo0tbW17N69m5qaGvbs2RN1SJHw5OacczFzxRVXcP/997N9+3auvfZaPvroo6hDKjpPbs45F0MjR47khRdeoLGxkUmTJvHJJ59EHVJReXJzzrmYmjhxIsuXL2fDhg1MmTKFAwcORB1S0Xhyc865GJs2bRrLli1j/fr1TJs2jZaWlqhDKgpPbs45F3MzZsxgyZIlrF69munTp/PZZ59FHVLBRZLcJI2Q9DNJr0vaKKky3C5Jj0jaLmmzpJFRxOecc3Fz4403smjRIl566SVmzpxJa2tr1CEVVFQvcS8E7jGzn0qaHK6PAyYRTLA5hGC26EUUcNZo55zrTmbPnk1zczO33XYbpaWlUYdTUFElNwPOCJcraJs8cyrwlJkZ8DNJZ0oaYGb/G0WQzjkXN/PmzaO5uZn58+dHHUpBRZXc/gKok/S3BJdG/zDc3t73fgYCv5PcJM0CZoWrdu655zbnKbaewKE81XUytp+v+jtTT67H5lK+I2U7UqYEiPN1m6j7eaFj8H7esTKnnWB/12VmBfkB9UBjO7+pwCPADWG56UB9uJwBrsyqYw0wqlAxHiPuxcVsr9jt56v+ztST67G5lO9I2Q6W2RhlPyj0L+p+XugYvJ97Py/YyM3MjvkdIElPAd8LV58DngyXi/q9n2N4qcjtFbv9fNXfmXpyPTaX8h0pG/Xf+GRwMvwbFDIG7+cnx984Mgqzd3Ebld4G5phZg6SrgYVmNkpSkuBrrpMJHiR5xMyK/+101+1J2mjH+Yijc3EQ534e1T23PwMellQCtNB276yWILFtBw4A344mPOdYHHUAzhVBbPt5JCM355xzrpB8hhLnnHOx48nNOedc7Hhyc845Fzue3Jw7AUnDJD0u6XlJc6KOx7lCktRb0n9JmhJ1LJ3hyc11S5KWSPqNpMajtk+UtDWcvDsFYGZvm9lsggkHYvnYtIuvXPp66K+A5cWNMv88ubnuaikwMXuDpJ7AYwQTeF8E/LGki8J91wHrCWbNca4rWUoH+7qkGmALsKvYQeZbVO+5ORcpM3tVUuKozZXAdjP7FYCkZwmmi9tiZiuBlZIywNPFjNW5zsixr5cDvQkSXrOkWjM7XMRw88aTm3Nt2pu4e4ykccD1wKkEEw0419W129fNbC6ApJuAPV01sYEnN+eyqZ1tZmYNQENxQ3GuoNrt618smC0tXiiF4ffcnGtzMkzc7VwxxL6ve3Jzrs0GYIikwZJOAWYAKyOOyblCiH1f9+TmuiVJzwCvARdKel/Sn5pZK8FXKeqAt4HlZvZWlHE611ndta/7xMnOOedix0duzjnnYseTm3POudjx5Oaccy52PLk555yLHU9uzjnnYseTm3POudjx5OZiS9J3Jb0t6V+ijqUQJI2TtOqobUslfTOqmJw7Wfjcki7ObgEmmdmO7I2SSsKXWJ1zMeUjNxdLkh4HvkrwmZp5ku6WtFjSvwNPSeop6UFJGyRtlvTn4XGS9KikLZIykmqPjIQkNUnqFy5fJqkhXO4dfhByg6RfSJoabr9J0gpJL0vaJmlhVnwTJW2S9IakNZJ6hGXOCvf3CD8i2e9Lnv9lkl4Pf29K8tkaXLfiIzcXS2Y2W9JEoNrM9ki6GxgFXGlmzZJmAfvMbLSkU4H/DBPfpcCFwNeBswk+3LjkBM3NB9aa2c2SzgR+Lqk+3DcirPMgsFXSj4AW4AlgrJntkNTXzA5LWgbMBP4BqAHeMLM9J2j7KkmvZ61/BVhlZhvDtpH0IPDyCepxLlY8ubnuZKWZNYfL1wLfyLo/VQEMAcYCz5jZIeADSWs7UO+1wHWS7gjXSwmSDMAaM9sHIGkLMAjoA7x65HKpmf02LLsEeJEgud0M/LgDba8zsylHViQtzd4paTowMozRuW7Dk5vrTj7NWhbwHTOryy4gaTJZ37U6Sittl/JLj6rrBjPbelRdYwhGbEccIvg/p/baMLOdknZJGg+MIRjFfWmShgP3EIwQD3WmLue6Gr/n5rqrOmCOpF4AkoZK6g28CswI78kNAKqzjmkiuLQJcMNRdX1HksK6Lj1B268BVZIGh+X7Zu17ElhGMEv7oXD/H0lakMvJSaoAngW+ZWa7cznWuTjw5Oa6qycJ7qdtktQI/BPBqOoFYBvwJrAI+I+sY+4BHpa0jmAUdsS9QC9gc1jXvcdrOEw2s4AVkt4A/jVr90qgnP9/SfJrwMc5nt80gkugTxx5sCTH453r0vyTN84dR3gPa5WZPV+k9i4D/t7MrsratgyY5yMw5zrO77k5d5KQlALmcNS9NjP7k2gicq7r8pGbc8652PF7bs4552LHk5tzzrnY8eTmnHMudjy5Oeecix1Pbs4552LHk5tzzrnY+T+y2tadtRH2NQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "system_lp = signal.butter(order, Wn, btype='lowpass', output='ba', analog=True)\n", "\n", "w, mag, phase = signal.bode(system_lp, w=w)\n", "\n", "fig, ax1 = plt.subplots()\n", "ax1.set_ylabel('magnitude, dB')\n", "ax1.set_xlabel('frequency, Hz')\n", "\n", "plt.semilogx(w/(2*np.pi), mag,'-k') # Bode magnitude plot\n", "\n", "ax1.tick_params(axis='y')\n", "plt.grid(which='both', axis='both')\n", "\n", "plt.fill([0, fp, fp, 0], [-gpass, -gpass, -100, -100], '0.9', lw=0) # passband\n", "plt.fill([fs, fs, 100e9, 100e9], [-gstop, 100, 100, -gstop], '0.9', lw=0) # stopband\n", "plt.xlim((w[0]/(2*np.pi),10e3))\n", "plt.ylim((-80,10))\n", "\n", "\n", "# instantiate a second y-axes that shares the same x-axis\n", "ax2 = ax1.twinx()\n", "color = 'tab:blue'\n", "\n", "plt.semilogx(w/(2*np.pi), phase,':',color=color) # Bode phase plot\n", "\n", "ax2.set_ylabel('phase, deg',color=color)\n", "ax2.tick_params(axis='y', labelcolor=color)\n", "#ax2.set_ylim((-5,25))\n", "\n", "plt.title('Bode plot')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plot above shows that a 4th order filter will meet the filter design requirements. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Synthesis of filters from polynomials\n", "Filter design tables contain tables of transfer functions and the component values, so that design by synthesis is not the usual design method. However, in this example, I'm going to walk through the synthesis of the filter from the polynomial. One method of synthesis is to expand the driving point impedance. If the transfer function is all poles, the expression for $Z_{11}$ is: \n", "$Z_{11} = \\frac {D(s)-s^n}{D(s)+s^n}$ \n", "where \n", "D(s) is the denominator of the transfer function.\n", "\n", "The expansion involves successive division and inversion of the ratio of the two polynomials. The final form contains a sequence of terms that are the values for the capacitors and inductors. \n", "\n", "Butterworth, Cheby1 and Bessel have poles only, so the expression for $Z_{11}$ given above can be used.\n", "\n", "Using the SciPy function butter, calculate the numerator and denominator of the transfer function." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{1.56225057575991 \\cdot 10^{15}}{1.0 s^{4} + 16428.50380806 s^{3} + 134947868.685722 s^{2} + 649341798364.839 s + 1.56225057575991 \\cdot 10^{15}}$$" ], "text/plain": [ " 1.56225057575991e+15 \n", "──────────────────────────────────────────────────────────────────────────────\n", " 4 3 2 \n", "1.0⋅s + 16428.50380806⋅s + 134947868.685722⋅s + 649341798364.839⋅s + 1.5622\n", "\n", " \n", "──────────────\n", " \n", "5057575991e+15" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num, den = signal.butter(order, Wn, btype='lowpass', output='ba', analog=True)\n", "\n", "s = symbols('s') # declare the variable s\n", "\n", "# transfer function\n", "Poly(num, s)/Poly(den, s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The transfer function contains terms that have large exponents, i.e. $10^{15}$. Continuing with the calculations, these terms present a problem in the numerical calculations. The expression for $Z_{11}$ is shown below." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{16428.50380806 s^{3} + 134947868.685722 s^{2} + 649341798364.839 s + 1.56225057575991 \\cdot 10^{15}}{2.0 s^{4} + 16428.50380806 s^{3} + 134947868.685722 s^{2} + 649341798364.839 s + 1.56225057575991 \\cdot 10^{15}}$$" ], "text/plain": [ " 3 2 \n", " 16428.50380806⋅s + 134947868.685722⋅s + 649341798364.839⋅s + 1.562250575\n", "──────────────────────────────────────────────────────────────────────────────\n", " 4 3 2 \n", "2.0⋅s + 16428.50380806⋅s + 134947868.685722⋅s + 649341798364.839⋅s + 1.5622\n", "\n", " \n", "75991e+15 \n", "──────────────\n", " \n", "5057575991e+15" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Z11 = (Poly(den, s)-s**order)/(Poly(den, s)+s**order)\n", "Z11" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The filter is realized with the [Cauer procedure](https://en.wikipedia.org/wiki/Network_synthesis#Cauer_synthesis). This involves removal of poles and zeros from the Z(s) and Y(s) functions in a continued fraction expansion. The SymPy function [apart()](https://docs.sympy.org/latest/tutorials/intro-tutorial/simplification.html#apart) can be employed to remove the poles at s=0 for $Z_{11}$." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6kAAAAoCAYAAAAc27xTAAAABHNCSVQICAgIfAhkiAAAG8tJREFUeJztnXm0HVWVh78MhgSIjEJEkSHIGBAbaCeGB4g2ohjUQOsyEhW0hYAuBWlQ4TlAsBUamVQEvThiCwqKQzBCpBs0KBo0qAzCiygzyCCGhOH1H79T69WrW1Vnn7p18xLY31q13rtV+8xnV51xH3Acx3Ecx3Ecx3Ecx3Ecx3EcZ5XkSGBJuC4AJhjdbQosBP4A3AC8qR+RcxzHcRzHcRzHcZ49bAj8GZgMjAN+ALze6Pb5wEvC/xsBdwBrth1Bx3GcZzrjxzoCjuM4zjOK9YB7gOljHRHHach4YCLqpE4EpqA6beEuNIMKcC/wd9TpdRxn1eNi4INjHQnHcRzHccSeaHboTmAYeIvR3RHA7cDjwPXAHiUynwEuzP0+Evgd8Ei4fgEcYAhrMMQtf91dkBkqkRkGzjE+B5gKnAEsBZYB1wK7FcKxyOQ5IYRzduG+JS8s6bbIDJXIFNN+PPCrEJf7UJ2Y0SBdsfxpWt/KsPplqat1HIXy5QG602tlV+CPaDa2bZqkz+KmDRlLvbLolEVfLP7E4jtIXJ/yVOkBaCb9QpTuZcDvgb0S42sJy+KPRVcsZZX6nugH/fpm7QQ8CKzTTjQdx3Ecx+mF/YFPof1y1g/+IcATwOHAdsCZwD+AF+Vk1gQeYnRD4I3A64AXA1sDJwd/doqENwj8CZiWu55XkHle4fmrQ3oGjM8BLkIdiQFgqxDuw8ALEmUyXo4aRTfQ3bC05IUl3RYZS9rnA+9EDc4dge+hxvn6iemK5U+T+laFxS9LXV1ScW2CVgP8BOXDFLTHdCAxnhugfamvNMp3UL5ZsKSviZu2ZCz1yqJTFn2J+WOJ7yBxfcqo04N1gduArwL/CmwB7BvCTUm3JSyLPxZdsZRVynsilQ62et+vbxao83qkKbaO4ziO46w0rB/8RcCXCvduAeblfs9Co9KxmaMHgfdGZAZRpyGFM4Bba8IvPp8MPIkaw3muRw0iq0zGOmgv4z6oY2OZgSvmxSDxdFtkisTyBmBt4CngDYX7delKyR/ovZNq8ctSV+uYxegZ52OBD+d+jwu/b0IzNPeiZYMZawBXA7ON4UFaJ7VJ+ixu2pIpUqxXqXUmT15fLP5Y4juITZ9i+n0KcE2N+7beJU3yz6p3Ve+AmExMJ6roYK/3GW1+swBOor7cnDHC96Q6juM4MSYBuwBXFO5fweiZot1RQ2m4wp8JwFtRI+daQ7hbAn9DswnfAjaPxPHtwJcrwi97PinE6fGC7DKUFqtMxnmoYXZlTTwz6vLCku428yZjKmoXPFi4X5eulPxZGVjrah13AK9AnYEJaLbqptzzY9HM0hHANsCBwE/Ds3Go4X0l8LXUyBtokj6Lm7ZkyijWqyZ1pkxfYv6kxNeiTzH9ngn8Evgm6qQtBuYyMjDU1ruknzpX9Q6IydTpxFiQUvaL0FLpKSshXo7jOI7jGLGMSm8S5PYs3D+R0Y33yxi9HzVjR7TM6klkSOZ1hnjtD7w5uH018DNklKZqidnBwf9NEp9fC/wvWiY3AXXmnmJ0uiwyh6MO+qTweyHlM6mxvLCku+28yfg28FtGH7diSZclfzIs9W0ucF1Epsova12NcTJaTnkjWiaYn4G+Ejitwt3uwNOog5JdOxrC62CbUWqSPoubtmTKKKtX1joT05c6f6zxteiTRQ8eD9c84KWo0/YPRi8lbetdkqJzYJ99LCsri0ydTtTRoT8zqSl1dacg68b+HMdxHGcVIuWDXzQ6cRLay5UxH/hiiftJaN/UrqgBdz/phjfWQhZWqywxzkeGNaqoej4d+DlK35Ooc/R1tJ/QKrMNMiiybc7NQso7qal5EUu3RSaWNyCDV3eFuGVY02XJwwxLfRtEe5tj1HVSY3W1F45CHYIFqAPSxHrvCagDk11PACsK98qMFjVJn8VNWzJFyuoV2OtMTF/q/GlaF4r6ZNWDFci4U5559OddkqJzYNO7qrKyyFh1omm9z9PmNwu053mYlW8MymnAC9GSoDuB5chC4BnIkEC//WoSdqqbtwBnoRGoR1DF/HqF7AbAYWiT+K1oKcXDwP8B76Z6uXRKGABzKLfCmL+eKnH3aTTid0eI24NodOukEPci44B3oeUojwL/DPJHEz+ofA/gEvRyWh7+XkH5jEhqvCA9z4aozqsqq3ypYWQcgNL615Ce24DvoOVgbcg3KZch0tPvOGVYPviTUENoVuH+OaihlPEN4H8MYS4AzrdGMMdVwOdL7m+G3pHFPVrW56CG6fPD/98GfpggM4eRxmJ2DaMZtSfRHsUqLHlRlW6LjCXtp6FG+faF+3NIS5clD/u9J9VaV3tlOurELEbtgu3qxbtYHzX0s+sSNGObv1e2/LBJ+ixu2pLJU1Wv8ljqTJ4qfSnzp5e6kNenOdj0YGlJ3GYDjxnjmxJWzJ8iMb2zlFVMxqITTet9nja/WQAvC35uHPHTGWOmowo4DFwKnIqm8IfRyENVB6MNv5qE3cTN4vD8UbSUp66j8h/h+Z2o8TUPdYgfCvcvptwIRUoYADujkeOy62fB/eUl7lagjs2XUdrPQmbCh9Heik0L8l8Nz+5BL9LPoaVMdWkB+GiQuQ/4CjIOcF4I679aiBek59kQKofBkuuYCjepYYA63MNo9Pb8kJ6LURqfRktsepGHZuUyRHr6HacMa6dhEdL7PDcz2gjFMdgMkFyJbYAoz2Q0OHZiybPB8GxihdvY8zzrId16T4LMumgUPn/9Cu1Nm0G9saJYXtSl2yIzSH3az6S64dk0XXV52O9OKtjqaltMRIOeh/ToT4c0w0mp6bO4aUsG6utVGRa9g7i+FP1pkldFfbLqwTfRIHieT1I9u1kW337oHNTrnaWsUsozRSc69NdwkqXsD0NtU2cVZz4q/KMK908P97/QR7+ahN3Ezd5oan8cMoZQ11HZB1kvK86YTgP+Ety+uccwYvwiuD+w5NnkCjcnBzfn5u7NDPduY/QyjOegmeJhNIJXZFZ49lO0Wb7Ic3qMV0Zqng2FK4XUMKahGYi7gY1K/Mrys6k8NC+XIdLT3yZzUNwGxjAOTnPWRoNjO6NyPCb8nzfNP5fRy6IOQYMth6ER8jPQ0qzNcjI7Ih3I1+VT0UqMzcPzeWjAZv+asAA+i84X3AKNdF+OGj6bFeTGoxmMUyvSGnv+2hCXLYD90GDWIka/2ywyRRbSvUTPkheWdLeVN+cGd/sw+viNtRPTFcsfS32zYvHLUlebchx6/23PyLEo99P7LEyHtCNoYulror9tyVjqlUWnLPoS88cSX6s+5VlItx7shpavfgTNCM5CM4r5PaltvUss/lh0xVJWMZledKKDrd7365sFmii4wBAHZwzZEhX87XR3yqaign0MLS1o268mYbcR3wGadyCzA5bPisj1EsaM4PavxJfj5nkJIx3LjGy2ruwsqCyc6wv3x6PO02NUnxmWQlm8yhigP53U1DCyJSCXVTx/BM3KNpWHZuUCzdO/B/BdZNo+MxN/HZodT2EO3kldnRmgfKl4JyczGO7lOQLVu+WoXhaNUoAMeszN/e6gjtJyVN8WoAZWnrKwLkKrWFagUe5LKB/Ff01wu3XJM8vzg5E+ZNsYzqb7YHeLTJGFdDcsO8TzwpLutvKmrA4MU99oXEh3umL5M1ARTqcmnCqsflnqahNORA3hZaghfjn6tvVKh7QZpVj6Bmmmv23IWOqVRac6xPXF4k8svlZ9yrOQ8j3nB6BzTR9Hs3ZHM3r2s613icWfAeK6YimrmEwvOtHBVu8taRkkvc5PQW2zlxvj64wRh6HCLTN6ASOzlvv2wa8mYbcR3wGadyCPDW7/OyLXSxhnBbcfT3SXLc/NW1q7Itzbv0R+TUYUft3c/d3Dve+g5RsHoBGz91O9vzI1XmUMYOuk3oWWz54Q4rQ39s68JYz1GfkAFI0A7Bncf68HeWhWLtAs/dnAylK0BOYUNHp4A/CbGndlzME7qU45r0WNs5SBNcdxHMdZ2cyl+5gaZxUhv0dlm/D35grZW9Co7NZon2QdqX41CbvN+KYyEXhH+P8nLfudMQV1QJ4mblTjGLQUYh1kAW934HeMXuJ1f/i7RYn7LXP/b4v2k4KWroD2IfyGbjP6V6N9Aff1EK9emEb3OXS3I7PvbRjIeBB1yk9He0ouBR5Ae6GzM8De24M8NCuXjJT0bwx8Ahn92heNGOdpYp3SccqYj0b1X4gGRBzHcRxnVWQF3VsGnVWQ89DMyGEVz7P9hMf3wa8mYbcR3wGazXJ+NriLWaHrJYxDg7syg0lF7mb08ocf070X4G3h2a2MPvtrIlrakrnNz+jNC/eeRJ3+fVGncwfUOR9Gy1B6iVcZA8Tz7CS0P2JjNOM4A+1BfhpZx40tNbGEkTETdUDzabkF5Wmv8k3KBdLTv1fwp619F3PwmVTHcRzHcRynD1QdoVJGtqa+uN67Cal+NQm7zfjmORr4EFp/P7tlv/NkFtqqljPnmYbSOw14E5qB+y3wLzmZi1AncTqa5TsPbSJfjI6RuSXI5Y+6yZbrjUMzpj9De31vBA5Ce2X3onrpryVeTfk4svJ3D+qULUHWmE9Hs9CDLYQB8GFkYbeD8m4tYBe0V/cbdFs3TpVvUi6Qnv4bkQGHdwHfRwYFrMdKDdG9D+Qr4dlVJc86Rn8dx3Ecx3Ecp5bPoAbmhyqenx2ev68PfjUJu434DpA2y3lkkL8RdbwspIYB2rA/jM4ZbbKvazO0N7J4FMRElF+L0Qb3R9CM6C6MWBHeOSd/PCOzgGWcH56/v8d4FRmg+T7erYLbB1oII5P5bsmzNVEn/SlGluWmymeklksddemfgfYXP8bIDPmPiQ8afIDuY24uZaRDWnw20xhXx3Ecx3Ecx+kivyf1pvC3ygrgi8Pfqj2geVL9ahJ2m/G18AFkJGkJWvZ6b0v+lpHtW7yA7hk0C0vRrNzOaK9htu/xSWS0qGi4aEqQXYY64BlZHj9UEc7fc+57iVebZOVisUId4/Xh71Ulz/6JrOIeBLwUzZSmymeklksddelfgkziT0KGnN4Tfu8GvAANIJRxRsm9OcAbUSd1oTFujuM4juM4jhMl30nNGtavQcuAn849mwq8CjWWi8Zbykj1q0nYbcY3xnHI2M9idB5VPzpXGZPRMuKn6W3/4Cbhr6WTOzuEeyE64yvjatSBejHq2BSN7cwIf4f6FK8mZEuPi+eRNmGN8Lfq+J3sfpYvqfIxqsqlDkv6VyBT/gvQweO7o72tfzGG0QttL793HMdxHMdxnuFkx7YULV2dHu5/oXB/OrI6WnYIcapfqfJN3eQZIL7k82NB5teMNmxjxRJGntlB/gcRuW0pX3I8nhGjUdcUnj23RH43ZOTnUbqXoYLiPQx8qnB/P9SRfojRx6M0iVeRAerzbAfKy2IztDR5GB230ksYoHPIhpEBqBcUnu2P0r8M2KChfEZquaSm/6VIV4tshWbDl5K2Px3ccJLz7OP7SF8uNt6PcS06/mkJOmfQcRxtq1oSrguwb3naFK3q+QPSqzf1I3KO46w8xhV+T0cfzo2Ay4A/Ai9D5y/eDLyS0XvdhlDDeAu6Z9NS/UqVb+pmJiN75qahM/1uQzNKoFnSY8L/h6LljE+hM0sfppshug3FpIRRJJvZOpD6juoH0L7cq9GBzg+g2bC9UKfmbrQs+Q85N4tQJ2kJ6vzsgIzzLEcv9Pkl4WyEOpVbhbhdh8r8INRJeRva59hLvCAtzwaB/0Sz6beHtExH57hOBn4U4lecsUwtl/EhT14dwvheiP92aGnvuJDezzWUz0gtl9T0fwXV5evQsuF7kc4eGJ6/gfRjmuYEf/fGl/s6zw72RtbND0WG5GL3YzwX7T+fgI6Geh9areM4z1Y2RN/DHdD37/vIeKTllIPno/bKDeHv9eiown/2JaaO44wJm6LG512okbsUNarLZm6GUEdl8xb8aiLfxM0g3dZI89dQgmzVESwpYeTZDrvBpBnAOahRcz9alvsw8KsQfln6j0Uv7ofQB+B2NNu8eSSs9dHs9O0ojx9AgwIvbylekJZnewHfQhaWH0JLYe9D55C+g+7BlyZhZDwHdSx/iRqUT6JO3uVoqXmv8pBeLqnpn4nOU70pxGlFSOv5jOzdTmUOPpPqPPsYoHzGtOq+hSlI/63G0RznmcpGqA23LvqWLmDkvPZUfge8qKV4OY7jOI7zLGBPtErgTtTRtc4+HYE68I+jRv0eheeDdA883N0gbIs/U5FBqaVoFvxaRjemjkcDM4+gAYQfMLKHOyUu1ryK5U0svmBLN2jG4sKQrmXA79HASYYl7UMlYQ2jAa5ULHkUyx8rA7TbSV2EVkJ8umF86pgAfJKRdN+Otm1MrHMUiJXxkagT8Ei4foFWcqSGnVIuJ6DyPbtw31LfLP5YdMQiA/H8s+TPIDZ9rEvXUIkf/dQz6F3XjkJl+QDdZWRlV7SyrmrAuheapM/ipi2ZjKp63tY3EOL1PBYXSzht1bvV0R9rWNZy6Bf9atMl70NzHMfplbXQkqy5CW4OQSskTkF7bK9Bx+cUR8pvQi/s7NqxYdgxf76ElosfGp5dgUb9s73IA8C5aMvBPmhGfQGjVxJY4mKRseRNLL4ZsXSvG/wfhzol26OVA3lr5wPE075bIZz9wv381gErsTyy5M+SimsT+svLUBnsTH3HKk8H2znQx6HO5NHIVsD7UaPg+Ig7Sxn/FW052AV1CK5Ex1LtlBC2VadBq3YORx3jIgPE65vFH4uOWGQs+Wctm5g+xtK1MvUMete19VCebQ68EOnEQGI8NwC+Crwbm6G+DvZz1VPqbIqbtmQy6up5W99ASz2PxcUSTlv1bnX0xyJjLYdUOtj1op9tOsdxnDHDOuq2CDUQ89wCzMv9HiR+Bq8l7Jg/k1FD+I2F+9fTbWAsY220t/0NiXGxyMTyxhrfQeL5dwpxw2dFYmkHzU7dSu8zH2V5ZKk7VgZIm0kdB3wYNcQeRw2HMrnjqLZTUKSDrfFwOd32Ei4kvr+vSRmDDL1lx6dZwraWyzrIvsE+aHtNbHatqr7V+WPREaseWfLPkj+D2N5nKfnTTz2D3nVtFqNneY9F+pMR06c1kD2M2cbwIK0x3iR9FjdtyUBafWj6DQRbPY/FxRJOnrbq3erij0UmVg7Wb1CRDna9yNNmm85nUh3HWeWZhGZsrijcvwLNnuTZEvgbWkLyLeL7rauo82cSWq73eMHNMmT0rIyp6H37YMP4VGHJm5T4xvJvJtpv/U30sVuMRk/rGr2xtE8C3g58GdvMRwopdacfHAu8E82SbYOMlf0UNd6yI6kmo/3qf2o57GtR43Db8Hv78PtHEXepZTwBeCvqHF5rDDulXM5DjaorI/HOqKpvdf5YdMSqR5b8s5aN5X1mzZ9+6lnmf6+6dgc6Rm0yyusBRs5rh2p9AuVvB+XD11Ijb6BJ+qzv5zZkMlL1pYo2vgWWuPT6zW7rHb+q+WMlVg51OjNWmPPIO6mO46zqbIgaLPcU7t/D6OOOFqER9H9Dy4s2QnvlUo+OivmT7cH7KFrmNwE1/l6BliuVcQb6eLRxbnMeS95Y42vJvy3RMsWlaNnj59AZ0kfUxDGW9ployVKn4vlcZJm6Cda6Y2EBWib5OrTc9RWR+6C8/BGynr0U5cEX0bLGn6AlcL8Gfo7NgmkKpwLfQJbUn0CWvS9ES2PrsJbxjsA/kLG3c1E5/t4YtrVcDkeW5T8WiXOesvoW88eiI1Y9suSfpWws+piSPzE9g7HXtV+iJX+/RbrxZ2ThN6NKnwBehZYQzkTlv5jq5dFNaJI+i5u2ZKCZvpTRxrfAEpc2vtltveNXNX+sxMqhTmfGipWdR47jOI2wLA3ZJMgVN9WfRP3s01ropffBHsKu8mc66lgMoyWA16Ezd4tHK4GOZLoLfbCraLrcx5o3KfHNKEv3CtSIyDOvxh9L2udTf9zWILJibaGYR03rTlschZaeLkANiQ0b+HEC6gxm1xOoHPL3ygyoHAz8Bfh31FifjWYX3x0Jz1rGk1C57hqe38/IvtpY2JZy2QYZAtk293wh9csXy+qb1R+LjlhkLPnXpGyK+piaPzE9A7uu9fIu6oWx1Kcm6bO4aUumib708g2sq+dN4lIVTiy+TcpldfDHKhN731h1pqleWOOZZ6y/y47jOCYsL7RJqEE4q3D/HNRgrOMq4PM9hB3zZy1GZlG+Dfyw8Pw09NHdPuJ/049Uat7E4lukmO6l6OiiPLOBx0rcWtK+GfqAFvf5NaWYR73UnbaYjhpdi9FxXNslul8fdbqy6xLgzMK9KSXu7kAGefJ8FM1O1ZFSxnkW5NzFwraUyxxGOoPZNQw8Hf5fo+C2qr6l+mPRkToZS/41LZu8Ps7Bnq5+6xmsPF0bK31qkj6Lm7Zk5pBWz6G3b2BdPW8Sl6pwYvFtUi6rgz9WGcv7xqIzTfXCGs885jzy5b6O46zqrEDGSfYr3N+PkT1wZUxGI7l39Rh+nT+PhfvroaU2l+WenYmWA+5N/YxlL6TmTV18i5Sl+xo0Sp5na/ShzGNN+zvRPppYZ7kpTetOm/wZnTO9K9ontFO9eBcPImM32fVoyb1lJe7WRB2TPMXfZVjLuMh4VGcsYVvK5VI0y7hz7vo1cFH4f0XOXV19S/EHbDpSJ2PJvyZlU9THlHT1W89g5enaWOlTk/RZ3LQlk1rPU0j9FjSNS5Nvdlv1blXzx4rlfWPRmaZ60YRV4bvsOI5TytqMfLiGkVXTnRltenwuo5d9HIJebIehUcAz0PKTzXIyn0Vng22Bjva4HO0jy8tYwrb481pg/yCzHxqhXIQOoAftLXsEGUOZlrvWToyLRcaSN7H4WtO9G1oG9BE0sjoLjcwemZOxpB3UqVmK9s/0QiyPLPnTD45DMwrbo0bDyWhJ7MY9+tvBZnWxg/bIZkd6HISW4J2WkynqGdjK+FS0VGtz1Bidh2ZJ9k8Iu0m5LKR7yaC1vsX8seiIRcaSfx3i+WPRR0u6VpaeQX91baz1CWzpa/LtakumyEK660Nb30BLPY/Fpa1vtiVvVkd/LDJ15dCLznSw60W/2nSO4zgrnQHKD5jv5GQG6bZAeQQ6nH45GoXbs/D8InSY9ApkLfASupf+WcK2+HMwGp1cjkZ9z0YWWzPKwhhm9EvfEheLDMTzJhZfa7pBDesbkJXTm9FZj3mLjpa0gyzaDqOPZy8MVITXycnE8qcfnIg+ystQw+By4CUt+NvB1niYij78S0McbkPHFUzOyQxSbuk1Vsad4O9yNEO3AHXgUsKG9HJZSHdD11rfYv5YdMQiA/H8s+SPVR9j6VqZegb907Wx1qeMWPoGSf92tSmTZyHd9WGAdr6BEK/nsbi09c2GeN6sjv5Yw6oqh150poNdLyzxHKSZXjiO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziO4ziOk8T/AziZ2Eup91+uAAAAAElFTkSuQmCC\n", "text/latex": [ "$$0.000121739631518895 s + \\frac{1.0 \\left(3.57799435572491 \\cdot 10^{-8} s^{2} + 0.00029390546949122 s + 1.0\\right)}{1.05159211095627 \\cdot 10^{-11} s^{3} + 8.63804249968547 \\cdot 10^{-8} s^{2} + 0.000415645101010116 s + 1.0}$$" ], "text/plain": [ " ⎛ 2 \n", " 1.0⋅⎝3.57799435572491e-8⋅s + 0.0002939054\n", "0.000121739631518895⋅s + ─────────────────────────────────────────────────────\n", " 3 2 \n", " 1.05159211095627e-11⋅s + 8.63804249968547e-8⋅s + 0.\n", "\n", " ⎞ \n", "6949122⋅s + 1.0⎠ \n", "──────────────────────────\n", " \n", "000415645101010116⋅s + 1.0" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "apart(1/Z11)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The term, $0.000121739631518895s$ , is the first element value in the filter, with the source resistance of 1 ohm. The value will need to be impedance scaled in the final design. Removing $0.000121739631518895s$ from the expression by subtracting it, we get the following result." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$3.79470760369927 \\cdot 10^{-19} s + \\frac{1.0 \\left(3.57799435572491 \\cdot 10^{-8} s^{2} + 0.00029390546949122 s + 1.0\\right)}{1.05159211095627 \\cdot 10^{-11} s^{3} + 8.63804249968547 \\cdot 10^{-8} s^{2} + 0.000415645101010116 s + 1.0}$$" ], "text/plain": [ " ⎛ 2 \n", " 1.0⋅⎝3.57799435572491e-8⋅s + 0.0002939054\n", "3.79470760369927e-19⋅s + ─────────────────────────────────────────────────────\n", " 3 2 \n", " 1.05159211095627e-11⋅s + 8.63804249968547e-8⋅s + 0.\n", "\n", " ⎞ \n", "6949122⋅s + 1.0⎠ \n", "──────────────────────────\n", " \n", "000415645101010116⋅s + 1.0" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "apart(1/Z11) - 0.000121739631518895*s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is where we run into a problem with the calculations. There are terms in the result that have small exponents. e.g. $10^{-19}$ and for these terms it is not easy to determine whether these are actually zero or should be carried along in subsequent steps. To avoid this difficulty, the filter natural frequency is normalized to 1 rad/s, which avoids large exponents in the coefficients of the filter polynomial.\n", "\n", "Re-calculate the numerator and denominator polynomials with the normalized frequency of 1 rad/s." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{1.0}{1.0 s^{4} + 2.61312592975275 s^{3} + 3.41421356237309 s^{2} + 2.61312592975275 s + 1.0}$$" ], "text/plain": [ " 1.0 \n", "─────────────────────────────────────────────────────────────────────────────\n", " 4 3 2 \n", "1.0⋅s + 2.61312592975275⋅s + 3.41421356237309⋅s + 2.61312592975275⋅s + 1.0" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order = 4\n", "Wn = 1\n", "num, den = signal.butter(order, Wn, btype='lowpass', output='ba', analog=True)\n", "\n", "Poly(num, s)/Poly(den, s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the driving point impedance for the filter can be written." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{2.61312592975275 s^{3} + 3.41421356237309 s^{2} + 2.61312592975275 s + 1.0}{2.0 s^{4} + 2.61312592975275 s^{3} + 3.41421356237309 s^{2} + 2.61312592975275 s + 1.0}$$" ], "text/plain": [ " 3 2 \n", " 2.61312592975275⋅s + 3.41421356237309⋅s + 2.61312592975275⋅s + 1.0 \n", "─────────────────────────────────────────────────────────────────────────────\n", " 4 3 2 \n", "2.0⋅s + 2.61312592975275⋅s + 3.41421356237309⋅s + 2.61312592975275⋅s + 1.0" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Z11 = (Poly(den, s)-s**order)/(Poly(den, s)+s**order)\n", "Z11" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$0.76536686473018 s + \\frac{0.541196100146197 \\left(0.765366864730178 s^{2} + 1.0 s + 0.541196100146198\\right)}{0.76536686473018 s^{3} + 1.0 s^{2} + 0.76536686473018 s + 0.292893218813452}$$" ], "text/plain": [ " ⎛ 2 \n", " 0.541196100146197⋅⎝0.765366864730178⋅s + 1.0⋅s + 0.5411\n", "0.76536686473018⋅s + ─────────────────────────────────────────────────────────\n", " 3 2 \n", " 0.76536686473018⋅s + 1.0⋅s + 0.76536686473018⋅s + 0.292\n", "\n", " ⎞\n", "96100146198⎠\n", "────────────\n", " \n", "893218813452" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "apart(1/Z11)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first value is 0.76536686473018*s, which we can save in an array called normalized_values" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "normalized_values = np.zeros(order)\n", "normalized_values[0] = 0.76536686473018" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now remove the term $0.76536686473018s$ by subtracting it, we get:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$- 4.44089209850063 \\cdot 10^{-16} s + \\frac{0.541196100146197 \\left(0.765366864730178 s^{2} + 1.0 s + 0.541196100146198\\right)}{0.76536686473018 s^{3} + 1.0 s^{2} + 0.76536686473018 s + 0.292893218813452}$$" ], "text/plain": [ " ⎛ 2 \n", " 0.541196100146197⋅⎝0.765366864730178⋅s + 1.0⋅s + 0\n", "-4.44089209850063e-16⋅s + ────────────────────────────────────────────────────\n", " 3 2 \n", " 0.76536686473018⋅s + 1.0⋅s + 0.76536686473018⋅s + \n", "\n", " ⎞\n", ".541196100146198⎠\n", "─────────────────\n", " \n", "0.292893218813452" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Za = apart(1/Z11) - 0.76536686473018*s\n", "Za" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, Sympy numerical evaluation can't tell an expression that is exactly zero apart from one that is merely very small. Using chop=True doesn't help. I also tried .evalf(20) to get more digits displayed, then tried chop=True, and these still left small values that interfered with the next step.\n", "\n", "The work around is to copy the terms needed by hand into the next step." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{0.414213562373094 s^{2} + 0.541196100146197 s + 0.292893218813453}{0.76536686473018 s^{3} + 1.0 s^{2} + 0.76536686473018 s + 0.292893218813452}$$" ], "text/plain": [ " 2 \n", " 0.414213562373094⋅s + 0.541196100146197⋅s + 0.292893218813453 \n", "─────────────────────────────────────────────────────────────────────\n", " 3 2 \n", "0.76536686473018⋅s + 1.0⋅s + 0.76536686473018⋅s + 0.292893218813452" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# don't copy the small values\n", "Za = 0.541196100146197*(0.765366864730178*s**2 + 1.0*s + 0.541196100146198)/(0.76536686473018*s**3 + 1.0*s**2 + 0.76536686473018*s + 0.292893218813452)\n", "Za" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Continuing with the partial fraction expansion." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$1.84775906502258 s + \\frac{0.5411961001462 \\left(0.76536686473018 s + 1.0\\right)}{0.765366864730178 s^{2} + 1.0 s + 0.541196100146198} - 6.43275715994145 \\cdot 10^{-15}$$" ], "text/plain": [ " 0.5411961001462⋅(0.76536686473018⋅s + 1.0) \n", "1.84775906502258⋅s + ──────────────────────────────────────────────── - 6.4327\n", " 2 \n", " 0.765366864730178⋅s + 1.0⋅s + 0.541196100146198 \n", "\n", " \n", "5715994145e-15\n", " \n", " " ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "apart(1/Za)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next value is 1.84775906502258*s, copying the remainder by hand, leaving out small numbers" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "normalized_values[1] = 1.84775906502258" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{0.414213562373098 s + 0.5411961001462}{0.765366864730178 s^{2} + 1.0 s + 0.541196100146198}$$" ], "text/plain": [ " 0.414213562373098⋅s + 0.5411961001462 \n", "────────────────────────────────────────────────\n", " 2 \n", "0.765366864730178⋅s + 1.0⋅s + 0.541196100146198" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Zb = 0.5411961001462*(0.76536686473018*s + 1.0)/(0.765366864730178*s**2 + 1.0*s + 0.541196100146198)\n", "Zb" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$1.84775906502256 s + 6.1647256116105 \\cdot 10^{-15} + \\frac{0.99999999999999}{0.76536686473018 s + 1.0}$$" ], "text/plain": [ " 0.99999999999999 \n", "1.84775906502256⋅s + 6.1647256116105e-15 + ────────────────────────\n", " 0.76536686473018⋅s + 1.0" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "apart(1/Zb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next value is 1.84775906502256*s, copying the remainder by hand, leaving out small numbers" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "normalized_values[2] = 1.84775906502256" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{0.99999999999999}{0.76536686473018 s + 1.0}$$" ], "text/plain": [ " 0.99999999999999 \n", "────────────────────────\n", "0.76536686473018⋅s + 1.0" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Zc = 0.99999999999999/(0.76536686473018*s + 1.0)\n", "Zc" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$0.765366864730188 s + 1.0$$" ], "text/plain": [ "0.765366864730188⋅s + 1.0" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "apart(1/Zc)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "normalized_values[3] = 0.765366864730188" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normalized 4th order values are:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.76536686, 1.84775907, 1.84775907, 0.76536686])" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "normalized_values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These values agree with the values in Table 11-2 of [2].\n", "\n", "### Frequency and impedance scaling\n", "Now scale to correct frequency and source resistor value.\n", "\n", "Frequency scaling factor (FSF) \n", "\n", "$FSF = \\frac {desired frequency}{normalized frequency} \\text{ (in rad/s)}$\n", "\n", "Diving all reactive elements by FSF\n", "\n", "Impedance scaling factor \n", "$R' = Z \\times R$ \n", "$L' = \\frac {Z \\times L}{FSF}$ \n", "$C' = \\frac {C}{Z \\times FSF}$ \n", "\n", "primes are values after scaling" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C1 = 121.8 nF\n", "L1 = 294.1 mH\n", "C2 = 294.1 nF\n", "L2 = 121.8 mH\n" ] } ], "source": [ "FSF = fp*2*np.pi\n", "Z = 1000\n", "\n", "# shunt C\n", "C1 = normalized_values[0]/(Z*FSF)\n", "print('C1 = {:.1f} nF'.format(C1/1e-9))\n", "# series L\n", "L1 = Z*normalized_values[1]/FSF\n", "print('L1 = {:.1f} mH'.format(L1/1e-3))\n", "# shunt C\n", "C2 = normalized_values[2]/(Z*FSF)\n", "print('C2 = {:.1f} nF'.format(C2/1e-9))\n", "# series L\n", "L2 = Z*normalized_values[3]/FSF\n", "print('L2 = {:.1f} mH'.format(L2/1e-3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### LTspice simulation results \n", "A schematic of the filter was drawn in LTspice and the AC frequency response was simulated. \n", "\n", " \n", "\n", "The plot below agrees with the Bode plot obtained from SciPy.\n", "\n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Summary\n", "The SciPy filter functions are useful for determining the order of various canonical filter types and generating plots of the frequency and transient responses. The filter polynomial coefficients generated by the filter functions can be used to derive the component values for the capacitors and inductors, but this usually is not easy and SciPy doesn't have any tools to help with circuit realization. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }