(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 736454, 31354]*) (*NotebookOutlinePosition[ 754178, 31854]*) (* CellTagsIndexPosition[ 750683, 31762]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData["A Review of\nFilter Design"], "Title", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "Apple Computer Technical Report #34\nBy\nMalcolm Slaney\nPerception Systems\ \[Dash]Advanced Technology Group\nApple Computer\n\[Copyright] 1989-1993"], "Subsubtitle", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox["This ", Evaluatable->False, AspectRatioFixed->True], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " notebook provides many functions that are useful when designing Infinite \ Impulse Response (IIR) filters. This notebook is limited to Butterworth and \ Chebychev polynomial approximations, and transformations of these polynomials \ into lowpass, highpass, bandpass, and band reject filters. This report also \ describes how these continuous-domain filters can be implemented as digital \ filters.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "This report is not meant to be a tutorial on filter design but instead to \ provide polynomial filter design functions in a readily accessible form. For \ more details on the transformation described here the reader is referred to \ analog and digital filter design books [Daryanani1976 and Oppenheim1989]."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The material in this report started as the Appendix to a previous report \ on cochlear filters [Slaney1988]. The signal processing and filter design \ material was extracted and augmented with a number of algorithms for \ higher-order filter design. These filter design functions are based on a \ course on filter design taught by Prof. Ray DeCarlo at Purdue University \ around 1980. Portions of this notebook were used to illustrate two different \ publications by the author [Slaney1990 and Slaney1992]. A more comprehensive \ signal processing notebook has been described by Evans [Evans1992]. Finite \ impulse response (FIR) filter design is also discussed in a series of ", Evaluatable->False, AspectRatioFixed->True], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" notebooks by Julius Smith [Smith1992].", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["This notebook defines several ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " functions for signal processing applications. First and second order \ filters are described since the cochlear model is defined this way. \ Continuous time filters are described in Section 1 and Section 2 describes \ the discrete time versions of these filters. In general, the functions \ provided in the continuous case and in the discrete case are similar. To \ avoid confusion the word \[OpenCurlyDoubleQuote]Continuous\ \[CloseCurlyDoubleQuote] is used in the names of the continuous domain \ filters.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[" 1. - Continuous Time Filter Design"], "Section", Evaluatable->False, PageBreakAbove->True, AspectRatioFixed->False, CellTags->{"References", "Continuous Time Filter Design"}], Cell[TextData[ "This section first defines some useful functions when working with \ continuous (analog) filters. Section 1.2 derives a number of properties of \ second-order continuous filters, and Section 1.3 describes how to use \ higher-order polynomials to design lowpass, highpass, bandpass, and \ band-reject filters."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData[" 1.1 - Continuous Filter Functions"], "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Continuous Filter Functions"], Cell[TextData[{ StyleBox[ "Continuous time filters are described by giving the filter\ \[CloseCurlyQuote]s response as a function of complex frequency ", Evaluatable->False, AspectRatioFixed->False], StyleBox["s", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ ". In the expressions that follow, filters can be an arbitrary function of \ the complex frequency s. A typical filter looks like", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ aFilter = a s^3 + b s^2 + c s + d\ \>", "\<\ 3 2 aFilter = a s + b s + c s + d\ \>"], "Input", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The following functions are used to evaluate the complex response of a \ filter for a real frequency ", Evaluatable->False, AspectRatioFixed->True], StyleBox["f", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " (in cycles per second), and its corresponding magnitude and phase. A \ filter\[CloseCurlyQuote]s response function is evaluated along the imaginary \ axis by making the substitution s->I\[NonBreakingSpace]2\[NonBreakingSpace]Pi\ \[NonBreakingSpace]f (or j\[NonBreakingSpace]2\[NonBreakingSpace]", Evaluatable->False, AspectRatioFixed->True], StyleBox["\[Pi]", Evaluatable->False, AspectRatioFixed->True], StyleBox["\[NonBreakingSpace]f in conventional EE notation.) ", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "ContinuousFilterEval[filter_, newS_] :=\n\t\tfilter /. s->newS;"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFilterEval"], Cell[TextData[ "ContinuousFilterGain[filter_,f_] := \n\t\tContinuousFilterEval[filter,I 2 Pi \ f];"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFilterGain"], Cell[TextData[ "ContinuousFilterMag[filter_,f_] := \n\t\t\ Abs[ContinuousFilterGain[filter,f]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFilterMag"], Cell[TextData[ "ContinuousFilterPhase[filter_,f_] := \n\t\t\ Arg[ContinuousFilterGain[filter,f]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFilterPhase"], Cell[TextData["dB[x_] := 20 Log[10,x]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"dB"], Cell[TextData[ "ContinuousFilterDb[filter_,f_] := \n\t\tdB[ContinuousFilterMag[filter,f]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFilterDb"], Cell[TextData[ "We define the following function to display the frequency response of a \ continuous filter. (The plot starts at 0.01Hz to avoid any problems with \ filters that have a zero at DC.)"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ContinuousFreqResponse[filter_, maxf_, opts_:{}] :=\n\tBlock[{response},\n\t\ \t\tresponse = N[ContinuousFilterDb[filter,f]];\n\t\t\t\ Plot[response,{f,.01,maxf},\n\t\t\t\tAxesLabel->{\" Hz\", \"dB\"},\n\t\t\t\t\ PlotLabel->\"Response\",\n\t\t\t\topts]];"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFreqResponse"], Cell[TextData[{ StyleBox[ "We define a similar function for displaying the frequency response of a \ filter as a function of radian frequency (", Evaluatable->False, AspectRatioFixed->False], StyleBox["\[Omega]", Evaluatable->False, AspectRatioFixed->False], StyleBox[" or radians per second, rps).", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ContinuousFreqResponseRadians[filter_, maxw_, opts_:{}] :=\n\t\ Block[{response},\n\t\t\tresponse = N[ContinuousFilterDb[filter,w/2/Pi]];\n\t\ \t\tPlot[response,{w,.01,maxw},\n\t\t\t\tAxesLabel->{\" RPS\", \"dB\"},\n\t\t\ \t\tPlotLabel->\"Response\",\n\t\t\t\topts]];"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousFreqResponseRadians"], Cell[TextData[ "Note, for each of these functions there is a third optional argument which \ allows additional options on each plot to be set. We use this feature to plot \ family of responses by turning off the display until we are ready to show the \ final accumulated result."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox["The ", Evaluatable->False, AspectRatioFixed->False], StyleBox["ContinuousAdjustGain", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " function is used to modify a filter so that it has unity gain (and zero \ phase) at any desired frequency.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ContinuousAdjustGain[filter_,f_] := \n\t\t\ filter/ContinuousFilterGain[filter,f]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousAdjustGain"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.2 - Continuous Second Order Filters"], "Subsection", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "This section describes the behaviour of a second-order polynomial filter. \ Second-order filters are useful because they represent a simple building \ block for more complicated filters. This section describes how to use these \ simple resonators to build bandpass and band-reject filters. The concepts \ shown here will be useful in the following sections when higher-order filters \ are described."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "A second order filter is described by its resonant frequency (f) and its \ quality factor (q). The 3 dB bandwidth of the resulting filter is \ approximately equal to f/q. The following function computes the roots of a \ second order polynomial with a given center frequency (f in cycles per \ second) and bandwidth (q). These roots will be used later in the numerator of \ a filter function to make a notch in the frequency response or in the \ denominator to make a peak."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ *) ContinuousSecondOrderRoot[f_,q_] := \t\t-2 Pi f/q/2 + I 2 Pi f Sqrt[1-1/(2q)^2] (*\ \>", "\<\ ContinuousSecondOrderRoot[f_, q_] := -2 Pi f 1 ------- + I 2 Pi f Sqrt[1 - ------] q 2 2 (2 q)\ \>"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousSecondOrderRoot"], Cell[TextData[ "For any given frequency these roots trace out a circle in the s-plane. For \ very large q the roots are close to the imaginary axis. Thus as the frequency \ response is evaluated along the imaginary axis the roots closest to the \ imaginary axis (high q) will have a sharper response than those that are \ farther away (low q)."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "The plot below shows the location of one of the two roots of a second order \ filter with a constant resonant frequency. Each second order filter has two \ roots that are complex comjugates of each other. This plot shows only one of \ the two roots. Those roots that are closest to the imaginary axis have a high \ q (2.2 in this case) while those on the left near the real axis have a low q \ (0.501) and thus a broad response in the frequency domain. "], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox["The radius of this circle is 2", Evaluatable->False, AspectRatioFixed->False], StyleBox["\[Pi]", Evaluatable->False, AspectRatioFixed->False], StyleBox[ " times the resonant frequency (1000 Hz). For larger resonant frequencies, \ a cirle with a larger radius will result. In all cases a filter with real \ coefficients will have a second set of roots that are complex conjugates of \ the ones shown below. For the filter to be stable all of the roots must be in \ the left half of the complex plane.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ListPlot[Map[{Re[#],Im[#]}&,\n\t\tTable[ContinuousSecondOrderRoot[1000,q],\n\ \t\t\t\t{q,.501,2.2,.1}]],\n\t\tPlotRange->{{-6500,0},{0,6500}},\n\t\t\ AspectRatio->1,\n\t\tAxesLabel->{\"Real Frequency\",\"Imaginary Frequency\"},\ \n\t\tPlotLabel->\"Location of Roots vs. Q (Complex S-Plane)\"];"], "Input", CellOpen->False, AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 1 0.000153846 2.71051e-20 0.000153846 [ [(-6000)] 0.07692 0 0 2 Msboxa [(-5000)] 0.23077 0 0 2 Msboxa [(-4000)] 0.38462 0 0 2 Msboxa [(-3000)] 0.53846 0 0 2 Msboxa [(-2000)] 0.69231 0 0 2 Msboxa [(-1000)] 0.84615 0 0 2 Msboxa [(0)] 1 0 0 2 Msboxa [(Real Frequency)] 1.025 0 -1 0 Msboxa [(Location of Roots vs. Q \\(Complex S-Plane\\))] 0.5 1 0 -2 0 0 1 Mouter \ Mrotsboxa [(1000)] 0.9875 0.15385 1 0 Msboxa [(2000)] 0.9875 0.30769 1 0 Msboxa [(3000)] 0.9875 0.46154 1 0 Msboxa [(4000)] 0.9875 0.61538 1 0 Msboxa [(5000)] 0.9875 0.76923 1 0 Msboxa [(6000)] 0.9875 0.92308 1 0 Msboxa [(Imaginary Frequency)] 1 1 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.00725 1.001 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.07692 0 moveto 0.07692 0.00625 lineto stroke grestore [(-6000)] 0.07692 0 0 2 Mshowa gsave 0.002 setlinewidth 0.23077 0 moveto 0.23077 0.00625 lineto stroke grestore [(-5000)] 0.23077 0 0 2 Mshowa gsave 0.002 setlinewidth 0.38462 0 moveto 0.38462 0.00625 lineto stroke grestore [(-4000)] 0.38462 0 0 2 Mshowa gsave 0.002 setlinewidth 0.53846 0 moveto 0.53846 0.00625 lineto stroke grestore [(-3000)] 0.53846 0 0 2 Mshowa gsave 0.002 setlinewidth 0.69231 0 moveto 0.69231 0.00625 lineto stroke grestore [(-2000)] 0.69231 0 0 2 Mshowa gsave 0.002 setlinewidth 0.84615 0 moveto 0.84615 0.00625 lineto stroke grestore [(-1000)] 0.84615 0 0 2 Mshowa gsave 0.002 setlinewidth 1 0 moveto 1 0.00625 lineto stroke grestore [(0)] 1 0 0 2 Mshowa gsave 0.001 setlinewidth 0.10769 0 moveto 0.10769 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.13846 0 moveto 0.13846 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.16923 0 moveto 0.16923 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.2 0 moveto 0.2 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.26154 0 moveto 0.26154 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.29231 0 moveto 0.29231 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.32308 0 moveto 0.32308 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.35385 0 moveto 0.35385 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.41538 0 moveto 0.41538 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.44615 0 moveto 0.44615 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.47692 0 moveto 0.47692 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.50769 0 moveto 0.50769 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.56923 0 moveto 0.56923 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.6 0 moveto 0.6 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.63077 0 moveto 0.63077 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.66154 0 moveto 0.66154 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.72308 0 moveto 0.72308 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.75385 0 moveto 0.75385 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.78462 0 moveto 0.78462 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.81538 0 moveto 0.81538 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.87692 0 moveto 0.87692 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.90769 0 moveto 0.90769 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.93846 0 moveto 0.93846 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.96923 0 moveto 0.96923 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.04615 0 moveto 0.04615 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.01538 0 moveto 0.01538 0.00375 lineto stroke grestore [(Real Frequency)] 1.025 0 -1 0 Mshowa gsave 0.002 setlinewidth 0 0 moveto 1 0 lineto stroke grestore [(Location of Roots vs. Q \\(Complex S-Plane\\))] 0.5 1 0 -2 0 0 1 Mouter \ Mrotshowa gsave 0.002 setlinewidth 1 0.15385 moveto 1.00625 0.15385 lineto stroke grestore [(1000)] 0.9875 0.15385 1 0 Mshowa gsave 0.002 setlinewidth 1 0.30769 moveto 1.00625 0.30769 lineto stroke grestore [(2000)] 0.9875 0.30769 1 0 Mshowa gsave 0.002 setlinewidth 1 0.46154 moveto 1.00625 0.46154 lineto stroke grestore [(3000)] 0.9875 0.46154 1 0 Mshowa gsave 0.002 setlinewidth 1 0.61538 moveto 1.00625 0.61538 lineto stroke grestore [(4000)] 0.9875 0.61538 1 0 Mshowa gsave 0.002 setlinewidth 1 0.76923 moveto 1.00625 0.76923 lineto stroke grestore [(5000)] 0.9875 0.76923 1 0 Mshowa gsave 0.002 setlinewidth 1 0.92308 moveto 1.00625 0.92308 lineto stroke grestore [(6000)] 0.9875 0.92308 1 0 Mshowa gsave 0.001 setlinewidth 1 0.03077 moveto 1.00375 0.03077 lineto stroke grestore gsave 0.001 setlinewidth 1 0.06154 moveto 1.00375 0.06154 lineto stroke grestore gsave 0.001 setlinewidth 1 0.09231 moveto 1.00375 0.09231 lineto stroke grestore gsave 0.001 setlinewidth 1 0.12308 moveto 1.00375 0.12308 lineto stroke grestore gsave 0.001 setlinewidth 1 0.18462 moveto 1.00375 0.18462 lineto stroke grestore gsave 0.001 setlinewidth 1 0.21538 moveto 1.00375 0.21538 lineto stroke grestore gsave 0.001 setlinewidth 1 0.24615 moveto 1.00375 0.24615 lineto stroke grestore gsave 0.001 setlinewidth 1 0.27692 moveto 1.00375 0.27692 lineto stroke grestore gsave 0.001 setlinewidth 1 0.33846 moveto 1.00375 0.33846 lineto stroke grestore gsave 0.001 setlinewidth 1 0.36923 moveto 1.00375 0.36923 lineto stroke grestore gsave 0.001 setlinewidth 1 0.4 moveto 1.00375 0.4 lineto stroke grestore gsave 0.001 setlinewidth 1 0.43077 moveto 1.00375 0.43077 lineto stroke grestore gsave 0.001 setlinewidth 1 0.49231 moveto 1.00375 0.49231 lineto stroke grestore gsave 0.001 setlinewidth 1 0.52308 moveto 1.00375 0.52308 lineto stroke grestore gsave 0.001 setlinewidth 1 0.55385 moveto 1.00375 0.55385 lineto stroke grestore gsave 0.001 setlinewidth 1 0.58462 moveto 1.00375 0.58462 lineto stroke grestore gsave 0.001 setlinewidth 1 0.64615 moveto 1.00375 0.64615 lineto stroke grestore gsave 0.001 setlinewidth 1 0.67692 moveto 1.00375 0.67692 lineto stroke grestore gsave 0.001 setlinewidth 1 0.70769 moveto 1.00375 0.70769 lineto stroke grestore gsave 0.001 setlinewidth 1 0.73846 moveto 1.00375 0.73846 lineto stroke grestore gsave 0.001 setlinewidth 1 0.8 moveto 1.00375 0.8 lineto stroke grestore gsave 0.001 setlinewidth 1 0.83077 moveto 1.00375 0.83077 lineto stroke grestore gsave 0.001 setlinewidth 1 0.86154 moveto 1.00375 0.86154 lineto stroke grestore gsave 0.001 setlinewidth 1 0.89231 moveto 1.00375 0.89231 lineto stroke grestore gsave 0.001 setlinewidth 1 0.95385 moveto 1.00375 0.95385 lineto stroke grestore gsave 0.001 setlinewidth 1 0.98462 moveto 1.00375 0.98462 lineto stroke grestore [(Imaginary Frequency)] 1 1 0 -4 Mshowa gsave 0.002 setlinewidth 1 0 moveto 1 1 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto closepath clip newpath gsave 0.008 setlinewidth 0.03529 0.06104 Mdot 0.1958 0.53635 Mdot 0.31053 0.67751 Mdot 0.3966 0.75519 Mdot 0.46357 0.80414 Mdot 0.51716 0.83742 Mdot 0.56102 0.86122 Mdot 0.59757 0.87889 Mdot 0.6285 0.89241 Mdot 0.65502 0.90299 Mdot 0.678 0.91144 Mdot 0.69811 0.91829 Mdot 0.71586 0.92394 Mdot 0.73164 0.92865 Mdot 0.74575 0.93261 Mdot 0.75846 0.93598 Mdot 0.76996 0.93887 Mdot grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{341, 337}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "We create a second order filter using a pair of complex conjugate roots as a \ function of the complex frequency s."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ContinuousSecondOrderFilter[f_,q_] := \n\t\ Expand[(s-ContinuousSecondOrderRoot[f,q])\n\t\t\ (s-Conjugate[ContinuousSecondOrderRoot[f,q]])]//N"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousSecondOrderFilter"], Cell[TextData[ "The maximum response of this filter is not at its \ \[OpenCurlyDoubleQuote]center\[CloseCurlyDoubleQuote] frequency but at a \ slightly lower frequency given by."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ContinuousNaturalResonance[f_,q_] := \n\t\t\t\t\t\t\t\tf Sqrt[1 - \ 1/(2q^2)]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ContinuousNaturalResonance"], Cell[TextData[ "The approximate location of the 3 dB points of the response curve are \ defined by the following two equations."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "Lower3DbPoint[f_,q_] := \n\t\tContinuousNaturalResonance[f,q] - f/(2q)"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"Lower3DbPoint"], Cell[TextData[ "Upper3DbPoint[f_,q_] := \n\t\tContinuousNaturalResonance[f,q] + f/(2q)"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"Upper3DbPoint"], Cell[CellGroupData[{ Cell[TextData[ " 1.2.1 - Continuous Second Order Filter Design"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "A bandpass filter (or resonator) is defined by placing the roots of a second \ order polynomial in the denominator. The gain of the filter is normalized so \ at its peak (the natural resonance frequency) it has unity gain. A unity \ gain bandpass filter is defined by the following function as a function of \ center frequency and filter quality (q)."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "MakeContinuousResonance[f_,q_] := \n\t\ ContinuousAdjustGain[1/ContinuousSecondOrderFilter[f,q],\n\t\t\t\t\t\t\ ContinuousNaturalResonance[f,q]]\n"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"MakeContinuousResonance"], Cell[TextData[ "A typical bandpass filter (or resonator) with a center frequency of 1000 Hz \ and a q of 10 looks like this."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["MakeContinuousResonance[1000,10]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ (197392.0880217871709 + 3.937959788089917507*10^6*I)/ (3.947841760435743446*10^7 + 628.3185307179586476*s + s^2)\ \>", "\<\ 6 197392. + 3.93796 10 I ---------------------------- 7 2 3.94784 10 + 628.319 s + s\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData["The gain of this bandpass filter is shown below."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[MakeContinuousResonance[1000,10],\n\t\t\t\t\t\t\ 2000];"], "Input", AspectRatioFixed->False, CellTags->"ContinuousFreqResponse"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.603319 0.0199037 [ [(500)] 0.2619 0.60332 0 2 Msboxa [(1000)] 0.5 0.60332 0 2 Msboxa [(1500)] 0.7381 0.60332 0 2 Msboxa [(2000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-30)] 0.01131 0.00621 1 0 Msboxa [(-25)] 0.01131 0.10573 1 0 Msboxa [(-20)] 0.01131 0.20524 1 0 Msboxa [(-15)] 0.01131 0.30476 1 0 Msboxa [(-10)] 0.01131 0.40428 1 0 Msboxa [(-5)] 0.01131 0.5038 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(500)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(1500)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.00621 moveto 0.03006 0.00621 lineto stroke grestore [(-30)] 0.01131 0.00621 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.10573 moveto 0.03006 0.10573 lineto stroke grestore [(-25)] 0.01131 0.10573 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.20524 moveto 0.03006 0.20524 lineto stroke grestore [(-20)] 0.01131 0.20524 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.30476 moveto 0.03006 0.30476 lineto stroke grestore [(-15)] 0.01131 0.30476 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.40428 moveto 0.03006 0.40428 lineto stroke grestore [(-10)] 0.01131 0.40428 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.5038 moveto 0.03006 0.5038 lineto stroke grestore [(-5)] 0.01131 0.5038 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02611 moveto 0.02756 0.02611 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04601 moveto 0.02756 0.04601 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06592 moveto 0.02756 0.06592 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08582 moveto 0.02756 0.08582 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12563 moveto 0.02756 0.12563 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14553 moveto 0.02756 0.14553 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16544 moveto 0.02756 0.16544 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18534 moveto 0.02756 0.18534 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22515 moveto 0.02756 0.22515 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24505 moveto 0.02756 0.24505 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26496 moveto 0.02756 0.26496 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.28486 moveto 0.02756 0.28486 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32467 moveto 0.02756 0.32467 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34457 moveto 0.02756 0.34457 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36447 moveto 0.02756 0.36447 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38438 moveto 0.02756 0.38438 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42419 moveto 0.02756 0.42419 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44409 moveto 0.02756 0.44409 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46399 moveto 0.02756 0.46399 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4839 moveto 0.02756 0.4839 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.5237 moveto 0.02756 0.5237 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54361 moveto 0.02756 0.54361 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56351 moveto 0.02756 0.56351 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58342 moveto 0.02756 0.58342 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.20503 moveto 0.02505 0.20503 lineto 0.02629 0.20503 lineto 0.02753 0.20504 lineto 0.02877 0.20505 lineto 0.03125 0.20507 lineto 0.03373 0.2051 lineto 0.03622 0.20514 lineto 0.0387 0.2052 lineto 0.04366 0.20533 lineto 0.04862 0.2055 lineto 0.05358 0.2057 lineto 0.0635 0.20623 lineto 0.07342 0.20691 lineto 0.08334 0.20774 lineto 0.10318 0.20987 lineto 0.12302 0.21266 lineto 0.14286 0.21613 lineto 0.18254 0.22527 lineto 0.22223 0.23778 lineto 0.26191 0.25438 lineto 0.30159 0.27626 lineto 0.34127 0.30541 lineto 0.36111 0.32374 lineto 0.38096 0.34545 lineto 0.4008 0.3716 lineto 0.42064 0.4038 lineto 0.44048 0.44458 lineto 0.46032 0.49755 lineto 0.47024 0.52943 lineto 0.48016 0.56334 lineto 0.48512 0.57931 lineto 0.4876 0.58643 lineto 0.49008 0.59264 lineto 0.49256 0.59765 lineto 0.4938 0.59963 lineto 0.49504 0.6012 lineto 0.49628 0.60236 lineto 0.49752 0.60307 lineto 0.49876 0.60332 lineto 0.5 0.6031 lineto 0.50124 0.60242 lineto 0.50248 0.60127 lineto 0.50372 0.59968 lineto 0.50496 0.59767 lineto 0.50744 0.59248 lineto 0.50992 0.58595 lineto 0.51984 0.55187 lineto 0.53968 0.4793 lineto 0.55953 0.41994 lineto Mistroke 0.57937 0.37253 lineto 0.61905 0.30033 lineto 0.65873 0.24597 lineto 0.69841 0.20214 lineto 0.7381 0.16521 lineto 0.77778 0.13318 lineto 0.81746 0.1048 lineto 0.85714 0.07926 lineto 0.89683 0.05598 lineto 0.93651 0.03457 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{34, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The phase of this bandpass filter shifts as the frequency passes through the \ resonant frequency. The phase is equal to zero near the center frequency \ since the gain of the filter has been normalized so that it is equal to one \ at its resonance frequency."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "Plot[Release[ContinuousFilterPhase[\n\t\t\t\ MakeContinuousResonance[1000,10],f]],\n\t\t{f,0,2000}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.312233 0.191414 [ [(500)] 0.2619 0.31223 0 2 Msboxa [(1000)] 0.5 0.31223 0 2 Msboxa [(1500)] 0.7381 0.31223 0 2 Msboxa [(2000)] 0.97619 0.31223 0 2 Msboxa [(-1.5)] 0.01131 0.02511 1 0 Msboxa [(-1)] 0.01131 0.12082 1 0 Msboxa [(-0.5)] 0.01131 0.21653 1 0 Msboxa [(0.5)] 0.01131 0.40794 1 0 Msboxa [(1)] 0.01131 0.50365 1 0 Msboxa [(1.5)] 0.01131 0.59935 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.31223 moveto 0.2619 0.31848 lineto stroke grestore [(500)] 0.2619 0.31223 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.31223 moveto 0.5 0.31848 lineto stroke grestore [(1000)] 0.5 0.31223 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.31223 moveto 0.7381 0.31848 lineto stroke grestore [(1500)] 0.7381 0.31223 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.31223 moveto 0.97619 0.31848 lineto stroke grestore [(2000)] 0.97619 0.31223 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.31223 moveto 0.07143 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.31223 moveto 0.11905 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.31223 moveto 0.16667 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.31223 moveto 0.21429 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.31223 moveto 0.30952 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.31223 moveto 0.35714 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.31223 moveto 0.40476 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.31223 moveto 0.45238 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.31223 moveto 0.54762 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.31223 moveto 0.59524 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.31223 moveto 0.64286 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.31223 moveto 0.69048 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.31223 moveto 0.78571 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.31223 moveto 0.83333 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.31223 moveto 0.88095 0.31598 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.31223 moveto 0.92857 0.31598 lineto stroke grestore gsave 0.002 setlinewidth 0 0.31223 moveto 1 0.31223 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.02511 moveto 0.03006 0.02511 lineto stroke grestore [(-1.5)] 0.01131 0.02511 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12082 moveto 0.03006 0.12082 lineto stroke grestore [(-1)] 0.01131 0.12082 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.21653 moveto 0.03006 0.21653 lineto stroke grestore [(-0.5)] 0.01131 0.21653 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.40794 moveto 0.03006 0.40794 lineto stroke grestore [(0.5)] 0.01131 0.40794 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.50365 moveto 0.03006 0.50365 lineto stroke grestore [(1)] 0.01131 0.50365 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.59935 moveto 0.03006 0.59935 lineto stroke grestore [(1.5)] 0.01131 0.59935 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.04425 moveto 0.02756 0.04425 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06339 moveto 0.02756 0.06339 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08254 moveto 0.02756 0.08254 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10168 moveto 0.02756 0.10168 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.13996 moveto 0.02756 0.13996 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1591 moveto 0.02756 0.1591 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17824 moveto 0.02756 0.17824 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19738 moveto 0.02756 0.19738 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.23567 moveto 0.02756 0.23567 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25481 moveto 0.02756 0.25481 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27395 moveto 0.02756 0.27395 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29309 moveto 0.02756 0.29309 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33137 moveto 0.02756 0.33137 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35052 moveto 0.02756 0.35052 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36966 moveto 0.02756 0.36966 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3888 moveto 0.02756 0.3888 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42708 moveto 0.02756 0.42708 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44622 moveto 0.02756 0.44622 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46536 moveto 0.02756 0.46536 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48451 moveto 0.02756 0.48451 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52279 moveto 0.02756 0.52279 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54193 moveto 0.02756 0.54193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56107 moveto 0.02756 0.56107 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58021 moveto 0.02756 0.58021 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.00597 moveto 0.02756 0.00597 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.60332 moveto 0.06349 0.60171 lineto 0.10317 0.60004 lineto 0.14286 0.59822 lineto 0.18254 0.59614 lineto 0.22222 0.59368 lineto 0.2619 0.59058 lineto 0.28175 0.58867 lineto 0.30159 0.58644 lineto 0.32143 0.58376 lineto 0.34127 0.58046 lineto 0.36111 0.57629 lineto 0.38095 0.57082 lineto 0.40079 0.56331 lineto 0.41071 0.5584 lineto 0.42063 0.55235 lineto 0.43056 0.54475 lineto 0.44048 0.53492 lineto 0.4504 0.5218 lineto 0.45536 0.51349 lineto 0.46032 0.50359 lineto 0.46528 0.49168 lineto 0.47024 0.47721 lineto 0.48016 0.43766 lineto 0.48512 0.41095 lineto 0.49008 0.37894 lineto 0.5 0.30265 lineto 0.50992 0.22777 lineto 0.51488 0.19703 lineto 0.51984 0.17156 lineto 0.5248 0.1508 lineto 0.52976 0.13392 lineto 0.53968 0.10876 lineto 0.54464 0.09928 lineto 0.5496 0.0913 lineto 0.55952 0.07866 lineto 0.56944 0.06916 lineto 0.57937 0.06179 lineto 0.59921 0.05114 lineto 0.60913 0.04717 lineto 0.61905 0.04383 lineto 0.63889 0.03851 lineto 0.65873 0.03447 lineto 0.67857 0.03129 lineto 0.69841 0.02873 lineto 0.7381 0.02483 lineto 0.77778 0.02201 lineto 0.81746 0.01987 lineto 0.85714 0.01818 lineto 0.89683 0.01681 lineto Mistroke 0.93651 0.01567 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The plot below shows the change in frequency response of second order \ bandpass filters with a center frequency of 1000 Hz as the quality factor (q) \ is varied. The flattest curve is the frequency response of the filter with a \ q of 0.71 while the sharpest (narrowest) filter has a q of 10."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "Show[Table[ContinuousFreqResponse[\n\t\t\t\ MakeContinuousResonance[1000,q],2000,\n\t\t\t{DisplayFunction->Identity}],\n\t\ \t\t{q,.71,10,1}]\n\t\t/.Identity->$DisplayFunction];"], "Input", CellOpen->False, AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.603319 0.020076 [ [(500)] 0.2619 0.60332 0 2 Msboxa [(1000)] 0.5 0.60332 0 2 Msboxa [(1500)] 0.7381 0.60332 0 2 Msboxa [(2000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-30)] 0.01131 0.00104 1 0 Msboxa [(-25)] 0.01131 0.10142 1 0 Msboxa [(-20)] 0.01131 0.2018 1 0 Msboxa [(-15)] 0.01131 0.30218 1 0 Msboxa [(-10)] 0.01131 0.40256 1 0 Msboxa [(-5)] 0.01131 0.50294 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(500)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(1500)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.00104 moveto 0.03006 0.00104 lineto stroke grestore [(-30)] 0.01131 0.00104 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.10142 moveto 0.03006 0.10142 lineto stroke grestore [(-25)] 0.01131 0.10142 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.2018 moveto 0.03006 0.2018 lineto stroke grestore [(-20)] 0.01131 0.2018 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.30218 moveto 0.03006 0.30218 lineto stroke grestore [(-15)] 0.01131 0.30218 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.40256 moveto 0.03006 0.40256 lineto stroke grestore [(-10)] 0.01131 0.40256 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.50294 moveto 0.03006 0.50294 lineto stroke grestore [(-5)] 0.01131 0.50294 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02111 moveto 0.02756 0.02111 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04119 moveto 0.02756 0.04119 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06127 moveto 0.02756 0.06127 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08134 moveto 0.02756 0.08134 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12149 moveto 0.02756 0.12149 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14157 moveto 0.02756 0.14157 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16165 moveto 0.02756 0.16165 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18172 moveto 0.02756 0.18172 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22187 moveto 0.02756 0.22187 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24195 moveto 0.02756 0.24195 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26203 moveto 0.02756 0.26203 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2821 moveto 0.02756 0.2821 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32225 moveto 0.02756 0.32225 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34233 moveto 0.02756 0.34233 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36241 moveto 0.02756 0.36241 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38248 moveto 0.02756 0.38248 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42263 moveto 0.02756 0.42263 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44271 moveto 0.02756 0.44271 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46279 moveto 0.02756 0.46279 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48286 moveto 0.02756 0.48286 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52301 moveto 0.02756 0.52301 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54309 moveto 0.02756 0.54309 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56317 moveto 0.02756 0.56317 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58324 moveto 0.02756 0.58324 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave gsave gsave 0.004 setlinewidth 0.02381 0.60331 moveto 0.02505 0.60331 lineto 0.02629 0.60331 lineto 0.02753 0.60331 lineto 0.02877 0.60331 lineto 0.03125 0.60331 lineto 0.03373 0.60331 lineto 0.0387 0.60331 lineto 0.04366 0.60332 lineto 0.05358 0.60332 lineto 0.05854 0.60332 lineto 0.06102 0.60332 lineto 0.06226 0.60332 lineto 0.0635 0.60332 lineto 0.06474 0.60332 lineto 0.06598 0.60332 lineto 0.06722 0.60332 lineto 0.06846 0.60332 lineto 0.0697 0.60332 lineto 0.07094 0.60332 lineto 0.07342 0.60332 lineto 0.07466 0.60332 lineto 0.0759 0.60332 lineto 0.07838 0.60332 lineto 0.08086 0.60332 lineto 0.08334 0.60331 lineto 0.0883 0.60331 lineto 0.09078 0.60331 lineto 0.09326 0.6033 lineto 0.09822 0.6033 lineto 0.10318 0.60329 lineto 0.10814 0.60327 lineto 0.1131 0.60326 lineto 0.12302 0.60321 lineto 0.13294 0.60315 lineto 0.14286 0.60306 lineto 0.15278 0.60295 lineto 0.1627 0.6028 lineto 0.17262 0.60262 lineto 0.18254 0.6024 lineto 0.20238 0.6018 lineto 0.22223 0.60096 lineto 0.24207 0.59983 lineto 0.26191 0.59836 lineto 0.28175 0.5965 lineto 0.30159 0.59419 lineto 0.34127 0.58812 lineto 0.38096 0.57995 lineto 0.42064 0.56966 lineto 0.46032 0.55744 lineto Mistroke 0.5 0.54359 lineto 0.53968 0.52851 lineto 0.57937 0.5126 lineto 0.61905 0.4962 lineto 0.65873 0.47962 lineto 0.69841 0.46307 lineto 0.7381 0.44672 lineto 0.77778 0.43066 lineto 0.81746 0.41499 lineto 0.85714 0.39973 lineto 0.89683 0.38491 lineto 0.93651 0.37054 lineto 0.97619 0.35662 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.50197 moveto 0.02505 0.50197 lineto 0.02629 0.50198 lineto 0.02753 0.50198 lineto 0.02877 0.50199 lineto 0.03125 0.50201 lineto 0.03373 0.50204 lineto 0.03622 0.50207 lineto 0.0387 0.50212 lineto 0.04366 0.50223 lineto 0.04862 0.50237 lineto 0.05358 0.50254 lineto 0.0635 0.50298 lineto 0.07342 0.50355 lineto 0.08334 0.50424 lineto 0.10318 0.50601 lineto 0.12302 0.50831 lineto 0.14286 0.51113 lineto 0.18254 0.51842 lineto 0.22223 0.52796 lineto 0.26191 0.5398 lineto 0.30159 0.55385 lineto 0.34127 0.56956 lineto 0.38096 0.58548 lineto 0.4008 0.5926 lineto 0.41072 0.59571 lineto 0.42064 0.59841 lineto 0.43056 0.60061 lineto 0.43552 0.60149 lineto 0.44048 0.60221 lineto 0.44544 0.60276 lineto 0.44792 0.60296 lineto 0.4504 0.60312 lineto 0.45164 0.60319 lineto 0.45288 0.60324 lineto 0.45412 0.60328 lineto 0.45536 0.6033 lineto 0.4566 0.60332 lineto 0.45784 0.60332 lineto 0.45908 0.60331 lineto 0.46032 0.60328 lineto 0.46156 0.60325 lineto 0.4628 0.6032 lineto 0.46528 0.60306 lineto 0.46776 0.60287 lineto 0.47024 0.60263 lineto 0.4752 0.60198 lineto 0.48016 0.60112 lineto 0.49008 0.59875 lineto 0.5 0.59553 lineto Mistroke 0.51984 0.58672 lineto 0.53968 0.57525 lineto 0.57937 0.54711 lineto 0.61905 0.51606 lineto 0.65873 0.48514 lineto 0.69841 0.45569 lineto 0.7381 0.42815 lineto 0.77778 0.40254 lineto 0.81746 0.37873 lineto 0.85714 0.35655 lineto 0.89683 0.33582 lineto 0.93651 0.31637 lineto 0.97619 0.29806 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.42645 moveto 0.02505 0.42645 lineto 0.02629 0.42646 lineto 0.02753 0.42646 lineto 0.02877 0.42647 lineto 0.03125 0.42649 lineto 0.03373 0.42652 lineto 0.03622 0.42656 lineto 0.0387 0.42661 lineto 0.04366 0.42674 lineto 0.04862 0.42689 lineto 0.05358 0.42709 lineto 0.0635 0.42759 lineto 0.07342 0.42822 lineto 0.08334 0.42901 lineto 0.10318 0.43102 lineto 0.12302 0.43363 lineto 0.14286 0.43687 lineto 0.18254 0.44534 lineto 0.22223 0.45674 lineto 0.26191 0.4715 lineto 0.30159 0.49016 lineto 0.34127 0.51334 lineto 0.38096 0.54126 lineto 0.42064 0.57221 lineto 0.44048 0.58668 lineto 0.4504 0.59287 lineto 0.45536 0.59556 lineto 0.46032 0.59792 lineto 0.46528 0.59991 lineto 0.47024 0.60148 lineto 0.47272 0.60209 lineto 0.4752 0.60258 lineto 0.47768 0.60295 lineto 0.47892 0.60309 lineto 0.48016 0.6032 lineto 0.4814 0.60327 lineto 0.48264 0.60331 lineto 0.48388 0.60332 lineto 0.48512 0.60329 lineto 0.48636 0.60323 lineto 0.4876 0.60313 lineto 0.48884 0.60301 lineto 0.49008 0.60284 lineto 0.49256 0.60241 lineto 0.49504 0.60184 lineto 0.5 0.6003 lineto 0.50496 0.59822 lineto 0.50992 0.59562 lineto 0.51984 0.58901 lineto Mistroke 0.53968 0.57127 lineto 0.57937 0.52697 lineto 0.61905 0.48194 lineto 0.65873 0.44093 lineto 0.69841 0.40444 lineto 0.7381 0.37193 lineto 0.77778 0.34273 lineto 0.81746 0.31627 lineto 0.85714 0.29206 lineto 0.89683 0.26976 lineto 0.93651 0.24907 lineto 0.97619 0.22976 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.37311 moveto 0.02505 0.37311 lineto 0.02629 0.37311 lineto 0.02753 0.37312 lineto 0.02877 0.37312 lineto 0.03125 0.37315 lineto 0.03373 0.37318 lineto 0.03622 0.37322 lineto 0.0387 0.37327 lineto 0.04366 0.3734 lineto 0.04862 0.37356 lineto 0.05358 0.37376 lineto 0.0635 0.37428 lineto 0.07342 0.37494 lineto 0.08334 0.37575 lineto 0.10318 0.37783 lineto 0.12302 0.38054 lineto 0.14286 0.38391 lineto 0.18254 0.39276 lineto 0.22223 0.40476 lineto 0.26191 0.4205 lineto 0.30159 0.44082 lineto 0.34127 0.46693 lineto 0.38096 0.50039 lineto 0.42064 0.54219 lineto 0.44048 0.56512 lineto 0.4504 0.57625 lineto 0.46032 0.58645 lineto 0.46528 0.59097 lineto 0.47024 0.59495 lineto 0.4752 0.59828 lineto 0.47768 0.59967 lineto 0.48016 0.60085 lineto 0.48264 0.60181 lineto 0.48512 0.60255 lineto 0.48636 0.60282 lineto 0.4876 0.60304 lineto 0.48884 0.6032 lineto 0.49008 0.60329 lineto 0.49132 0.60332 lineto 0.49256 0.60328 lineto 0.4938 0.60319 lineto 0.49504 0.60302 lineto 0.49628 0.60279 lineto 0.49752 0.6025 lineto 0.5 0.60172 lineto 0.50248 0.60068 lineto 0.50496 0.5994 lineto 0.50992 0.59611 lineto 0.51984 0.58694 lineto Mistroke 0.53968 0.56137 lineto 0.57937 0.50151 lineto 0.61905 0.4467 lineto 0.65873 0.40006 lineto 0.69841 0.36018 lineto 0.7381 0.32552 lineto 0.77778 0.29487 lineto 0.81746 0.26738 lineto 0.85714 0.24242 lineto 0.89683 0.21955 lineto 0.93651 0.19842 lineto 0.97619 0.17876 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.3321 moveto 0.02505 0.3321 lineto 0.02629 0.3321 lineto 0.02753 0.33211 lineto 0.02877 0.33212 lineto 0.03125 0.33214 lineto 0.03373 0.33217 lineto 0.03622 0.33221 lineto 0.0387 0.33227 lineto 0.04366 0.3324 lineto 0.04862 0.33256 lineto 0.05358 0.33277 lineto 0.0635 0.33329 lineto 0.07342 0.33396 lineto 0.08334 0.33478 lineto 0.10318 0.3369 lineto 0.12302 0.33965 lineto 0.14286 0.34308 lineto 0.18254 0.35209 lineto 0.22223 0.36436 lineto 0.26191 0.38054 lineto 0.30159 0.40161 lineto 0.34127 0.42912 lineto 0.38096 0.46541 lineto 0.42064 0.51364 lineto 0.44048 0.54259 lineto 0.46032 0.57261 lineto 0.47024 0.58613 lineto 0.4752 0.59192 lineto 0.48016 0.59675 lineto 0.48512 0.6004 lineto 0.4876 0.6017 lineto 0.48884 0.60222 lineto 0.49008 0.60264 lineto 0.49132 0.60296 lineto 0.49256 0.60318 lineto 0.4938 0.6033 lineto 0.49504 0.60331 lineto 0.49628 0.60322 lineto 0.49752 0.60303 lineto 0.49876 0.60273 lineto 0.5 0.60233 lineto 0.50248 0.60122 lineto 0.50496 0.5997 lineto 0.50992 0.5955 lineto 0.51488 0.58993 lineto 0.51984 0.58318 lineto 0.53968 0.54905 lineto 0.57937 0.47609 lineto 0.61905 0.4149 lineto Mistroke 0.65873 0.36507 lineto 0.69841 0.32344 lineto 0.7381 0.2877 lineto 0.77778 0.25635 lineto 0.81746 0.22838 lineto 0.85714 0.20308 lineto 0.89683 0.17995 lineto 0.93651 0.15861 lineto 0.97619 0.1388 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.29884 moveto 0.02505 0.29884 lineto 0.02629 0.29885 lineto 0.02753 0.29885 lineto 0.02877 0.29886 lineto 0.03125 0.29889 lineto 0.03373 0.29892 lineto 0.03622 0.29896 lineto 0.0387 0.29901 lineto 0.04366 0.29914 lineto 0.04862 0.29931 lineto 0.05358 0.29952 lineto 0.0635 0.30004 lineto 0.07342 0.30072 lineto 0.08334 0.30155 lineto 0.10318 0.30368 lineto 0.12302 0.30645 lineto 0.14286 0.30991 lineto 0.18254 0.31901 lineto 0.22223 0.33142 lineto 0.26191 0.34783 lineto 0.30159 0.36931 lineto 0.34127 0.39757 lineto 0.38096 0.43548 lineto 0.42064 0.48768 lineto 0.44048 0.52081 lineto 0.46032 0.55783 lineto 0.47024 0.57604 lineto 0.4752 0.58431 lineto 0.48016 0.59157 lineto 0.48512 0.59741 lineto 0.4876 0.59967 lineto 0.48884 0.60061 lineto 0.49008 0.60142 lineto 0.49132 0.60209 lineto 0.49256 0.60262 lineto 0.4938 0.603 lineto 0.49504 0.60324 lineto 0.49628 0.60332 lineto 0.49752 0.60325 lineto 0.49876 0.60302 lineto 0.5 0.60265 lineto 0.50124 0.60212 lineto 0.50248 0.60143 lineto 0.50496 0.59963 lineto 0.50744 0.59725 lineto 0.50992 0.59434 lineto 0.51984 0.57837 lineto 0.53968 0.53565 lineto 0.57937 0.45224 lineto Mistroke 0.61905 0.38687 lineto 0.65873 0.33514 lineto 0.69841 0.2925 lineto 0.7381 0.25616 lineto 0.77778 0.22443 lineto 0.81746 0.19619 lineto 0.85714 0.1707 lineto 0.89683 0.14743 lineto 0.93651 0.12599 lineto 0.97619 0.10609 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.27089 moveto 0.02505 0.27089 lineto 0.02629 0.27089 lineto 0.02753 0.2709 lineto 0.02877 0.27091 lineto 0.03125 0.27093 lineto 0.03373 0.27096 lineto 0.03622 0.271 lineto 0.0387 0.27106 lineto 0.04366 0.27119 lineto 0.04862 0.27136 lineto 0.05358 0.27156 lineto 0.0635 0.27209 lineto 0.07342 0.27277 lineto 0.08334 0.2736 lineto 0.10318 0.27574 lineto 0.12302 0.27853 lineto 0.14286 0.282 lineto 0.18254 0.29116 lineto 0.22223 0.30365 lineto 0.26191 0.3202 lineto 0.30159 0.34192 lineto 0.34127 0.37064 lineto 0.38096 0.40953 lineto 0.4008 0.43443 lineto 0.42064 0.46431 lineto 0.46032 0.54289 lineto 0.47024 0.56524 lineto 0.4752 0.5759 lineto 0.48016 0.58563 lineto 0.48512 0.59382 lineto 0.4876 0.59714 lineto 0.49008 0.59981 lineto 0.49132 0.60088 lineto 0.49256 0.60177 lineto 0.4938 0.60246 lineto 0.49504 0.60296 lineto 0.49628 0.60324 lineto 0.49752 0.60332 lineto 0.49876 0.60318 lineto 0.5 0.60283 lineto 0.50124 0.60227 lineto 0.50248 0.6015 lineto 0.50496 0.59935 lineto 0.50744 0.59643 lineto 0.50992 0.5928 lineto 0.51984 0.57282 lineto 0.53968 0.52187 lineto 0.57937 0.43032 lineto 0.61905 0.36214 lineto Mistroke 0.65873 0.3092 lineto 0.69841 0.26593 lineto 0.7381 0.22923 lineto 0.77778 0.19727 lineto 0.81746 0.16887 lineto 0.85714 0.14327 lineto 0.89683 0.11991 lineto 0.93651 0.09841 lineto 0.97619 0.07846 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.24678 moveto 0.02505 0.24678 lineto 0.02629 0.24679 lineto 0.02753 0.24679 lineto 0.02877 0.2468 lineto 0.03125 0.24682 lineto 0.03373 0.24686 lineto 0.03622 0.2469 lineto 0.0387 0.24695 lineto 0.04366 0.24708 lineto 0.04862 0.24725 lineto 0.05358 0.24746 lineto 0.0635 0.24799 lineto 0.07342 0.24867 lineto 0.08334 0.2495 lineto 0.10318 0.25165 lineto 0.12302 0.25445 lineto 0.14286 0.25793 lineto 0.18254 0.26712 lineto 0.22223 0.27966 lineto 0.26191 0.2963 lineto 0.30159 0.31817 lineto 0.34127 0.34719 lineto 0.36111 0.36535 lineto 0.38096 0.38673 lineto 0.4008 0.41227 lineto 0.42064 0.44325 lineto 0.46032 0.52821 lineto 0.47024 0.55414 lineto 0.48016 0.57914 lineto 0.48512 0.58975 lineto 0.4876 0.5942 lineto 0.49008 0.59789 lineto 0.49132 0.59941 lineto 0.49256 0.6007 lineto 0.4938 0.60175 lineto 0.49504 0.60253 lineto 0.49628 0.60305 lineto 0.49752 0.6033 lineto 0.49876 0.60326 lineto 0.5 0.60295 lineto 0.50124 0.60236 lineto 0.50248 0.60149 lineto 0.50496 0.59894 lineto 0.50744 0.5954 lineto 0.50992 0.59095 lineto 0.51984 0.56671 lineto 0.53968 0.50817 lineto 0.57937 0.41029 lineto 0.61905 0.34015 lineto Mistroke 0.65873 0.2864 lineto 0.69841 0.24272 lineto 0.7381 0.20578 lineto 0.77778 0.17367 lineto 0.81746 0.14517 lineto 0.85714 0.1195 lineto 0.89683 0.09609 lineto 0.93651 0.07454 lineto 0.97619 0.05456 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.22559 moveto 0.02505 0.2256 lineto 0.02629 0.2256 lineto 0.02753 0.22561 lineto 0.02877 0.22561 lineto 0.03125 0.22564 lineto 0.03373 0.22567 lineto 0.03622 0.22571 lineto 0.0387 0.22576 lineto 0.04366 0.2259 lineto 0.04862 0.22607 lineto 0.05358 0.22627 lineto 0.0635 0.2268 lineto 0.07342 0.22748 lineto 0.08334 0.22832 lineto 0.10318 0.23047 lineto 0.12302 0.23328 lineto 0.14286 0.23677 lineto 0.18254 0.24597 lineto 0.22223 0.25856 lineto 0.26191 0.27525 lineto 0.30159 0.29723 lineto 0.34127 0.32646 lineto 0.36111 0.34478 lineto 0.38096 0.36644 lineto 0.4008 0.39242 lineto 0.42064 0.42419 lineto 0.46032 0.51403 lineto 0.47024 0.54298 lineto 0.48016 0.57225 lineto 0.48512 0.5853 lineto 0.4876 0.59092 lineto 0.49008 0.5957 lineto 0.49132 0.59772 lineto 0.49256 0.59945 lineto 0.4938 0.60089 lineto 0.49504 0.602 lineto 0.49628 0.60279 lineto 0.49752 0.60322 lineto 0.49876 0.60331 lineto 0.5 0.60303 lineto 0.50124 0.6024 lineto 0.50248 0.60141 lineto 0.50496 0.59842 lineto 0.50744 0.59418 lineto 0.50992 0.58885 lineto 0.51984 0.56021 lineto 0.53968 0.49479 lineto 0.55953 0.43825 lineto 0.57937 0.39197 lineto Mistroke 0.61905 0.32042 lineto 0.65873 0.2661 lineto 0.69841 0.22214 lineto 0.7381 0.18504 lineto 0.77778 0.15282 lineto 0.81746 0.12426 lineto 0.85714 0.09854 lineto 0.89683 0.07509 lineto 0.93651 0.05352 lineto 0.97619 0.03351 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02381 0.2067 moveto 0.02505 0.2067 lineto 0.02629 0.2067 lineto 0.02753 0.20671 lineto 0.02877 0.20672 lineto 0.03125 0.20674 lineto 0.03373 0.20677 lineto 0.03622 0.20682 lineto 0.0387 0.20687 lineto 0.04366 0.207 lineto 0.04862 0.20717 lineto 0.05358 0.20738 lineto 0.0635 0.20791 lineto 0.07342 0.20859 lineto 0.08334 0.20943 lineto 0.10318 0.21158 lineto 0.12302 0.21439 lineto 0.14286 0.21789 lineto 0.18254 0.22711 lineto 0.22223 0.23972 lineto 0.26191 0.25646 lineto 0.30159 0.27851 lineto 0.34127 0.30788 lineto 0.36111 0.32633 lineto 0.38096 0.34818 lineto 0.4008 0.37448 lineto 0.42064 0.40683 lineto 0.44048 0.44768 lineto 0.46032 0.50045 lineto 0.47024 0.53195 lineto 0.48016 0.5651 lineto 0.48512 0.58053 lineto 0.4876 0.58736 lineto 0.49008 0.59328 lineto 0.49132 0.59582 lineto 0.49256 0.59804 lineto 0.4938 0.5999 lineto 0.49504 0.60138 lineto 0.49628 0.60246 lineto 0.49752 0.60311 lineto 0.49876 0.60332 lineto 0.5 0.60309 lineto 0.50124 0.60241 lineto 0.50248 0.6013 lineto 0.50372 0.59976 lineto 0.50496 0.59781 lineto 0.50744 0.59281 lineto 0.50992 0.58652 lineto 0.51984 0.55342 lineto 0.53968 0.48188 lineto Mistroke 0.55953 0.42268 lineto 0.57937 0.37516 lineto 0.61905 0.30258 lineto 0.65873 0.24784 lineto 0.69841 0.20368 lineto 0.7381 0.16647 lineto 0.77778 0.13417 lineto 0.81746 0.10556 lineto 0.85714 0.0798 lineto 0.89683 0.05633 lineto 0.93651 0.03474 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Likewise we can create a second order filter with a notch in the frequency \ response. In this case all of the roots are in the numerator so there is a \ zero (or a notch) in the frequency response. We normalize the filter\ \[CloseCurlyQuote]s gain so that at DC there is unity gain."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "MakeContinuousAntiResonance[f_,q_] := \n\t\ ContinuousAdjustGain[ContinuousSecondOrderFilter[f,q],\n\t\t\t\t\t\t\t0]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"MakeContinuousAntiResonance"], Cell[TextData[ "A filter with a notch centered at 1000 Hz and with a q of 10 is described by \ the following equation."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["MakeContinuousAntiResonance[1000,10]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 2.533029591058444287*10^-8* (3.947841760435743446*10^7 + 628.3185307179586476*s + s^2)\ \>", "\<\ -8 7 2 2.53303 10 (3.94784 10 + 628.319 s + s )\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "\nThe response of this filter in the frequency domain is shown below."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\t\t\tMakeContinuousAntiResonance[1000,10],2000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.413006 0.0199037 [ [(500)] 0.2619 0.41301 0 2 Msboxa [(1000)] 0.5 0.41301 0 2 Msboxa [(1500)] 0.7381 0.41301 0 2 Msboxa [(2000)] 0.97619 0.41301 0 2 Msboxa [( Hz)] 1.025 0.41301 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-20)] 0.01131 0.01493 1 0 Msboxa [(-15)] 0.01131 0.11445 1 0 Msboxa [(-10)] 0.01131 0.21397 1 0 Msboxa [(-5)] 0.01131 0.31349 1 0 Msboxa [(5)] 0.01131 0.51252 1 0 Msboxa [(10)] 0.01131 0.61204 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.41301 moveto 0.2619 0.41926 lineto stroke grestore [(500)] 0.2619 0.41301 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.41301 moveto 0.5 0.41926 lineto stroke grestore [(1000)] 0.5 0.41301 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.41301 moveto 0.7381 0.41926 lineto stroke grestore [(1500)] 0.7381 0.41301 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.41301 moveto 0.97619 0.41926 lineto stroke grestore [(2000)] 0.97619 0.41301 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.41301 moveto 0.07143 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.41301 moveto 0.11905 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.41301 moveto 0.16667 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.41301 moveto 0.21429 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.41301 moveto 0.30952 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.41301 moveto 0.35714 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.41301 moveto 0.40476 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.41301 moveto 0.45238 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.41301 moveto 0.54762 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.41301 moveto 0.59524 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.41301 moveto 0.64286 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.41301 moveto 0.69048 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.41301 moveto 0.78571 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.41301 moveto 0.83333 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.41301 moveto 0.88095 0.41676 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.41301 moveto 0.92857 0.41676 lineto stroke grestore [( Hz)] 1.025 0.41301 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.41301 moveto 1 0.41301 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.01493 moveto 0.03006 0.01493 lineto stroke grestore [(-20)] 0.01131 0.01493 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.11445 moveto 0.03006 0.11445 lineto stroke grestore [(-15)] 0.01131 0.11445 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.21397 moveto 0.03006 0.21397 lineto stroke grestore [(-10)] 0.01131 0.21397 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.31349 moveto 0.03006 0.31349 lineto stroke grestore [(-5)] 0.01131 0.31349 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.51252 moveto 0.03006 0.51252 lineto stroke grestore [(5)] 0.01131 0.51252 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.61204 moveto 0.03006 0.61204 lineto stroke grestore [(10)] 0.01131 0.61204 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.03483 moveto 0.02756 0.03483 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05474 moveto 0.02756 0.05474 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07464 moveto 0.02756 0.07464 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09455 moveto 0.02756 0.09455 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.13435 moveto 0.02756 0.13435 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15426 moveto 0.02756 0.15426 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17416 moveto 0.02756 0.17416 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19406 moveto 0.02756 0.19406 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.23387 moveto 0.02756 0.23387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25378 moveto 0.02756 0.25378 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27368 moveto 0.02756 0.27368 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29358 moveto 0.02756 0.29358 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33339 moveto 0.02756 0.33339 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35329 moveto 0.02756 0.35329 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3732 moveto 0.02756 0.3732 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3931 moveto 0.02756 0.3931 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43291 moveto 0.02756 0.43291 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45281 moveto 0.02756 0.45281 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47272 moveto 0.02756 0.47272 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49262 moveto 0.02756 0.49262 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53243 moveto 0.02756 0.53243 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55233 moveto 0.02756 0.55233 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57224 moveto 0.02756 0.57224 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59214 moveto 0.02756 0.59214 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.41301 moveto 0.02505 0.413 lineto 0.02629 0.413 lineto 0.02753 0.413 lineto 0.02877 0.41299 lineto 0.03125 0.41296 lineto 0.03373 0.41293 lineto 0.03622 0.41289 lineto 0.0387 0.41284 lineto 0.04366 0.41271 lineto 0.04862 0.41254 lineto 0.05358 0.41233 lineto 0.0635 0.41181 lineto 0.07342 0.41113 lineto 0.08334 0.4103 lineto 0.10318 0.40816 lineto 0.12302 0.40537 lineto 0.14286 0.40191 lineto 0.18254 0.39276 lineto 0.22223 0.38026 lineto 0.26191 0.36365 lineto 0.30159 0.34177 lineto 0.34127 0.31262 lineto 0.36111 0.2943 lineto 0.38096 0.27259 lineto 0.4008 0.24644 lineto 0.42064 0.21423 lineto 0.44048 0.17346 lineto 0.46032 0.12049 lineto 0.47024 0.08861 lineto 0.48016 0.05469 lineto 0.48512 0.03873 lineto 0.4876 0.0316 lineto 0.49008 0.0254 lineto 0.49256 0.02038 lineto 0.4938 0.01841 lineto 0.49504 0.01683 lineto 0.49628 0.01567 lineto 0.49752 0.01497 lineto 0.49876 0.01472 lineto 0.5 0.01493 lineto 0.50124 0.01562 lineto 0.50248 0.01676 lineto 0.50372 0.01835 lineto 0.50496 0.02036 lineto 0.50744 0.02555 lineto 0.50992 0.03208 lineto 0.51984 0.06617 lineto 0.53968 0.13873 lineto 0.55953 0.19809 lineto Mistroke 0.57937 0.2455 lineto 0.61905 0.31771 lineto 0.65873 0.37206 lineto 0.69841 0.4159 lineto 0.7381 0.45282 lineto 0.77778 0.48485 lineto 0.81746 0.51323 lineto 0.85714 0.53878 lineto 0.89683 0.56205 lineto 0.93651 0.58347 lineto 0.97619 0.60332 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.2.2 - Continuous Second Order Examples"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Continuous Second Order Examples"], Cell[TextData[{ StyleBox[ "We can combine notch and resonance filters to get more interesting \ responses. The following combination of a resonance with a q of 2 at 1000 Hz \ and a notch with a q of 5 at 1100 Hz is similar to the cascade-only ear \ filters described in ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Lyon\[CloseCurlyQuote]s Cochlear Model", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" [Slaney88].", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "MakeContinuousResonance[1000,2] *\n\t\t\ MakeContinuousAntiResonance[1100,5]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ ((0.1033057851239669422 + 0.3865348540055724572*I)* (4.776888530127249571*10^7 + 1382.300767579509025*s + s^2))/ (3.947841760435743446*10^7 + 3141.592653589793238*s + s^2)\ \>", "\<\ 7 2 (0.103306 + 0.386535 I) (4.77689 10 + 1382.3 s + s ) ----------------------------------------------------- 7 2 3.94784 10 + 3141.59 s + s\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[MakeContinuousResonance[1000,2]*\n\t\t\ MakeContinuousAntiResonance[1100,5]//N,2000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.986145 0.0616142 [ [(500)] 0.2619 0.49323 0 2 Msboxa [(1000)] 0.5 0.49323 0 2 Msboxa [(1500)] 0.7381 0.49323 0 2 Msboxa [(2000)] 0.97619 0.49323 0 2 Msboxa [( Hz)] 1.025 0.49323 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-16)] 0.01131 0.00032 1 0 Msboxa [(-14)] 0.01131 0.12355 1 0 Msboxa [(-12)] 0.01131 0.24677 1 0 Msboxa [(-10)] 0.01131 0.37 1 0 Msboxa [(-6)] 0.01131 0.61646 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.49323 moveto 0.2619 0.49948 lineto stroke grestore [(500)] 0.2619 0.49323 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.49323 moveto 0.5 0.49948 lineto stroke grestore [(1000)] 0.5 0.49323 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.49323 moveto 0.7381 0.49948 lineto stroke grestore [(1500)] 0.7381 0.49323 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.49323 moveto 0.97619 0.49948 lineto stroke grestore [(2000)] 0.97619 0.49323 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.49323 moveto 0.07143 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.49323 moveto 0.11905 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.49323 moveto 0.16667 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.49323 moveto 0.21429 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.49323 moveto 0.30952 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.49323 moveto 0.35714 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.49323 moveto 0.40476 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.49323 moveto 0.45238 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.49323 moveto 0.54762 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.49323 moveto 0.59524 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.49323 moveto 0.64286 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.49323 moveto 0.69048 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.49323 moveto 0.78571 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.49323 moveto 0.83333 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.49323 moveto 0.88095 0.49698 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.49323 moveto 0.92857 0.49698 lineto stroke grestore [( Hz)] 1.025 0.49323 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.49323 moveto 1 0.49323 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.00032 moveto 0.03006 0.00032 lineto stroke grestore [(-16)] 0.01131 0.00032 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12355 moveto 0.03006 0.12355 lineto stroke grestore [(-14)] 0.01131 0.12355 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24677 moveto 0.03006 0.24677 lineto stroke grestore [(-12)] 0.01131 0.24677 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.37 moveto 0.03006 0.37 lineto stroke grestore [(-10)] 0.01131 0.37 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.61646 moveto 0.03006 0.61646 lineto stroke grestore [(-6)] 0.01131 0.61646 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02496 moveto 0.02756 0.02496 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04961 moveto 0.02756 0.04961 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07426 moveto 0.02756 0.07426 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.0989 moveto 0.02756 0.0989 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14819 moveto 0.02756 0.14819 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17284 moveto 0.02756 0.17284 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19748 moveto 0.02756 0.19748 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22213 moveto 0.02756 0.22213 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27142 moveto 0.02756 0.27142 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29607 moveto 0.02756 0.29607 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32071 moveto 0.02756 0.32071 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34536 moveto 0.02756 0.34536 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39465 moveto 0.02756 0.39465 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41929 moveto 0.02756 0.41929 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44394 moveto 0.02756 0.44394 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46859 moveto 0.02756 0.46859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51788 moveto 0.02756 0.51788 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54252 moveto 0.02756 0.54252 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56717 moveto 0.02756 0.56717 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59181 moveto 0.02756 0.59181 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.59792 moveto 0.02505 0.59792 lineto 0.02629 0.59792 lineto 0.02753 0.59792 lineto 0.02877 0.59792 lineto 0.03125 0.59793 lineto 0.03373 0.59794 lineto 0.03622 0.59794 lineto 0.0387 0.59796 lineto 0.04366 0.59798 lineto 0.04862 0.59802 lineto 0.05358 0.59806 lineto 0.0635 0.59816 lineto 0.08334 0.59846 lineto 0.10318 0.59887 lineto 0.14286 0.59998 lineto 0.18254 0.60135 lineto 0.20238 0.60205 lineto 0.22223 0.60268 lineto 0.23215 0.60295 lineto 0.23711 0.60306 lineto 0.24207 0.60315 lineto 0.24703 0.60323 lineto 0.24951 0.60326 lineto 0.25199 0.60328 lineto 0.25447 0.6033 lineto 0.25571 0.60331 lineto 0.25695 0.60331 lineto 0.25819 0.60332 lineto 0.25943 0.60332 lineto 0.26067 0.60332 lineto 0.26191 0.60332 lineto 0.26315 0.60331 lineto 0.26439 0.60331 lineto 0.26563 0.6033 lineto 0.26687 0.60329 lineto 0.26935 0.60326 lineto 0.27183 0.60322 lineto 0.27431 0.60318 lineto 0.27679 0.60312 lineto 0.28175 0.60297 lineto 0.28671 0.60277 lineto 0.29167 0.60251 lineto 0.29663 0.60219 lineto 0.30159 0.6018 lineto 0.31151 0.60076 lineto 0.32143 0.59933 lineto 0.33135 0.5974 lineto 0.34127 0.59487 lineto 0.35119 0.59157 lineto Mistroke 0.36111 0.58734 lineto 0.37103 0.58195 lineto 0.38096 0.57515 lineto 0.39088 0.56662 lineto 0.4008 0.55599 lineto 0.41072 0.54281 lineto 0.42064 0.52658 lineto 0.43056 0.50676 lineto 0.44048 0.48275 lineto 0.46032 0.41994 lineto 0.48016 0.33497 lineto 0.5 0.22984 lineto 0.51984 0.11911 lineto 0.52976 0.07163 lineto 0.53472 0.05223 lineto 0.53968 0.03653 lineto 0.54216 0.03022 lineto 0.54465 0.02498 lineto 0.54713 0.02082 lineto 0.54837 0.01915 lineto 0.54961 0.01775 lineto 0.55085 0.01662 lineto 0.55209 0.01576 lineto 0.55333 0.01516 lineto 0.55457 0.01481 lineto 0.55581 0.01472 lineto 0.55705 0.01486 lineto 0.55829 0.01525 lineto 0.55953 0.01586 lineto 0.56201 0.01774 lineto 0.56325 0.01899 lineto 0.56449 0.02043 lineto 0.56945 0.02794 lineto 0.57441 0.03778 lineto 0.57937 0.04937 lineto 0.61905 0.15785 lineto 0.63889 0.20464 lineto 0.65873 0.24339 lineto 0.67857 0.27515 lineto 0.69841 0.30124 lineto 0.7381 0.34087 lineto 0.77778 0.36901 lineto 0.81746 0.38973 lineto 0.85714 0.40547 lineto 0.89683 0.41773 lineto 0.93651 0.42751 lineto 0.97619 0.43545 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "A second filter is shown below. We have combined a broad notch with a narrow \ resonance to give a bandpass filter."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "MakeContinuousResonance[1000,5] *\n\t\ MakeContinuousAntiResonance[1000,2]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ ((0.01999999999999999994 + 0.1979898987322333068*I)* (3.947841760435743446*10^7 + 3141.592653589793238*s + s^2))/ (3.947841760435743446*10^7 + 1256.637061435917295*s + s^2)\ \>", "\<\ 7 2 (0.02 + 0.19799 I) (3.94784 10 + 3141.59 s + s ) ------------------------------------------------- 7 2 3.94784 10 + 1256.64 s + s\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[MakeContinuousResonance[1000,5]*\n\t\ MakeContinuousAntiResonance[1000,2]//N,2000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 1.05181 0.0739563 [ [(500)] 0.2619 0.46016 0 2 Msboxa [(1000)] 0.5 0.46016 0 2 Msboxa [(1500)] 0.7381 0.46016 0 2 Msboxa [(2000)] 0.97619 0.46016 0 2 Msboxa [( Hz)] 1.025 0.46016 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-14)] 0.01131 0.01642 1 0 Msboxa [(-12)] 0.01131 0.16433 1 0 Msboxa [(-10)] 0.01131 0.31225 1 0 Msboxa [(-6)] 0.01131 0.60807 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.46016 moveto 0.2619 0.46641 lineto stroke grestore [(500)] 0.2619 0.46016 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.46016 moveto 0.5 0.46641 lineto stroke grestore [(1000)] 0.5 0.46016 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.46016 moveto 0.7381 0.46641 lineto stroke grestore [(1500)] 0.7381 0.46016 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.46016 moveto 0.97619 0.46641 lineto stroke grestore [(2000)] 0.97619 0.46016 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.46016 moveto 0.07143 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.46016 moveto 0.11905 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.46016 moveto 0.16667 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.46016 moveto 0.21429 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.46016 moveto 0.30952 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.46016 moveto 0.35714 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.46016 moveto 0.40476 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.46016 moveto 0.45238 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.46016 moveto 0.54762 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.46016 moveto 0.59524 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.46016 moveto 0.64286 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.46016 moveto 0.69048 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.46016 moveto 0.78571 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.46016 moveto 0.83333 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.46016 moveto 0.88095 0.46391 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.46016 moveto 0.92857 0.46391 lineto stroke grestore [( Hz)] 1.025 0.46016 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.46016 moveto 1 0.46016 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.01642 moveto 0.03006 0.01642 lineto stroke grestore [(-14)] 0.01131 0.01642 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.16433 moveto 0.03006 0.16433 lineto stroke grestore [(-12)] 0.01131 0.16433 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.31225 moveto 0.03006 0.31225 lineto stroke grestore [(-10)] 0.01131 0.31225 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.60807 moveto 0.03006 0.60807 lineto stroke grestore [(-6)] 0.01131 0.60807 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.046 moveto 0.02756 0.046 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07558 moveto 0.02756 0.07558 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10517 moveto 0.02756 0.10517 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.13475 moveto 0.02756 0.13475 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19391 moveto 0.02756 0.19391 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2235 moveto 0.02756 0.2235 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25308 moveto 0.02756 0.25308 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.28266 moveto 0.02756 0.28266 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34183 moveto 0.02756 0.34183 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37141 moveto 0.02756 0.37141 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40099 moveto 0.02756 0.40099 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43058 moveto 0.02756 0.43058 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48974 moveto 0.02756 0.48974 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51932 moveto 0.02756 0.51932 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54891 moveto 0.02756 0.54891 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57849 moveto 0.02756 0.57849 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.01472 moveto 0.02505 0.01472 lineto 0.02629 0.01472 lineto 0.02753 0.01472 lineto 0.02877 0.01472 lineto 0.03125 0.01473 lineto 0.03373 0.01474 lineto 0.03622 0.01476 lineto 0.0387 0.01478 lineto 0.04366 0.01483 lineto 0.04862 0.0149 lineto 0.05358 0.01498 lineto 0.0635 0.01519 lineto 0.07342 0.01546 lineto 0.08334 0.0158 lineto 0.10318 0.01669 lineto 0.12302 0.01789 lineto 0.14286 0.01946 lineto 0.1627 0.02147 lineto 0.18254 0.02401 lineto 0.20238 0.02722 lineto 0.22223 0.03126 lineto 0.24207 0.03637 lineto 0.26191 0.0429 lineto 0.28175 0.05128 lineto 0.30159 0.06217 lineto 0.32143 0.07647 lineto 0.34127 0.09549 lineto 0.36111 0.1211 lineto 0.38096 0.15594 lineto 0.4008 0.20362 lineto 0.42064 0.26853 lineto 0.44048 0.35439 lineto 0.46032 0.45875 lineto 0.47024 0.51211 lineto 0.4752 0.53684 lineto 0.48016 0.55901 lineto 0.48512 0.57761 lineto 0.4876 0.58526 lineto 0.49008 0.59166 lineto 0.49256 0.59673 lineto 0.4938 0.59873 lineto 0.49504 0.60038 lineto 0.49628 0.60167 lineto 0.49752 0.60259 lineto 0.49876 0.60314 lineto 0.5 0.60332 lineto 0.50124 0.60314 lineto 0.50248 0.60259 lineto 0.50372 0.60169 lineto Mistroke 0.50496 0.60044 lineto 0.50744 0.59692 lineto 0.50992 0.59212 lineto 0.51488 0.57908 lineto 0.51984 0.56224 lineto 0.53968 0.47542 lineto 0.55953 0.38762 lineto 0.57937 0.31491 lineto 0.59921 0.25837 lineto 0.61905 0.21506 lineto 0.63889 0.18178 lineto 0.65873 0.15594 lineto 0.67857 0.1356 lineto 0.69841 0.11936 lineto 0.71826 0.10624 lineto 0.7381 0.09549 lineto 0.77778 0.07912 lineto 0.81746 0.06741 lineto 0.85714 0.05875 lineto 0.89683 0.05215 lineto 0.93651 0.047 lineto 0.97619 0.0429 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "We can gain more insight about this filter by examining the response in the \ complex s-plane. This is shown below with the white spots representing the \ location of the resonance (or greatest response) and the black representing \ the zeros or lowest response."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "gg[x_] := Release[N[Abs[(MakeContinuousResonance[1000,5] *\n\t\t\t\t\t\ MakeContinuousAntiResonance[1000,2])\n\t\t\t\t\t\t/.s->x]]];\n\t\t\t\t\t\n\ DensityPlot[gg[x + I y],{x,-8000,8000},{y,-8000,8000},\n\t\t\tPlotPoints->33,\ \n\t\t\tAxesLabel->{\"Real Frequency\",\"Imaginary Frequency\"}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.5 6.00962e-05 0.5 6.00962e-05 [ [(-7500)] 0.04928 0 0 2 Msboxa [(-5000)] 0.19952 0 0 2 Msboxa [(-2500)] 0.34976 0 0 2 Msboxa [(0)] 0.5 0 0 2 Msboxa [(2500)] 0.65024 0 0 2 Msboxa [(5000)] 0.80048 0 0 2 Msboxa [(7500)] 0.95072 0 0 2 Msboxa [(-7500)] -0.0125 0.04928 1 0 Msboxa [(-5000)] -0.0125 0.19952 1 0 Msboxa [(-2500)] -0.0125 0.34976 1 0 Msboxa [(0)] -0.0125 0.5 1 0 Msboxa [(2500)] -0.0125 0.65024 1 0 Msboxa [(5000)] -0.0125 0.80048 1 0 Msboxa [(7500)] -0.0125 0.95072 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 1.001 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: DensityGraphics [ ] 0 setdash 0 setgray gsave gsave gsave 0.002 setlinewidth 0.04928 0 moveto 0.04928 0.00625 lineto stroke grestore [(-7500)] 0.04928 0 0 2 Mshowa gsave 0.002 setlinewidth 0.19952 0 moveto 0.19952 0.00625 lineto stroke grestore [(-5000)] 0.19952 0 0 2 Mshowa gsave 0.002 setlinewidth 0.34976 0 moveto 0.34976 0.00625 lineto stroke grestore [(-2500)] 0.34976 0 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0 moveto 0.5 0.00625 lineto stroke grestore [(0)] 0.5 0 0 2 Mshowa gsave 0.002 setlinewidth 0.65024 0 moveto 0.65024 0.00625 lineto stroke grestore [(2500)] 0.65024 0 0 2 Mshowa gsave 0.002 setlinewidth 0.80048 0 moveto 0.80048 0.00625 lineto stroke grestore [(5000)] 0.80048 0 0 2 Mshowa gsave 0.002 setlinewidth 0.95072 0 moveto 0.95072 0.00625 lineto stroke grestore [(7500)] 0.95072 0 0 2 Mshowa gsave 0.001 setlinewidth 0.07933 0 moveto 0.07933 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.10938 0 moveto 0.10938 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.13942 0 moveto 0.13942 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.16947 0 moveto 0.16947 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.22957 0 moveto 0.22957 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.25962 0 moveto 0.25962 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.28966 0 moveto 0.28966 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.31971 0 moveto 0.31971 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.37981 0 moveto 0.37981 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.40986 0 moveto 0.40986 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.4399 0 moveto 0.4399 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.46995 0 moveto 0.46995 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.53005 0 moveto 0.53005 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.5601 0 moveto 0.5601 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.59014 0 moveto 0.59014 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.62019 0 moveto 0.62019 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.68029 0 moveto 0.68029 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.71034 0 moveto 0.71034 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.74038 0 moveto 0.74038 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.77043 0 moveto 0.77043 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.83053 0 moveto 0.83053 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.86058 0 moveto 0.86058 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.89063 0 moveto 0.89063 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.92067 0 moveto 0.92067 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.01923 0 moveto 0.01923 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.98077 0 moveto 0.98077 0.00375 lineto stroke grestore gsave 0.002 setlinewidth 0 0 moveto 1 0 lineto stroke grestore gsave 0.002 setlinewidth 0 0.04928 moveto 0.00625 0.04928 lineto stroke grestore [(-7500)] -0.0125 0.04928 1 0 Mshowa gsave 0.002 setlinewidth 0 0.19952 moveto 0.00625 0.19952 lineto stroke grestore [(-5000)] -0.0125 0.19952 1 0 Mshowa gsave 0.002 setlinewidth 0 0.34976 moveto 0.00625 0.34976 lineto stroke grestore [(-2500)] -0.0125 0.34976 1 0 Mshowa gsave 0.002 setlinewidth 0 0.5 moveto 0.00625 0.5 lineto stroke grestore [(0)] -0.0125 0.5 1 0 Mshowa gsave 0.002 setlinewidth 0 0.65024 moveto 0.00625 0.65024 lineto stroke grestore [(2500)] -0.0125 0.65024 1 0 Mshowa gsave 0.002 setlinewidth 0 0.80048 moveto 0.00625 0.80048 lineto stroke grestore [(5000)] -0.0125 0.80048 1 0 Mshowa gsave 0.002 setlinewidth 0 0.95072 moveto 0.00625 0.95072 lineto stroke grestore [(7500)] -0.0125 0.95072 1 0 Mshowa gsave 0.001 setlinewidth 0 0.07933 moveto 0.00375 0.07933 lineto stroke grestore gsave 0.001 setlinewidth 0 0.10938 moveto 0.00375 0.10938 lineto stroke grestore gsave 0.001 setlinewidth 0 0.13942 moveto 0.00375 0.13942 lineto stroke grestore gsave 0.001 setlinewidth 0 0.16947 moveto 0.00375 0.16947 lineto stroke grestore gsave 0.001 setlinewidth 0 0.22957 moveto 0.00375 0.22957 lineto stroke grestore gsave 0.001 setlinewidth 0 0.25962 moveto 0.00375 0.25962 lineto stroke grestore gsave 0.001 setlinewidth 0 0.28966 moveto 0.00375 0.28966 lineto stroke grestore gsave 0.001 setlinewidth 0 0.31971 moveto 0.00375 0.31971 lineto stroke grestore gsave 0.001 setlinewidth 0 0.37981 moveto 0.00375 0.37981 lineto stroke grestore gsave 0.001 setlinewidth 0 0.40986 moveto 0.00375 0.40986 lineto stroke grestore gsave 0.001 setlinewidth 0 0.4399 moveto 0.00375 0.4399 lineto stroke grestore gsave 0.001 setlinewidth 0 0.46995 moveto 0.00375 0.46995 lineto stroke grestore gsave 0.001 setlinewidth 0 0.53005 moveto 0.00375 0.53005 lineto stroke grestore gsave 0.001 setlinewidth 0 0.5601 moveto 0.00375 0.5601 lineto stroke grestore gsave 0.001 setlinewidth 0 0.59014 moveto 0.00375 0.59014 lineto stroke grestore gsave 0.001 setlinewidth 0 0.62019 moveto 0.00375 0.62019 lineto stroke grestore gsave 0.001 setlinewidth 0 0.68029 moveto 0.00375 0.68029 lineto stroke grestore gsave 0.001 setlinewidth 0 0.71034 moveto 0.00375 0.71034 lineto stroke grestore gsave 0.001 setlinewidth 0 0.74038 moveto 0.00375 0.74038 lineto stroke grestore gsave 0.001 setlinewidth 0 0.77043 moveto 0.00375 0.77043 lineto stroke grestore gsave 0.001 setlinewidth 0 0.83053 moveto 0.00375 0.83053 lineto stroke grestore gsave 0.001 setlinewidth 0 0.86058 moveto 0.00375 0.86058 lineto stroke grestore gsave 0.001 setlinewidth 0 0.89063 moveto 0.00375 0.89063 lineto stroke grestore gsave 0.001 setlinewidth 0 0.92067 moveto 0.00375 0.92067 lineto stroke grestore gsave 0.001 setlinewidth 0 0.01923 moveto 0.00375 0.01923 lineto stroke grestore gsave 0.001 setlinewidth 0 0.98077 moveto 0.00375 0.98077 lineto stroke grestore gsave 0.002 setlinewidth 0 0 moveto 0 1 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0.04928 0.99375 moveto 0.04928 1 lineto stroke grestore gsave 0.002 setlinewidth 0.19952 0.99375 moveto 0.19952 1 lineto stroke grestore gsave 0.002 setlinewidth 0.34976 0.99375 moveto 0.34976 1 lineto stroke grestore gsave 0.002 setlinewidth 0.5 0.99375 moveto 0.5 1 lineto stroke grestore gsave 0.002 setlinewidth 0.65024 0.99375 moveto 0.65024 1 lineto stroke grestore gsave 0.002 setlinewidth 0.80048 0.99375 moveto 0.80048 1 lineto stroke grestore gsave 0.002 setlinewidth 0.95072 0.99375 moveto 0.95072 1 lineto stroke grestore gsave 0.001 setlinewidth 0.07933 0.99625 moveto 0.07933 1 lineto stroke grestore gsave 0.001 setlinewidth 0.10938 0.99625 moveto 0.10938 1 lineto stroke grestore gsave 0.001 setlinewidth 0.13942 0.99625 moveto 0.13942 1 lineto stroke grestore gsave 0.001 setlinewidth 0.16947 0.99625 moveto 0.16947 1 lineto stroke grestore gsave 0.001 setlinewidth 0.22957 0.99625 moveto 0.22957 1 lineto stroke grestore gsave 0.001 setlinewidth 0.25962 0.99625 moveto 0.25962 1 lineto stroke grestore gsave 0.001 setlinewidth 0.28966 0.99625 moveto 0.28966 1 lineto stroke grestore gsave 0.001 setlinewidth 0.31971 0.99625 moveto 0.31971 1 lineto stroke grestore gsave 0.001 setlinewidth 0.37981 0.99625 moveto 0.37981 1 lineto stroke grestore gsave 0.001 setlinewidth 0.40986 0.99625 moveto 0.40986 1 lineto stroke grestore gsave 0.001 setlinewidth 0.4399 0.99625 moveto 0.4399 1 lineto stroke grestore gsave 0.001 setlinewidth 0.46995 0.99625 moveto 0.46995 1 lineto stroke grestore gsave 0.001 setlinewidth 0.53005 0.99625 moveto 0.53005 1 lineto stroke grestore gsave 0.001 setlinewidth 0.5601 0.99625 moveto 0.5601 1 lineto stroke grestore gsave 0.001 setlinewidth 0.59014 0.99625 moveto 0.59014 1 lineto stroke grestore gsave 0.001 setlinewidth 0.62019 0.99625 moveto 0.62019 1 lineto stroke grestore gsave 0.001 setlinewidth 0.68029 0.99625 moveto 0.68029 1 lineto stroke grestore gsave 0.001 setlinewidth 0.71034 0.99625 moveto 0.71034 1 lineto stroke grestore gsave 0.001 setlinewidth 0.74038 0.99625 moveto 0.74038 1 lineto stroke grestore gsave 0.001 setlinewidth 0.77043 0.99625 moveto 0.77043 1 lineto stroke grestore gsave 0.001 setlinewidth 0.83053 0.99625 moveto 0.83053 1 lineto stroke grestore gsave 0.001 setlinewidth 0.86058 0.99625 moveto 0.86058 1 lineto stroke grestore gsave 0.001 setlinewidth 0.89063 0.99625 moveto 0.89063 1 lineto stroke grestore gsave 0.001 setlinewidth 0.92067 0.99625 moveto 0.92067 1 lineto stroke grestore gsave 0.001 setlinewidth 0.01923 0.99625 moveto 0.01923 1 lineto stroke grestore gsave 0.001 setlinewidth 0.98077 0.99625 moveto 0.98077 1 lineto stroke grestore gsave 0.002 setlinewidth 0 1 moveto 1 1 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.04928 moveto 1 0.04928 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.19952 moveto 1 0.19952 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.34976 moveto 1 0.34976 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.5 moveto 1 0.5 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.65024 moveto 1 0.65024 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.80048 moveto 1 0.80048 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.95072 moveto 1 0.95072 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.07933 moveto 1 0.07933 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.10938 moveto 1 0.10938 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.13942 moveto 1 0.13942 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.16947 moveto 1 0.16947 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.22957 moveto 1 0.22957 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.25962 moveto 1 0.25962 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.28966 moveto 1 0.28966 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.31971 moveto 1 0.31971 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.37981 moveto 1 0.37981 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.40986 moveto 1 0.40986 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.4399 moveto 1 0.4399 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.46995 moveto 1 0.46995 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.53005 moveto 1 0.53005 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.5601 moveto 1 0.5601 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.59014 moveto 1 0.59014 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.62019 moveto 1 0.62019 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.68029 moveto 1 0.68029 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.71034 moveto 1 0.71034 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.74038 moveto 1 0.74038 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.77043 moveto 1 0.77043 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.83053 moveto 1 0.83053 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.86058 moveto 1 0.86058 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.89063 moveto 1 0.89063 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.92067 moveto 1 0.92067 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.01923 moveto 1 0.01923 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.98077 moveto 1 0.98077 lineto stroke grestore gsave 0.002 setlinewidth 1 0 moveto 1 1 lineto stroke grestore grestore gsave grestore grestore 0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto closepath clip newpath % Start of gray image gsave 0.01923 0.01923 translate 0.96154 0.96154 scale 33 string 33 33 8 [33 0 0 33 0 0] { \tcurrentfile \t1 index \treadhexstring \tpop } image 7B7B7A7978767574737273767E8CA0B3C0C3C2BEBAB6B3B0 AEACAAA9A7A6A5A5A4 7A797877767472706E6C6A6B7185A7CBD9D7CEC6BFBAB6B2 AFADABA9A8A7A6A5A4 7A7977767472706D6A65605B5C72B8FFFFF1DCCEC4BDB7B3 B0AEACAAA9A7A6A5A4 7978767573716E6B6660584C3D42E2FFFFFFE4D2C6BEB8B4 B1AEACAAA9A8A6A6A5 7877767472706D69655E54462C11B7FFFFFFE2D0C5BDB8B4 B0AEACAAA9A8A7A6A5 7877767472706D69655F574D41488BE5F6E5D5C9C1BBB6B2 B0ADACAAA9A8A7A6A5 7877757472706E6B67635E59596586ADC4C8C5BFBBB7B3B1 AEADABAAA8A7A6A6A5 7877767473716F6D6A6765656873869CACB4B7B6B4B2B0AE ADABAAA9A8A7A6A5A5 787776757372716F6D6C6C6D727A8794A0A8ADAEAEAEADAC ABAAA9A8A7A7A6A5A5 787776757473727171707173787F87919AA1A5A8A9AAAAAA A9A9A8A7A7A6A6A5A5 7877777675747474737475787C81888F969CA0A3A5A7A7A8 A8A7A7A7A6A6A5A5A4 78787777767675757677787B7F83898E94999DA0A2A4A5A6 A6A6A6A6A6A5A5A5A4 797878777777777778797B7D8084898E92979A9EA0A2A3A4 A5A5A5A5A5A5A5A4A4 7978787877777878797A7C7F8285898D9195999C9EA0A2A3 A4A4A5A5A5A5A4A4A4 79797878787878797A7B7D808286898D9194989B9D9FA1A2 A3A4A4A4A4A4A4A4A4 797978787878797A7B7C7E808386898D9194979A9D9FA0A2 A3A3A4A4A4A4A4A4A4 797978787879797A7B7C7E808386898D9094979A9C9EA0A1 A2A3A4A4A4A4A4A4A4 797978787878797A7B7C7E808386898D9194979A9D9FA0A2 A3A3A4A4A4A4A4A4A4 79797878787878797A7B7D808286898D9194989B9D9FA1A2 A3A4A4A4A4A4A4A4A4 7978787877777878797A7C7F8285898D9195999C9EA0A2A3 A4A4A5A5A5A5A4A4A4 797878777777777778797B7D8084898E92979A9EA0A2A3A4 A5A5A5A5A5A5A5A4A4 78787777767675757677787B7F83898E94999DA0A2A4A5A6 A6A6A6A6A6A5A5A5A4 7877777675747474737475787C81888F969CA0A3A5A7A7A8 A8A7A7A7A6A6A5A5A4 787776757473727171707173787F87919AA1A5A8A9AAAAAA A9A9A8A7A7A6A6A5A5 787776757372716F6D6C6C6D727A8794A0A8ADAEAEAEADAC ABAAA9A8A7A7A6A5A5 7877767473716F6D6A6765656873869CACB4B7B6B4B2B0AE ADABAAA9A8A7A6A5A5 7877757472706E6B67635E59596586ADC4C8C5BFBBB7B3B1 AEADABAAA8A7A6A6A5 7877767472706D69655F574D41488BE5F6E5D5C9C1BBB6B2 B0ADACAAA9A8A7A6A5 7877767472706D69655E54462C11B7FFFFFFE2D0C5BDB8B4 B0AEACAAA9A8A7A6A5 7978767573716E6B6660584C3D42E2FFFFFFE4D2C6BEB8B4 B1AEACAAA9A8A6A6A5 7A7977767472706D6A65605B5C72B8FFFFF1DCCEC4BDB7B3 B0AEACAAA9A7A6A5A4 7A797877767472706E6C6A6B7185A7CBD9D7CEC6BFBAB6B2 AFADABA9A8A7A6A5A4 7B7B7A7978767574737273767E8CA0B3C0C3C2BEBAB6B3B0 AEACAAA9A7A6A5A5A4 pop grestore % End of image gsave 0.0015 setlinewidth 0.01923 0.01923 moveto 0.01923 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.04837 0.01923 moveto 0.04837 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.07751 0.01923 moveto 0.07751 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.10664 0.01923 moveto 0.10664 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.13578 0.01923 moveto 0.13578 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.16492 0.01923 moveto 0.16492 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.19406 0.01923 moveto 0.19406 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.22319 0.01923 moveto 0.22319 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.25233 0.01923 moveto 0.25233 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.28147 0.01923 moveto 0.28147 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.31061 0.01923 moveto 0.31061 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.33974 0.01923 moveto 0.33974 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.36888 0.01923 moveto 0.36888 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.39802 0.01923 moveto 0.39802 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.42716 0.01923 moveto 0.42716 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.45629 0.01923 moveto 0.45629 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.48543 0.01923 moveto 0.48543 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.51457 0.01923 moveto 0.51457 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.54371 0.01923 moveto 0.54371 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.57284 0.01923 moveto 0.57284 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.60198 0.01923 moveto 0.60198 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.63112 0.01923 moveto 0.63112 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.66026 0.01923 moveto 0.66026 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.68939 0.01923 moveto 0.68939 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.71853 0.01923 moveto 0.71853 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.74767 0.01923 moveto 0.74767 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.77681 0.01923 moveto 0.77681 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.80594 0.01923 moveto 0.80594 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.83508 0.01923 moveto 0.83508 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.86422 0.01923 moveto 0.86422 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.89336 0.01923 moveto 0.89336 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.92249 0.01923 moveto 0.92249 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.95163 0.01923 moveto 0.95163 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.98077 0.01923 moveto 0.98077 0.98077 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.01923 moveto 0.98077 0.01923 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.04837 moveto 0.98077 0.04837 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.07751 moveto 0.98077 0.07751 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.10664 moveto 0.98077 0.10664 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.13578 moveto 0.98077 0.13578 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.16492 moveto 0.98077 0.16492 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.19406 moveto 0.98077 0.19406 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.22319 moveto 0.98077 0.22319 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.25233 moveto 0.98077 0.25233 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.28147 moveto 0.98077 0.28147 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.31061 moveto 0.98077 0.31061 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.33974 moveto 0.98077 0.33974 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.36888 moveto 0.98077 0.36888 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.39802 moveto 0.98077 0.39802 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.42716 moveto 0.98077 0.42716 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.45629 moveto 0.98077 0.45629 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.48543 moveto 0.98077 0.48543 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.51457 moveto 0.98077 0.51457 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.54371 moveto 0.98077 0.54371 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.57284 moveto 0.98077 0.57284 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.60198 moveto 0.98077 0.60198 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.63112 moveto 0.98077 0.63112 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.66026 moveto 0.98077 0.66026 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.68939 moveto 0.98077 0.68939 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.71853 moveto 0.98077 0.71853 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.74767 moveto 0.98077 0.74767 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.77681 moveto 0.98077 0.77681 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.80594 moveto 0.98077 0.80594 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.83508 moveto 0.98077 0.83508 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.86422 moveto 0.98077 0.86422 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.89336 moveto 0.98077 0.89336 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.92249 moveto 0.98077 0.92249 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.95163 moveto 0.98077 0.95163 lineto stroke grestore gsave 0.0015 setlinewidth 0.01923 0.98077 moveto 0.98077 0.98077 lineto stroke grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 282}, ImageMargins->{{34, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[{ StyleBox[ "We can also plot this function as a perspective plot. This is shown below. \ Here we have only shown the upper left hand quadrant of the gray scale \ picture above. The front axis is the positive j", Evaluatable->False, AspectRatioFixed->False], StyleBox["\[Omega]", Evaluatable->False, AspectRatioFixed->False], StyleBox[ " axis and corresponds to the functions frequency response. The poles and \ zeros in the upper left half plane are clearly visible. [Thanks to Richard \ Lyon for suggesting this viewpoint.]", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "gg[x_] := Release[N[dB[Abs[(MakeContinuousResonance[1000,2] *\n\t\t\t\t\ MakeContinuousAntiResonance[1000,5])\n\t\t\t\t\t/.s->x]]]]\n\nPlot3D[gg[x + I \ y],{x,-10000,0},{y,0,12000},\n\t\t\tPlotPoints->20,\n\t\t\t\ ViewPoint->{2,-0.25,1},\n\t\t\tLighting->True];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.69823 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations -0.0622846 1.03638 -0.11002 1.03638 [ [(-10000)] 0.73726 0.67281 -1 -0.0382775 Msboxa [(-8000)] 0.77291 0.63332 -1 -0.0411194 Msboxa [(-6000)] 0.81405 0.58774 -1 -0.044417 Msboxa [(-4000)] 0.86208 0.53454 -1 -0.0482897 Msboxa [(-2000)] 0.91885 0.47164 -1 -0.0529023 Msboxa [(0)] 0.98702 0.39613 -1 -0.058489 Msboxa [(0)] 0.06918 0.01307 -0.132388 1 Msboxa [(2500)] 0.25585 0.02788 -0.0681378 1 Msboxa [(5000)] 0.43794 0.04239 -0.00608828 1 Msboxa [(7500)] 0.61562 0.05659 0.0538721 1 Msboxa [(10000)] 0.78905 0.07049 0.111847 1 Msboxa [(-8)] 0.05396 0.02945 1 0.0791647 Msboxa [(-6)] 0.04076 0.12922 1 0.0724919 Msboxa [(-4)] 0.02663 0.236 1 0.0653635 Msboxa [ 0 0 0 0 ] [ 1 0.698226 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: SurfaceGraphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.72431 0.67232 moveto 0.97409 0.39537 lineto stroke grestore gsave 0.002 setlinewidth 0.72431 0.67232 moveto 0.71784 0.67207 lineto stroke grestore [(-10000)] 0.73726 0.67281 -1 -0.0382775 Mshowa gsave 0.002 setlinewidth 0.75996 0.63279 moveto 0.75349 0.63252 lineto stroke grestore [(-8000)] 0.77291 0.63332 -1 -0.0411194 Mshowa gsave 0.002 setlinewidth 0.80111 0.58716 moveto 0.79464 0.58688 lineto stroke grestore [(-6000)] 0.81405 0.58774 -1 -0.044417 Mshowa gsave 0.002 setlinewidth 0.84914 0.53392 moveto 0.84267 0.5336 lineto stroke grestore [(-4000)] 0.86208 0.53454 -1 -0.0482897 Mshowa gsave 0.002 setlinewidth 0.90592 0.47096 moveto 0.89945 0.47062 lineto stroke grestore [(-2000)] 0.91885 0.47164 -1 -0.0529023 Mshowa gsave 0.002 setlinewidth 0.97409 0.39537 moveto 0.96762 0.39499 lineto stroke grestore [(0)] 0.98702 0.39613 -1 -0.058489 Mshowa gsave 0.001 setlinewidth 0.73106 0.66484 moveto 0.72717 0.66469 lineto stroke grestore gsave 0.001 setlinewidth 0.73799 0.65716 moveto 0.7341 0.657 lineto stroke grestore gsave 0.001 setlinewidth 0.74511 0.64926 moveto 0.74122 0.6491 lineto stroke grestore gsave 0.001 setlinewidth 0.75243 0.64114 moveto 0.74855 0.64098 lineto stroke grestore gsave 0.001 setlinewidth 0.76771 0.62419 moveto 0.76383 0.62403 lineto stroke grestore gsave 0.001 setlinewidth 0.77569 0.61535 moveto 0.77181 0.61518 lineto stroke grestore gsave 0.001 setlinewidth 0.78391 0.60623 moveto 0.78003 0.60607 lineto stroke grestore gsave 0.001 setlinewidth 0.79238 0.59684 moveto 0.7885 0.59667 lineto stroke grestore gsave 0.001 setlinewidth 0.81011 0.57718 moveto 0.80623 0.57701 lineto stroke grestore gsave 0.001 setlinewidth 0.8194 0.56688 moveto 0.81552 0.5667 lineto stroke grestore gsave 0.001 setlinewidth 0.82899 0.55625 moveto 0.82511 0.55607 lineto stroke grestore gsave 0.001 setlinewidth 0.8389 0.54527 moveto 0.83502 0.54508 lineto stroke grestore gsave 0.001 setlinewidth 0.85972 0.52218 moveto 0.85584 0.52199 lineto stroke grestore gsave 0.001 setlinewidth 0.87067 0.51004 moveto 0.86679 0.50985 lineto stroke grestore gsave 0.001 setlinewidth 0.88201 0.49747 moveto 0.87812 0.49727 lineto stroke grestore gsave 0.001 setlinewidth 0.89375 0.48445 moveto 0.88987 0.48425 lineto stroke grestore gsave 0.001 setlinewidth 0.91854 0.45697 moveto 0.91466 0.45676 lineto stroke grestore gsave 0.001 setlinewidth 0.93164 0.44244 moveto 0.92776 0.44223 lineto stroke grestore gsave 0.001 setlinewidth 0.94524 0.42736 moveto 0.94136 0.42714 lineto stroke grestore gsave 0.001 setlinewidth 0.95938 0.41168 moveto 0.9555 0.41146 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.92685 0.0942 lineto stroke grestore gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.06663 0.03233 lineto stroke grestore [(0)] 0.06918 0.01307 -0.132388 1 Mshowa gsave 0.002 setlinewidth 0.25497 0.04081 moveto 0.25453 0.04727 lineto stroke grestore [(2500)] 0.25585 0.02788 -0.0681378 1 Mshowa gsave 0.002 setlinewidth 0.43786 0.05534 moveto 0.43782 0.06182 lineto stroke grestore [(5000)] 0.43794 0.04239 -0.00608828 1 Mshowa gsave 0.002 setlinewidth 0.61631 0.06953 moveto 0.61666 0.07599 lineto stroke grestore [(7500)] 0.61562 0.05659 0.0538721 1 Mshowa gsave 0.002 setlinewidth 0.79049 0.08337 moveto 0.79121 0.0898 lineto stroke grestore [(10000)] 0.78905 0.07049 0.111847 1 Mshowa gsave 0.001 setlinewidth 0.10536 0.02892 moveto 0.10489 0.03278 lineto stroke grestore gsave 0.001 setlinewidth 0.14304 0.03191 moveto 0.14263 0.03578 lineto stroke grestore gsave 0.001 setlinewidth 0.18054 0.03489 moveto 0.18018 0.03876 lineto stroke grestore gsave 0.001 setlinewidth 0.21785 0.03786 moveto 0.21753 0.04173 lineto stroke grestore gsave 0.001 setlinewidth 0.29191 0.04375 moveto 0.2917 0.04763 lineto stroke grestore gsave 0.001 setlinewidth 0.32867 0.04667 moveto 0.3285 0.05055 lineto stroke grestore gsave 0.001 setlinewidth 0.36525 0.04957 moveto 0.36513 0.05346 lineto stroke grestore gsave 0.001 setlinewidth 0.40164 0.05247 moveto 0.40157 0.05635 lineto stroke grestore gsave 0.001 setlinewidth 0.4739 0.05821 moveto 0.47392 0.06209 lineto stroke grestore gsave 0.001 setlinewidth 0.50976 0.06106 moveto 0.50984 0.06494 lineto stroke grestore gsave 0.001 setlinewidth 0.54545 0.06389 moveto 0.54557 0.06778 lineto stroke grestore gsave 0.001 setlinewidth 0.58097 0.06672 moveto 0.58113 0.0706 lineto stroke grestore gsave 0.001 setlinewidth 0.65148 0.07232 moveto 0.65174 0.0762 lineto stroke grestore gsave 0.001 setlinewidth 0.68649 0.0751 moveto 0.68679 0.07898 lineto stroke grestore gsave 0.001 setlinewidth 0.72132 0.07787 moveto 0.72166 0.08174 lineto stroke grestore gsave 0.001 setlinewidth 0.75599 0.08063 moveto 0.75637 0.08449 lineto stroke grestore gsave 0.001 setlinewidth 0.82482 0.0861 moveto 0.8253 0.08995 lineto stroke grestore gsave 0.001 setlinewidth 0.85899 0.08881 moveto 0.85951 0.09266 lineto stroke grestore gsave 0.001 setlinewidth 0.893 0.09151 moveto 0.89356 0.09536 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.02591 0.33991 lineto stroke grestore gsave 0.002 setlinewidth 0.06688 0.03047 moveto 0.07333 0.03098 lineto stroke grestore [(-8)] 0.05396 0.02945 1 0.0791647 Mshowa gsave 0.002 setlinewidth 0.05368 0.13015 moveto 0.06014 0.13062 lineto stroke grestore [(-6)] 0.04076 0.12922 1 0.0724919 Mshowa gsave 0.002 setlinewidth 0.03956 0.23684 moveto 0.04602 0.23726 lineto stroke grestore [(-4)] 0.02663 0.236 1 0.0653635 Mshowa gsave 0.001 setlinewidth 0.06431 0.04988 moveto 0.06818 0.05018 lineto stroke grestore gsave 0.001 setlinewidth 0.0617 0.06955 moveto 0.06558 0.06984 lineto stroke grestore gsave 0.001 setlinewidth 0.05906 0.08948 moveto 0.06294 0.08977 lineto stroke grestore gsave 0.001 setlinewidth 0.05639 0.10968 moveto 0.06027 0.10997 lineto stroke grestore gsave 0.001 setlinewidth 0.05093 0.15091 moveto 0.05481 0.15118 lineto stroke grestore gsave 0.001 setlinewidth 0.04815 0.17195 moveto 0.05202 0.17222 lineto stroke grestore gsave 0.001 setlinewidth 0.04532 0.19328 moveto 0.0492 0.19354 lineto stroke grestore gsave 0.001 setlinewidth 0.04246 0.21491 moveto 0.04634 0.21517 lineto stroke grestore gsave 0.001 setlinewidth 0.03661 0.25908 moveto 0.04049 0.25933 lineto stroke grestore gsave 0.001 setlinewidth 0.03362 0.28164 moveto 0.0375 0.28188 lineto stroke grestore gsave 0.001 setlinewidth 0.03059 0.30453 moveto 0.03447 0.30476 lineto stroke grestore gsave 0.001 setlinewidth 0.02752 0.32774 moveto 0.0314 0.32797 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.69823 lineto 0 0.69823 lineto closepath clip newpath gsave 0.002 setlinewidth 0.11924 0.41648 moveto 0.09577 0.64826 lineto stroke 0.09577 0.64826 moveto 0.72431 0.67232 lineto stroke 0.72431 0.67232 moveto 0.7075 0.4481 lineto stroke 0.7075 0.4481 moveto 0.11924 0.41648 lineto stroke 0.06748 0.02591 moveto 0.92685 0.0942 lineto stroke 0.92685 0.0942 moveto 0.97409 0.39537 lineto stroke 0.97409 0.39537 moveto 0.02591 0.33991 lineto stroke 0.02591 0.33991 moveto 0.06748 0.02591 lineto stroke 0.11924 0.41648 moveto 0.09577 0.64826 lineto stroke 0.09577 0.64826 moveto 0.02591 0.33991 lineto stroke 0.02591 0.33991 moveto 0.06748 0.02591 lineto stroke 0.06748 0.02591 moveto 0.11924 0.41648 lineto stroke 0.7075 0.4481 moveto 0.92685 0.0942 lineto stroke 0.92685 0.0942 moveto 0.97409 0.39537 lineto stroke 0.97409 0.39537 moveto 0.72431 0.67232 lineto stroke 0.72431 0.67232 moveto 0.7075 0.4481 lineto stroke grestore gsave 0.481 0.813 1 setrgbcolor 0.0015 setlinewidth 0.10695 0.53788 0.1403 0.53941 0.1386 0.52857 0.10463 0.52696 Metetra 0.482 0.813 1 setrgbcolor 0.10463 0.52696 0.1386 0.52857 0.13685 0.51727 0.10224 0.51557 Metetra 0.484 0.813 1 setrgbcolor 0.10224 0.51557 0.13685 0.51727 0.13504 0.50544 0.09976 0.50365 Metetra 0.488 0.813 1 setrgbcolor 0.09976 0.50365 0.13504 0.50544 0.13317 0.49301 0.0972 0.4911 Metetra 0.492 0.812 1 setrgbcolor 0.0972 0.4911 0.13317 0.49301 0.13124 0.47987 0.09456 0.47782 Metetra 0.499 0.812 1 setrgbcolor 0.09456 0.47782 0.13124 0.47987 0.12927 0.46589 0.09185 0.46368 Metetra 0.508 0.812 1 setrgbcolor 0.09185 0.46368 0.12927 0.46589 0.12726 0.45089 0.08908 0.4485 Metetra 0.518 0.811 0.999 setrgbcolor 0.08908 0.4485 0.12726 0.45089 0.12523 0.43469 0.08626 0.43209 Metetra 0.531 0.809 0.997 setrgbcolor 0.08626 0.43209 0.12523 0.43469 0.12318 0.41704 0.08341 0.41422 Metetra 0.545 0.807 0.994 setrgbcolor 0.08341 0.41422 0.12318 0.41704 0.12114 0.39769 0.08055 0.39463 Metetra 0.561 0.803 0.99 setrgbcolor 0.08055 0.39463 0.12114 0.39769 0.11914 0.37634 0.07769 0.37305 Metetra 0.576 0.799 0.984 setrgbcolor 0.07769 0.37305 0.11914 0.37634 0.11719 0.35272 0.07486 0.34923 Metetra 0.592 0.795 0.977 setrgbcolor 0.07486 0.34923 0.11719 0.35272 0.11531 0.32658 0.07209 0.32294 Metetra 0.606 0.79 0.969 setrgbcolor 0.07209 0.32294 0.11531 0.32658 0.11351 0.29777 0.06936 0.29406 Metetra 0.619 0.787 0.962 setrgbcolor 0.06936 0.29406 0.11351 0.29777 0.1118 0.26627 0.06669 0.26257 Metetra 0.63 0.784 0.956 setrgbcolor 0.06669 0.26257 0.1118 0.26627 0.11015 0.23219 0.06404 0.2286 Metetra 0.638 0.784 0.952 setrgbcolor 0.06404 0.2286 0.11015 0.23219 0.10851 0.19583 0.06137 0.1924 Metetra 0.644 0.786 0.95 setrgbcolor 0.06137 0.1924 0.10851 0.19583 0.10684 0.15759 0.05862 0.15432 Metetra 0.646 0.79 0.951 setrgbcolor 0.05862 0.15432 0.10684 0.15759 0.10507 0.11787 0.05572 0.11473 Metetra 0.48 0.813 0.999 setrgbcolor 0.1403 0.53941 0.1735 0.54096 0.17242 0.53024 0.1386 0.52857 Metetra 0.48 0.812 1 setrgbcolor 0.1386 0.52857 0.17242 0.53024 0.1713 0.51908 0.13685 0.51727 Metetra 0.481 0.811 1 setrgbcolor 0.13685 0.51727 0.1713 0.51908 0.17014 0.50743 0.13504 0.50544 Metetra 0.482 0.81 1 setrgbcolor 0.13504 0.50544 0.17014 0.50743 0.16894 0.49522 0.13317 0.49301 Metetra 0.485 0.808 1 setrgbcolor 0.13317 0.49301 0.16894 0.49522 0.16771 0.48235 0.13124 0.47987 Metetra 0.489 0.806 1 setrgbcolor 0.13124 0.47987 0.16771 0.48235 0.16646 0.46869 0.12927 0.46589 Metetra 0.495 0.803 1 setrgbcolor 0.12927 0.46589 0.16646 0.46869 0.16518 0.45408 0.12726 0.45089 Metetra 0.502 0.8 0.999 setrgbcolor 0.12726 0.45089 0.16518 0.45408 0.1639 0.43834 0.12523 0.43469 Metetra 0.511 0.796 0.997 setrgbcolor 0.12523 0.43469 0.1639 0.43834 0.16263 0.4212 0.12318 0.41704 Metetra 0.522 0.79 0.994 setrgbcolor 0.12318 0.41704 0.16263 0.4212 0.16139 0.40238 0.12114 0.39769 Metetra 0.535 0.784 0.99 setrgbcolor 0.12114 0.39769 0.16139 0.40238 0.16021 0.38155 0.11914 0.37634 Metetra 0.548 0.778 0.984 setrgbcolor 0.11914 0.37634 0.16021 0.38155 0.1591 0.35835 0.11719 0.35272 Metetra 0.563 0.772 0.976 setrgbcolor 0.11719 0.35272 0.1591 0.35835 0.15811 0.33244 0.11531 0.32658 Metetra 0.579 0.768 0.969 setrgbcolor 0.11531 0.32658 0.15811 0.33244 0.15724 0.30359 0.11351 0.29777 Metetra 0.595 0.766 0.961 setrgbcolor 0.11351 0.29777 0.15724 0.30359 0.1565 0.27171 0.1118 0.26627 Metetra 0.612 0.768 0.954 setrgbcolor 0.1118 0.26627 0.1565 0.27171 0.15588 0.23695 0.11015 0.23219 Metetra 0.628 0.773 0.95 setrgbcolor 0.11015 0.23219 0.15588 0.23695 0.15532 0.19969 0.10851 0.19583 Metetra 0.641 0.781 0.948 setrgbcolor 0.10851 0.19583 0.15532 0.19969 0.15478 0.16049 0.10684 0.15759 Metetra 0.652 0.791 0.949 setrgbcolor 0.10684 0.15759 0.15478 0.16049 0.15419 0.11993 0.10507 0.11787 Metetra 0.478 0.813 0.999 setrgbcolor 0.1735 0.54096 0.20656 0.54251 0.20608 0.53193 0.17242 0.53024 Metetra 0.477 0.811 0.999 setrgbcolor 0.17242 0.53024 0.20608 0.53193 0.20558 0.52097 0.1713 0.51908 Metetra 0.476 0.809 0.999 setrgbcolor 0.1713 0.51908 0.20558 0.52097 0.20507 0.50957 0.17014 0.50743 Metetra 0.475 0.807 1 setrgbcolor 0.17014 0.50743 0.20507 0.50957 0.20454 0.49767 0.16894 0.49522 Metetra 0.476 0.804 1 setrgbcolor 0.16894 0.49522 0.20454 0.49767 0.20399 0.48518 0.16771 0.48235 Metetra 0.477 0.8 1 setrgbcolor 0.16771 0.48235 0.20399 0.48518 0.20344 0.47201 0.16646 0.46869 Metetra 0.479 0.796 0.999 setrgbcolor 0.16646 0.46869 0.20344 0.47201 0.20289 0.45801 0.16518 0.45408 Metetra 0.482 0.79 0.999 setrgbcolor 0.16518 0.45408 0.20289 0.45801 0.20234 0.44298 0.1639 0.43834 Metetra 0.487 0.782 0.997 setrgbcolor 0.1639 0.43834 0.20234 0.44298 0.20183 0.42668 0.16263 0.4212 Metetra 0.494 0.773 0.994 setrgbcolor 0.16263 0.4212 0.20183 0.42668 0.20136 0.40876 0.16139 0.40238 Metetra 0.503 0.764 0.989 setrgbcolor 0.16139 0.40238 0.20136 0.40876 0.20096 0.38883 0.16021 0.38155 Metetra 0.514 0.754 0.983 setrgbcolor 0.16021 0.38155 0.20096 0.38883 0.20067 0.36639 0.1591 0.35835 Metetra 0.529 0.745 0.974 setrgbcolor 0.1591 0.35835 0.20067 0.36639 0.20054 0.34093 0.15811 0.33244 Metetra 0.547 0.739 0.965 setrgbcolor 0.15811 0.33244 0.20054 0.34093 0.20058 0.31199 0.15724 0.30359 Metetra 0.569 0.738 0.956 setrgbcolor 0.15724 0.30359 0.20058 0.31199 0.20083 0.27937 0.1565 0.27171 Metetra 0.593 0.744 0.949 setrgbcolor 0.1565 0.27171 0.20083 0.27937 0.20126 0.24319 0.15588 0.23695 Metetra 0.619 0.756 0.944 setrgbcolor 0.15588 0.23695 0.20126 0.24319 0.20182 0.20405 0.15532 0.19969 Metetra 0.643 0.773 0.942 setrgbcolor 0.15532 0.19969 0.20182 0.20405 0.20245 0.16283 0.15478 0.16049 Metetra 0.664 0.792 0.943 setrgbcolor 0.15478 0.16049 0.20245 0.16283 0.20305 0.12053 0.15419 0.11993 Metetra 0.475 0.813 0.999 setrgbcolor 0.20656 0.54251 0.23947 0.544 0.23959 0.5336 0.20608 0.53193 Metetra 0.473 0.811 0.999 setrgbcolor 0.20608 0.53193 0.23959 0.5336 0.23971 0.52287 0.20558 0.52097 Metetra 0.47 0.808 0.999 setrgbcolor 0.20558 0.52097 0.23971 0.52287 0.23984 0.51176 0.20507 0.50957 Metetra 0.467 0.805 0.999 setrgbcolor 0.20507 0.50957 0.23984 0.51176 0.23997 0.50024 0.20454 0.49767 Metetra 0.465 0.801 0.999 setrgbcolor 0.20454 0.49767 0.23997 0.50024 0.2401 0.48826 0.20399 0.48518 Metetra 0.462 0.796 0.999 setrgbcolor 0.20399 0.48518 0.2401 0.48826 0.24025 0.47572 0.20344 0.47201 Metetra 0.46 0.789 0.999 setrgbcolor 0.20344 0.47201 0.24025 0.47572 0.24041 0.46252 0.20289 0.45801 Metetra 0.458 0.78 0.998 setrgbcolor 0.20289 0.45801 0.24041 0.46252 0.24059 0.44849 0.20234 0.44298 Metetra 0.458 0.769 0.997 setrgbcolor 0.20234 0.44298 0.24059 0.44849 0.24081 0.4334 0.20183 0.42668 Metetra 0.459 0.756 0.994 setrgbcolor 0.20183 0.42668 0.24081 0.4334 0.24109 0.41687 0.20136 0.40876 Metetra 0.463 0.741 0.988 setrgbcolor 0.20136 0.40876 0.24109 0.41687 0.24146 0.39842 0.20096 0.38883 Metetra 0.471 0.725 0.98 setrgbcolor 0.20096 0.38883 0.24146 0.39842 0.24197 0.37736 0.20067 0.36639 Metetra 0.485 0.71 0.969 setrgbcolor 0.20067 0.36639 0.24197 0.37736 0.24266 0.35284 0.20054 0.34093 Metetra 0.505 0.7 0.957 setrgbcolor 0.20054 0.34093 0.24266 0.35284 0.24359 0.324 0.20058 0.31199 Metetra 0.533 0.699 0.945 setrgbcolor 0.20058 0.31199 0.24359 0.324 0.24481 0.29025 0.20083 0.27937 Metetra 0.569 0.708 0.936 setrgbcolor 0.20083 0.27937 0.24481 0.29025 0.24631 0.25161 0.20126 0.24319 Metetra 0.609 0.73 0.931 setrgbcolor 0.20126 0.24319 0.24631 0.25161 0.24802 0.20904 0.20182 0.20405 Metetra 0.649 0.76 0.93 setrgbcolor 0.20182 0.20405 0.24802 0.20904 0.24985 0.16419 0.20245 0.16283 Metetra 0.683 0.792 0.932 setrgbcolor 0.20245 0.16283 0.24985 0.16419 0.25167 0.11885 0.20305 0.12053 Metetra 0.473 0.814 0.999 setrgbcolor 0.23947 0.544 0.27224 0.5454 0.27296 0.53519 0.23959 0.5336 Metetra 0.469 0.811 0.999 setrgbcolor 0.23959 0.5336 0.27296 0.53519 0.2737 0.52469 0.23971 0.52287 Metetra 0.464 0.808 0.999 setrgbcolor 0.23971 0.52287 0.2737 0.52469 0.27446 0.51391 0.23984 0.51176 Metetra 0.459 0.804 0.998 setrgbcolor 0.23984 0.51176 0.27446 0.51391 0.27525 0.50282 0.23997 0.50024 Metetra 0.453 0.799 0.998 setrgbcolor 0.23997 0.50024 0.27525 0.50282 0.27606 0.49139 0.2401 0.48826 Metetra 0.446 0.792 0.998 setrgbcolor 0.2401 0.48826 0.27606 0.49139 0.2769 0.4796 0.24025 0.47572 Metetra 0.438 0.783 0.998 setrgbcolor 0.24025 0.47572 0.2769 0.4796 0.27778 0.46738 0.24041 0.46252 Metetra 0.43 0.772 0.997 setrgbcolor 0.24041 0.46252 0.27778 0.46738 0.27869 0.45462 0.24059 0.44849 Metetra 0.423 0.757 0.995 setrgbcolor 0.24059 0.44849 0.27869 0.45462 0.27964 0.44114 0.24081 0.4334 Metetra 0.416 0.738 0.992 setrgbcolor 0.24081 0.4334 0.27964 0.44114 0.28067 0.42662 0.24109 0.41687 Metetra 0.412 0.715 0.986 setrgbcolor 0.24109 0.41687 0.28067 0.42662 0.28179 0.41051 0.24146 0.39842 Metetra 0.414 0.69 0.976 setrgbcolor 0.24146 0.39842 0.28179 0.41051 0.28305 0.3919 0.24197 0.37736 Metetra 0.424 0.664 0.961 setrgbcolor 0.24197 0.37736 0.28305 0.3919 0.28453 0.36947 0.24266 0.35284 Metetra 0.445 0.644 0.942 setrgbcolor 0.24266 0.35284 0.28453 0.36947 0.28631 0.34151 0.24359 0.324 Metetra 0.481 0.638 0.924 setrgbcolor 0.24359 0.324 0.28631 0.34151 0.28847 0.3064 0.24481 0.29025 Metetra 0.531 0.652 0.912 setrgbcolor 0.24481 0.29025 0.28847 0.3064 0.29105 0.26369 0.24631 0.25161 Metetra 0.594 0.688 0.907 setrgbcolor 0.24631 0.25161 0.29105 0.26369 0.29395 0.21494 0.24802 0.20904 Metetra 0.659 0.739 0.909 setrgbcolor 0.24802 0.20904 0.29395 0.21494 0.29699 0.16358 0.24985 0.16419 Metetra 0.714 0.794 0.914 setrgbcolor 0.24985 0.16419 0.29699 0.16358 0.3 0.11319 0.25167 0.11885 Metetra 0.549 0.847 0.998 setrgbcolor 0.68415 0.54422 0.71465 0.54348 0.72308 0.53185 0.69209 0.53275 Metetra 0.553 0.85 0.998 setrgbcolor 0.69209 0.53275 0.72308 0.53185 0.7318 0.51972 0.7003 0.52081 Metetra 0.558 0.852 0.998 setrgbcolor 0.7003 0.52081 0.7318 0.51972 0.74082 0.50704 0.7088 0.50833 Metetra 0.563 0.855 0.997 setrgbcolor 0.7088 0.50833 0.74082 0.50704 0.75015 0.49373 0.7176 0.49526 Metetra 0.57 0.858 0.996 setrgbcolor 0.7176 0.49526 0.75015 0.49373 0.75981 0.47974 0.72671 0.48151 Metetra 0.578 0.862 0.996 setrgbcolor 0.72671 0.48151 0.75981 0.47974 0.7698 0.46497 0.73614 0.46699 Metetra 0.587 0.864 0.995 setrgbcolor 0.73614 0.46699 0.7698 0.46497 0.78015 0.44933 0.74591 0.45158 Metetra 0.598 0.867 0.993 setrgbcolor 0.74591 0.45158 0.78015 0.44933 0.79085 0.43269 0.75601 0.43514 Metetra 0.61 0.868 0.991 setrgbcolor 0.75601 0.43514 0.79085 0.43269 0.80192 0.41493 0.76646 0.41752 Metetra 0.622 0.868 0.989 setrgbcolor 0.76646 0.41752 0.80192 0.41493 0.81337 0.3959 0.77727 0.39851 Metetra 0.633 0.866 0.986 setrgbcolor 0.77727 0.39851 0.81337 0.3959 0.82521 0.37548 0.78842 0.37794 Metetra 0.644 0.861 0.982 setrgbcolor 0.78842 0.37794 0.82521 0.37548 0.83744 0.35355 0.79993 0.3556 Metetra 0.651 0.853 0.977 setrgbcolor 0.79993 0.3556 0.83744 0.35355 0.85009 0.33001 0.8118 0.33136 Metetra 0.655 0.842 0.972 setrgbcolor 0.8118 0.33136 0.85009 0.33001 0.86317 0.30484 0.82404 0.30516 Metetra 0.653 0.828 0.967 setrgbcolor 0.82404 0.30516 0.86317 0.30484 0.87672 0.27808 0.83668 0.27705 Metetra 0.646 0.812 0.963 setrgbcolor 0.83668 0.27705 0.87672 0.27808 0.8908 0.24985 0.84978 0.24721 Metetra 0.633 0.795 0.96 setrgbcolor 0.84978 0.24721 0.8908 0.24985 0.90546 0.22034 0.8634 0.21597 Metetra 0.616 0.779 0.959 setrgbcolor 0.8634 0.21597 0.90546 0.22034 0.9208 0.18974 0.87765 0.18369 Metetra 0.596 0.765 0.96 setrgbcolor 0.87765 0.18369 0.9208 0.18974 0.93689 0.15825 0.89262 0.15072 Metetra 0.544 0.848 0.998 setrgbcolor 0.65349 0.54503 0.68415 0.54422 0.69209 0.53275 0.66093 0.53377 Metetra 0.548 0.851 0.998 setrgbcolor 0.66093 0.53377 0.69209 0.53275 0.7003 0.52081 0.66862 0.52205 Metetra 0.552 0.855 0.998 setrgbcolor 0.66862 0.52205 0.7003 0.52081 0.7088 0.50833 0.6766 0.50983 Metetra 0.558 0.858 0.997 setrgbcolor 0.6766 0.50983 0.7088 0.50833 0.7176 0.49526 0.68485 0.49705 Metetra 0.565 0.862 0.996 setrgbcolor 0.68485 0.49705 0.7176 0.49526 0.72671 0.48151 0.69341 0.48363 Metetra 0.574 0.866 0.995 setrgbcolor 0.69341 0.48363 0.72671 0.48151 0.73614 0.46699 0.70228 0.46948 Metetra 0.584 0.871 0.994 setrgbcolor 0.70228 0.46948 0.73614 0.46699 0.74591 0.45158 0.71146 0.45445 Metetra 0.597 0.875 0.993 setrgbcolor 0.71146 0.45445 0.74591 0.45158 0.75601 0.43514 0.72097 0.43839 Metetra 0.611 0.878 0.991 setrgbcolor 0.72097 0.43839 0.75601 0.43514 0.76646 0.41752 0.73081 0.42109 Metetra 0.627 0.88 0.988 setrgbcolor 0.73081 0.42109 0.76646 0.41752 0.77727 0.39851 0.74097 0.40231 Metetra 0.644 0.879 0.984 setrgbcolor 0.74097 0.40231 0.77727 0.39851 0.78842 0.37794 0.75146 0.38175 Metetra 0.66 0.875 0.979 setrgbcolor 0.75146 0.38175 0.78842 0.37794 0.79993 0.3556 0.76225 0.35912 Metetra 0.672 0.866 0.973 setrgbcolor 0.76225 0.35912 0.79993 0.3556 0.8118 0.33136 0.77335 0.33416 Metetra 0.679 0.852 0.966 setrgbcolor 0.77335 0.33416 0.8118 0.33136 0.82404 0.30516 0.78474 0.30672 Metetra 0.678 0.834 0.958 setrgbcolor 0.78474 0.30672 0.82404 0.30516 0.83668 0.27705 0.79646 0.27683 Metetra 0.669 0.812 0.952 setrgbcolor 0.79646 0.27683 0.83668 0.27705 0.84978 0.24721 0.80854 0.2448 Metetra 0.651 0.79 0.948 setrgbcolor 0.80854 0.2448 0.84978 0.24721 0.8634 0.21597 0.82108 0.21116 Metetra 0.628 0.768 0.947 setrgbcolor 0.82108 0.21116 0.8634 0.21597 0.87765 0.18369 0.83419 0.17657 Metetra 0.6 0.749 0.949 setrgbcolor 0.83419 0.17657 0.87765 0.18369 0.89262 0.15072 0.848 0.14163 Metetra 0.538 0.849 0.998 setrgbcolor 0.62265 0.5459 0.65349 0.54503 0.66093 0.53377 0.62958 0.53485 Metetra 0.541 0.852 0.998 setrgbcolor 0.62958 0.53485 0.66093 0.53377 0.66862 0.52205 0.63676 0.5234 Metetra 0.545 0.856 0.997 setrgbcolor 0.63676 0.5234 0.66862 0.52205 0.6766 0.50983 0.6442 0.5115 Metetra 0.55 0.86 0.997 setrgbcolor 0.6442 0.5115 0.6766 0.50983 0.68485 0.49705 0.65191 0.49909 Metetra 0.557 0.865 0.996 setrgbcolor 0.65191 0.49909 0.68485 0.49705 0.69341 0.48363 0.6599 0.4861 Metetra 0.566 0.871 0.995 setrgbcolor 0.6599 0.4861 0.69341 0.48363 0.70228 0.46948 0.66819 0.47244 Metetra 0.577 0.877 0.994 setrgbcolor 0.66819 0.47244 0.70228 0.46948 0.71146 0.45445 0.67679 0.45797 Metetra 0.591 0.883 0.992 setrgbcolor 0.67679 0.45797 0.71146 0.45445 0.72097 0.43839 0.6857 0.44251 Metetra 0.609 0.889 0.99 setrgbcolor 0.6857 0.44251 0.72097 0.43839 0.73081 0.42109 0.69493 0.42583 Metetra 0.63 0.894 0.987 setrgbcolor 0.69493 0.42583 0.73081 0.42109 0.74097 0.40231 0.70447 0.40758 Metetra 0.653 0.896 0.982 setrgbcolor 0.70447 0.40758 0.74097 0.40231 0.75146 0.38175 0.7143 0.38738 Metetra 0.677 0.894 0.976 setrgbcolor 0.7143 0.38738 0.75146 0.38175 0.76225 0.35912 0.7244 0.36473 Metetra 0.697 0.884 0.967 setrgbcolor 0.7244 0.36473 0.76225 0.35912 0.77335 0.33416 0.73475 0.33915 Metetra 0.71 0.867 0.956 setrgbcolor 0.73475 0.33915 0.77335 0.33416 0.78474 0.30672 0.74531 0.31026 Metetra 0.711 0.842 0.945 setrgbcolor 0.74531 0.31026 0.78474 0.30672 0.79646 0.27683 0.75608 0.27802 Metetra 0.7 0.812 0.935 setrgbcolor 0.75608 0.27802 0.79646 0.27683 0.80854 0.2448 0.76711 0.24285 Metetra 0.675 0.781 0.929 setrgbcolor 0.76711 0.24285 0.80854 0.2448 0.82108 0.21116 0.7785 0.20569 Metetra 0.641 0.751 0.928 setrgbcolor 0.7785 0.20569 0.82108 0.21116 0.83419 0.17657 0.7904 0.16775 Metetra 0.601 0.726 0.932 setrgbcolor 0.7904 0.16775 0.83419 0.17657 0.848 0.14163 0.80301 0.13015 Metetra 0.53 0.848 0.998 setrgbcolor 0.59165 0.54676 0.62265 0.5459 0.62958 0.53485 0.59806 0.53596 Metetra 0.533 0.852 0.998 setrgbcolor 0.59806 0.53596 0.62958 0.53485 0.63676 0.5234 0.6047 0.5248 Metetra 0.536 0.856 0.997 setrgbcolor 0.6047 0.5248 0.63676 0.5234 0.6442 0.5115 0.61159 0.51326 Metetra 0.54 0.861 0.996 setrgbcolor 0.61159 0.51326 0.6442 0.5115 0.65191 0.49909 0.61874 0.50128 Metetra 0.546 0.866 0.995 setrgbcolor 0.61874 0.50128 0.65191 0.49909 0.6599 0.4861 0.62617 0.48882 Metetra 0.553 0.873 0.994 setrgbcolor 0.62617 0.48882 0.6599 0.4861 0.66819 0.47244 0.63387 0.47579 Metetra 0.564 0.881 0.992 setrgbcolor 0.63387 0.47579 0.66819 0.47244 0.67679 0.45797 0.64187 0.46208 Metetra 0.579 0.889 0.99 setrgbcolor 0.64187 0.46208 0.67679 0.45797 0.6857 0.44251 0.65018 0.44752 Metetra 0.598 0.899 0.987 setrgbcolor 0.65018 0.44752 0.6857 0.44251 0.69493 0.42583 0.6588 0.43183 Metetra 0.624 0.908 0.983 setrgbcolor 0.6588 0.43183 0.69493 0.42583 0.70447 0.40758 0.66772 0.41463 Metetra 0.655 0.916 0.978 setrgbcolor 0.66772 0.41463 0.70447 0.40758 0.7143 0.38738 0.67692 0.39538 Metetra 0.691 0.918 0.971 setrgbcolor 0.67692 0.39538 0.7143 0.38738 0.7244 0.36473 0.68637 0.37331 Metetra 0.724 0.911 0.959 setrgbcolor 0.68637 0.37331 0.7244 0.36473 0.73475 0.33915 0.69601 0.34752 Metetra 0.748 0.889 0.943 setrgbcolor 0.69601 0.34752 0.73475 0.33915 0.74531 0.31026 0.70576 0.31716 Metetra 0.755 0.855 0.924 setrgbcolor 0.70576 0.31716 0.74531 0.31026 0.75608 0.27802 0.71558 0.28178 Metetra 0.741 0.812 0.908 setrgbcolor 0.71558 0.28178 0.75608 0.27802 0.76711 0.24285 0.72549 0.24188 Metetra 0.707 0.767 0.899 setrgbcolor 0.72549 0.24188 0.76711 0.24285 0.7785 0.20569 0.73563 0.19918 Metetra 0.657 0.725 0.9 setrgbcolor 0.73563 0.19918 0.7785 0.20569 0.7904 0.16775 0.74625 0.15609 Metetra 0.597 0.69 0.908 setrgbcolor 0.74625 0.15609 0.7904 0.16775 0.80301 0.13015 0.75759 0.11479 Metetra 0.522 0.847 0.998 setrgbcolor 0.56046 0.54759 0.59165 0.54676 0.59806 0.53596 0.56635 0.53704 Metetra 0.523 0.851 0.997 setrgbcolor 0.56635 0.53704 0.59806 0.53596 0.6047 0.5248 0.57245 0.52618 Metetra 0.524 0.855 0.996 setrgbcolor 0.57245 0.52618 0.6047 0.5248 0.61159 0.51326 0.57878 0.51502 Metetra 0.527 0.86 0.995 setrgbcolor 0.57878 0.51502 0.61159 0.51326 0.61874 0.50128 0.58535 0.50352 Metetra 0.53 0.865 0.993 setrgbcolor 0.58535 0.50352 0.61874 0.50128 0.62617 0.48882 0.59218 0.49166 Metetra 0.535 0.873 0.991 setrgbcolor 0.59218 0.49166 0.62617 0.48882 0.63387 0.47579 0.59929 0.4794 Metetra 0.543 0.881 0.988 setrgbcolor 0.59929 0.4794 0.63387 0.47579 0.64187 0.46208 0.60668 0.46665 Metetra 0.556 0.892 0.984 setrgbcolor 0.60668 0.46665 0.64187 0.46208 0.65018 0.44752 0.61437 0.45328 Metetra 0.574 0.904 0.98 setrgbcolor 0.61437 0.45328 0.65018 0.44752 0.6588 0.43183 0.62237 0.43907 Metetra 0.601 0.919 0.974 setrgbcolor 0.62237 0.43907 0.6588 0.43183 0.66772 0.41463 0.63067 0.42363 Metetra 0.64 0.934 0.967 setrgbcolor 0.63067 0.42363 0.66772 0.41463 0.67692 0.39538 0.63927 0.40629 Metetra 0.691 0.946 0.959 setrgbcolor 0.63927 0.40629 0.67692 0.39538 0.68637 0.37331 0.64811 0.38601 Metetra 0.748 0.947 0.945 setrgbcolor 0.64811 0.38601 0.68637 0.37331 0.69601 0.34752 0.65711 0.36122 Metetra 0.794 0.924 0.923 setrgbcolor 0.65711 0.36122 0.69601 0.34752 0.70576 0.31716 0.66613 0.32994 Metetra 0.812 0.875 0.893 setrgbcolor 0.66613 0.32994 0.70576 0.31716 0.71558 0.28178 0.67502 0.29055 Metetra 0.795 0.811 0.865 setrgbcolor 0.67502 0.29055 0.71558 0.28178 0.72549 0.24188 0.68374 0.24314 Metetra 0.746 0.745 0.851 setrgbcolor 0.68374 0.24314 0.72549 0.24188 0.73563 0.19918 0.69248 0.1909 Metetra 0.671 0.685 0.855 setrgbcolor 0.69248 0.1909 0.73563 0.19918 0.74625 0.15609 0.70165 0.13922 Metetra 0.578 0.635 0.871 setrgbcolor 0.70165 0.13922 0.74625 0.15609 0.75759 0.11479 0.71168 0.09269 Metetra 0.513 0.845 0.997 setrgbcolor 0.5291 0.5483 0.56046 0.54759 0.56635 0.53704 0.53445 0.53799 Metetra 0.512 0.848 0.997 setrgbcolor 0.53445 0.53799 0.56635 0.53704 0.57245 0.52618 0.53999 0.52744 Metetra 0.511 0.852 0.995 setrgbcolor 0.53999 0.52744 0.57245 0.52618 0.57878 0.51502 0.54575 0.51666 Metetra 0.511 0.856 0.994 setrgbcolor 0.54575 0.51666 0.57878 0.51502 0.58535 0.50352 0.55173 0.50566 Metetra 0.511 0.862 0.991 setrgbcolor 0.55173 0.50566 0.58535 0.50352 0.59218 0.49166 0.55795 0.49444 Metetra 0.511 0.868 0.987 setrgbcolor 0.55795 0.49444 0.59218 0.49166 0.59929 0.4794 0.56443 0.48301 Metetra 0.514 0.876 0.982 setrgbcolor 0.56443 0.48301 0.59929 0.4794 0.60668 0.46665 0.57118 0.47136 Metetra 0.519 0.886 0.975 setrgbcolor 0.57118 0.47136 0.60668 0.46665 0.61437 0.45328 0.57822 0.45947 Metetra 0.529 0.899 0.965 setrgbcolor 0.57822 0.45947 0.61437 0.45328 0.62237 0.43907 0.58558 0.44723 Metetra 0.549 0.915 0.952 setrgbcolor 0.58558 0.44723 0.62237 0.43907 0.63067 0.42363 0.59325 0.43438 Metetra 0.585 0.936 0.937 setrgbcolor 0.59325 0.43438 0.63067 0.42363 0.63927 0.40629 0.60125 0.42037 Metetra 0.645 0.961 0.922 setrgbcolor 0.60125 0.42037 0.63927 0.40629 0.64811 0.38601 0.60953 0.40402 Metetra 0.735 0.983 0.908 setrgbcolor 0.60953 0.40402 0.64811 0.38601 0.65711 0.36122 0.618 0.38304 Metetra 0.831 0.975 0.885 setrgbcolor 0.618 0.38304 0.65711 0.36122 0.66613 0.32994 0.62644 0.35346 Metetra 0.881 0.91 0.843 setrgbcolor 0.62644 0.35346 0.66613 0.32994 0.67502 0.29055 0.63452 0.31008 Metetra 0.861 0.809 0.797 setrgbcolor 0.63452 0.31008 0.67502 0.29055 0.68374 0.24314 0.64198 0.25011 Metetra 0.792 0.712 0.775 setrgbcolor 0.64198 0.25011 0.68374 0.24314 0.69248 0.1909 0.64901 0.17931 Metetra 0.682 0.626 0.787 setrgbcolor 0.64901 0.17931 0.69248 0.1909 0.70165 0.13922 0.65646 0.11166 Metetra 0.429 0.545 0.872 setrgbcolor 0.65646 0.11166 0.70165 0.13922 0.71168 0.09269 0.66624 0.07349 Metetra 0.503 0.842 0.997 setrgbcolor 0.49756 0.54885 0.5291 0.5483 0.53445 0.53799 0.50236 0.53876 Metetra 0.501 0.844 0.996 setrgbcolor 0.50236 0.53876 0.53445 0.53799 0.53999 0.52744 0.50733 0.52848 Metetra 0.497 0.847 0.994 setrgbcolor 0.50733 0.52848 0.53999 0.52744 0.54575 0.51666 0.51249 0.51805 Metetra 0.493 0.851 0.992 setrgbcolor 0.51249 0.51805 0.54575 0.51666 0.55173 0.50566 0.51786 0.5075 Metetra 0.489 0.855 0.988 setrgbcolor 0.51786 0.5075 0.55173 0.50566 0.55795 0.49444 0.52345 0.49689 Metetra 0.483 0.859 0.983 setrgbcolor 0.52345 0.49689 0.55795 0.49444 0.56443 0.48301 0.52928 0.48628 Metetra 0.476 0.864 0.975 setrgbcolor 0.52928 0.48628 0.56443 0.48301 0.57118 0.47136 0.53536 0.47576 Metetra 0.469 0.87 0.962 setrgbcolor 0.53536 0.47576 0.57118 0.47136 0.57822 0.45947 0.54171 0.46546 Metetra 0.461 0.876 0.941 setrgbcolor 0.54171 0.46546 0.57822 0.45947 0.58558 0.44723 0.54837 0.45549 Metetra 0.454 0.881 0.909 setrgbcolor 0.54837 0.45549 0.58558 0.44723 0.59325 0.43438 0.55536 0.44595 Metetra 0.455 0.886 0.862 setrgbcolor 0.55536 0.44595 0.59325 0.43438 0.60125 0.42037 0.56271 0.43679 Metetra 0.479 0.894 0.802 setrgbcolor 0.56271 0.43679 0.60125 0.42037 0.60953 0.40402 0.57043 0.42747 Metetra 0.561 0.922 0.75 setrgbcolor 0.57043 0.42747 0.60953 0.40402 0.618 0.38304 0.57847 0.41596 Metetra 0.742 0.98 0.742 setrgbcolor 0.57847 0.41596 0.618 0.38304 0.62644 0.35346 0.58663 0.39638 Metetra 0.934 0.966 0.746 setrgbcolor 0.58663 0.39638 0.62644 0.35346 0.63452 0.31008 0.59429 0.35516 Metetra 0.936 0.812 0.698 setrgbcolor 0.59429 0.35516 0.63452 0.31008 0.64198 0.25011 0.60049 0.27455 Metetra 0.839 0.669 0.671 setrgbcolor 0.60049 0.27455 0.64198 0.25011 0.64901 0.17931 0.60518 0.16049 Metetra 0.625 0.592 0.796 setrgbcolor 0.60518 0.16049 0.64901 0.17931 0.65646 0.11166 0.61242 0.09758 Metetra 0.448 0.681 0.964 setrgbcolor 0.61242 0.09758 0.65646 0.11166 0.66624 0.07349 0.62188 0.06997 Metetra 0.494 0.838 0.997 setrgbcolor 0.46585 0.54919 0.49756 0.54885 0.50236 0.53876 0.47008 0.53926 Metetra 0.489 0.84 0.996 setrgbcolor 0.47008 0.53926 0.50236 0.53876 0.50733 0.52848 0.47447 0.5292 Metetra 0.484 0.841 0.994 setrgbcolor 0.47447 0.5292 0.50733 0.52848 0.51249 0.51805 0.47903 0.51904 Metetra 0.476 0.843 0.991 setrgbcolor 0.47903 0.51904 0.51249 0.51805 0.51786 0.5075 0.48377 0.50886 Metetra 0.467 0.845 0.986 setrgbcolor 0.48377 0.50886 0.51786 0.5075 0.52345 0.49689 0.4887 0.49874 Metetra 0.454 0.846 0.979 setrgbcolor 0.4887 0.49874 0.52345 0.49689 0.52928 0.48628 0.49384 0.48881 Metetra 0.436 0.846 0.968 setrgbcolor 0.49384 0.48881 0.52928 0.48628 0.53536 0.47576 0.49921 0.47926 Metetra 0.412 0.844 0.948 setrgbcolor 0.49921 0.47926 0.53536 0.47576 0.54171 0.46546 0.50483 0.47037 Metetra 0.377 0.835 0.913 setrgbcolor 0.50483 0.47037 0.54171 0.46546 0.54837 0.45549 0.51072 0.46254 Metetra 0.326 0.812 0.85 setrgbcolor 0.51072 0.46254 0.54837 0.45549 0.55536 0.44595 0.51694 0.45637 Metetra 0.254 0.761 0.74 setrgbcolor 0.51694 0.45637 0.55536 0.44595 0.56271 0.43679 0.52351 0.45274 Metetra 0.52351 0.45274 0.56271 0.43679 0.57043 0.42747 0.53053 0.45295 Metetra 0.53053 0.45295 0.57043 0.42747 0.57847 0.41596 0.53807 0.45841 Metetra 0.53807 0.45841 0.57847 0.41596 0.58663 0.39638 0.54619 0.46838 Metetra 0.54619 0.46838 0.58663 0.39638 0.59429 0.35516 0.55418 0.45621 Metetra 0.997 0.86 0.553 setrgbcolor 0.55418 0.45621 0.59429 0.35516 0.60049 0.27455 0.56025 0.36926 Metetra 0.882 0.634 0.559 setrgbcolor 0.56025 0.36926 0.60049 0.27455 0.60518 0.16049 0.56089 0.12353 Metetra 0.246 0.429 0.845 setrgbcolor 0.56089 0.12353 0.60518 0.16049 0.61242 0.09758 0.56882 0.0942 Metetra 0.567 0.808 0.99 setrgbcolor 0.56882 0.0942 0.61242 0.09758 0.62188 0.06997 0.57724 0.06642 Metetra 0.486 0.834 0.997 setrgbcolor 0.43397 0.54925 0.46585 0.54919 0.47008 0.53926 0.43763 0.53944 Metetra 0.48 0.834 0.995 setrgbcolor 0.43763 0.53944 0.47008 0.53926 0.47447 0.5292 0.44142 0.52951 Metetra 0.472 0.835 0.993 setrgbcolor 0.44142 0.52951 0.47447 0.5292 0.47903 0.51904 0.44536 0.51953 Metetra 0.461 0.835 0.99 setrgbcolor 0.44536 0.51953 0.47903 0.51904 0.48377 0.50886 0.44945 0.50957 Metetra 0.447 0.834 0.985 setrgbcolor 0.44945 0.50957 0.48377 0.50886 0.4887 0.49874 0.45371 0.49976 Metetra 0.428 0.831 0.978 setrgbcolor 0.45371 0.49976 0.4887 0.49874 0.49384 0.48881 0.45814 0.49025 Metetra 0.401 0.826 0.964 setrgbcolor 0.45814 0.49025 0.49384 0.48881 0.49921 0.47926 0.46277 0.4813 Metetra 0.362 0.814 0.941 setrgbcolor 0.46277 0.4813 0.49921 0.47926 0.50483 0.47037 0.4676 0.4733 Metetra 0.302 0.789 0.897 setrgbcolor 0.4676 0.4733 0.50483 0.47037 0.51072 0.46254 0.47266 0.46685 Metetra 0.21 0.736 0.812 setrgbcolor 0.47266 0.46685 0.51072 0.46254 0.51694 0.45637 0.47799 0.46295 Metetra 0.47799 0.46295 0.51694 0.45637 0.52351 0.45274 0.48363 0.46332 Metetra 0.116 0 0 setrgbcolor 0.48363 0.46332 0.52351 0.45274 0.53053 0.45295 0.48965 0.47122 Metetra 0.244 0 0 setrgbcolor 0.48965 0.47122 0.53053 0.45295 0.53807 0.45841 0.49618 0.48991 Metetra 0.72 0.979 0.767 setrgbcolor 0.49618 0.48991 0.53807 0.45841 0.54619 0.46838 0.50264 0.47231 Metetra 0.541 0.88 0.988 setrgbcolor 0.50264 0.47231 0.54619 0.46838 0.55418 0.45621 0.50942 0.45386 Metetra 0.471 0.815 0.998 setrgbcolor 0.50942 0.45386 0.55418 0.45621 0.56025 0.36926 0.51654 0.43447 Metetra 0.819 0.567 0.558 setrgbcolor 0.51654 0.43447 0.56025 0.36926 0.56089 0.12353 0.51794 0.11744 Metetra 0.533 0.775 0.987 setrgbcolor 0.51794 0.11744 0.56089 0.12353 0.56882 0.0942 0.52496 0.0908 Metetra 0.567 0.808 0.99 setrgbcolor 0.52496 0.0908 0.56882 0.0942 0.57724 0.06642 0.53233 0.06285 Metetra 0.479 0.829 0.997 setrgbcolor 0.40192 0.54903 0.43397 0.54925 0.43763 0.53944 0.405 0.53925 Metetra 0.472 0.829 0.996 setrgbcolor 0.405 0.53925 0.43763 0.53944 0.44142 0.52951 0.40819 0.52937 Metetra 0.462 0.828 0.994 setrgbcolor 0.40819 0.52937 0.44142 0.52951 0.44536 0.51953 0.4115 0.51944 Metetra 0.45 0.826 0.991 setrgbcolor 0.4115 0.51944 0.44536 0.51953 0.44945 0.50957 0.41494 0.50954 Metetra 0.433 0.823 0.986 setrgbcolor 0.41494 0.50954 0.44945 0.50957 0.45371 0.49976 0.41851 0.49979 Metetra 0.411 0.817 0.979 setrgbcolor 0.41851 0.49979 0.45371 0.49976 0.45814 0.49025 0.42221 0.49035 Metetra 0.378 0.807 0.967 setrgbcolor 0.42221 0.49035 0.45814 0.49025 0.46277 0.4813 0.42607 0.4815 Metetra 0.332 0.789 0.945 setrgbcolor 0.42607 0.4815 0.46277 0.4813 0.4676 0.4733 0.43009 0.47362 Metetra 0.261 0.756 0.905 setrgbcolor 0.43009 0.47362 0.4676 0.4733 0.47266 0.46685 0.43428 0.46732 Metetra 0.152 0.691 0.829 setrgbcolor 0.43428 0.46732 0.47266 0.46685 0.47799 0.46295 0.43866 0.46361 Metetra 0.012 0 0 setrgbcolor 0.43866 0.46361 0.47799 0.46295 0.48363 0.46332 0.44326 0.4642 Metetra 0.231 0 0 setrgbcolor 0.44326 0.4642 0.48363 0.46332 0.48965 0.47122 0.44809 0.47224 Metetra 0.366 0 0 setrgbcolor 0.44809 0.47224 0.48965 0.47122 0.49618 0.48991 0.45321 0.48775 Metetra 0.471 0.815 0.998 setrgbcolor 0.45321 0.48775 0.49618 0.48991 0.50264 0.47231 0.45866 0.47005 Metetra 0.471 0.815 0.998 setrgbcolor 0.45866 0.47005 0.50264 0.47231 0.50942 0.45386 0.46438 0.45149 Metetra 0.471 0.815 0.998 setrgbcolor 0.46438 0.45149 0.50942 0.45386 0.51654 0.43447 0.47039 0.43198 Metetra 0.747 0.539 0.613 setrgbcolor 0.47039 0.43198 0.51654 0.43447 0.51794 0.11744 0.47562 0.23864 Metetra 0.978 0.765 0.547 setrgbcolor 0.47562 0.23864 0.51794 0.11744 0.52496 0.0908 0.48084 0.08738 Metetra 0.567 0.808 0.99 setrgbcolor 0.48084 0.08738 0.52496 0.0908 0.53233 0.06285 0.48713 0.05926 Metetra 0.474 0.825 0.997 setrgbcolor 0.36972 0.54851 0.40192 0.54903 0.405 0.53925 0.37221 0.5387 Metetra 0.467 0.823 0.996 setrgbcolor 0.37221 0.5387 0.405 0.53925 0.40819 0.52937 0.3748 0.52877 Metetra 0.457 0.821 0.994 setrgbcolor 0.3748 0.52877 0.40819 0.52937 0.4115 0.51944 0.37747 0.51876 Metetra 0.444 0.818 0.992 setrgbcolor 0.37747 0.51876 0.4115 0.51944 0.41494 0.50954 0.38024 0.50874 Metetra 0.426 0.813 0.988 setrgbcolor 0.38024 0.50874 0.41494 0.50954 0.41851 0.49979 0.38312 0.49881 Metetra 0.403 0.806 0.983 setrgbcolor 0.38312 0.49881 0.41851 0.49979 0.42221 0.49035 0.3861 0.4891 Metetra 0.371 0.793 0.974 setrgbcolor 0.3861 0.4891 0.42221 0.49035 0.42607 0.4815 0.38919 0.47982 Metetra 0.326 0.773 0.959 setrgbcolor 0.38919 0.47982 0.42607 0.4815 0.43009 0.47362 0.39239 0.47127 Metetra 0.261 0.74 0.933 setrgbcolor 0.39239 0.47127 0.43009 0.47362 0.43428 0.46732 0.39572 0.46387 Metetra 0.165 0.683 0.888 setrgbcolor 0.39572 0.46387 0.43428 0.46732 0.43866 0.46361 0.39917 0.45826 Metetra 0.028 0.587 0.809 setrgbcolor 0.39917 0.45826 0.43866 0.46361 0.44326 0.4642 0.40274 0.45536 Metetra 0.157 0 0 setrgbcolor 0.40274 0.45536 0.44326 0.4642 0.44809 0.47224 0.40645 0.45637 Metetra 0.369 0 0 setrgbcolor 0.40645 0.45637 0.44809 0.47224 0.45321 0.48775 0.41031 0.46244 Metetra 0.424 0 0 setrgbcolor 0.41031 0.46244 0.45321 0.48775 0.45866 0.47005 0.41442 0.46778 Metetra 0.471 0.815 0.998 setrgbcolor 0.41442 0.46778 0.45866 0.47005 0.46438 0.45149 0.41906 0.4491 Metetra 0.704 0.745 0.884 setrgbcolor 0.41906 0.4491 0.46438 0.45149 0.47039 0.43198 0.42421 0.4015 Metetra 0.677 0.498 0.636 setrgbcolor 0.42421 0.4015 0.47039 0.43198 0.47562 0.23864 0.43041 0.24358 Metetra 0.769 0.577 0.638 setrgbcolor 0.43041 0.24358 0.47562 0.23864 0.48084 0.08738 0.4364 0.09151 Metetra 0.71 0.856 0.952 setrgbcolor 0.4364 0.09151 0.48084 0.08738 0.48713 0.05926 0.44166 0.05565 Metetra 0.472 0.821 0.998 setrgbcolor 0.33737 0.54771 0.36972 0.54851 0.37221 0.5387 0.33928 0.53781 Metetra 0.464 0.819 0.997 setrgbcolor 0.33928 0.53781 0.37221 0.5387 0.3748 0.52877 0.34125 0.52774 Metetra 0.454 0.816 0.995 setrgbcolor 0.34125 0.52774 0.3748 0.52877 0.37747 0.51876 0.34328 0.51754 Metetra 0.442 0.812 0.994 setrgbcolor 0.34328 0.51754 0.37747 0.51876 0.38024 0.50874 0.34539 0.50725 Metetra 0.426 0.806 0.991 setrgbcolor 0.34539 0.50725 0.38024 0.50874 0.38312 0.49881 0.34757 0.49693 Metetra 0.406 0.797 0.988 setrgbcolor 0.34757 0.49693 0.38312 0.49881 0.3861 0.4891 0.34983 0.48666 Metetra 0.378 0.785 0.983 setrgbcolor 0.34983 0.48666 0.3861 0.4891 0.38919 0.47982 0.35216 0.47656 Metetra 0.341 0.765 0.975 setrgbcolor 0.35216 0.47656 0.38919 0.47982 0.39239 0.47127 0.35457 0.46676 Metetra 0.292 0.736 0.962 setrgbcolor 0.35457 0.46676 0.39239 0.47127 0.39572 0.46387 0.35707 0.45744 Metetra 0.225 0.693 0.944 setrgbcolor 0.35707 0.45744 0.39572 0.46387 0.39917 0.45826 0.35965 0.44877 Metetra 0.141 0.628 0.917 setrgbcolor 0.35965 0.44877 0.39917 0.45826 0.40274 0.45536 0.36233 0.4408 Metetra 0.043 0.536 0.882 setrgbcolor 0.36233 0.4408 0.40274 0.45536 0.40645 0.45637 0.36512 0.43315 Metetra 0 0.418 0.843 setrgbcolor 0.36512 0.43315 0.40645 0.45637 0.41031 0.46244 0.36808 0.42417 Metetra 0 0.292 0.79 setrgbcolor 0.36808 0.42417 0.41031 0.46244 0.41442 0.46778 0.37134 0.40914 Metetra 0.06 0.233 0.728 setrgbcolor 0.37134 0.40914 0.41442 0.46778 0.41906 0.4491 0.37515 0.37791 Metetra 0.264 0.284 0.694 setrgbcolor 0.37515 0.37791 0.41906 0.4491 0.42421 0.4015 0.37977 0.31813 Metetra 0.346 0.293 0.655 setrgbcolor 0.37977 0.31813 0.42421 0.4015 0.43041 0.24358 0.38507 0.23167 Metetra 0.703 0.597 0.735 setrgbcolor 0.38507 0.23167 0.43041 0.24358 0.4364 0.09151 0.39047 0.14221 Metetra 0.957 0.866 0.708 setrgbcolor 0.39047 0.14221 0.4364 0.09151 0.44166 0.05565 0.39552 0.0711 Metetra 0.471 0.818 0.998 setrgbcolor 0.30488 0.54665 0.33737 0.54771 0.33928 0.53781 0.30619 0.53661 Metetra 0.464 0.815 0.997 setrgbcolor 0.30619 0.53661 0.33928 0.53781 0.34125 0.52774 0.30755 0.52635 Metetra 0.456 0.812 0.997 setrgbcolor 0.30755 0.52635 0.34125 0.52774 0.34328 0.51754 0.30895 0.51588 Metetra 0.445 0.808 0.996 setrgbcolor 0.30895 0.51588 0.34328 0.51754 0.34539 0.50725 0.31039 0.50522 Metetra 0.432 0.801 0.994 setrgbcolor 0.31039 0.50522 0.34539 0.50725 0.34757 0.49693 0.31188 0.49437 Metetra 0.416 0.793 0.993 setrgbcolor 0.31188 0.49437 0.34757 0.49693 0.34983 0.48666 0.31343 0.48337 Metetra 0.395 0.78 0.99 setrgbcolor 0.31343 0.48337 0.34983 0.48666 0.35216 0.47656 0.31502 0.47222 Metetra 0.368 0.763 0.987 setrgbcolor 0.31502 0.47222 0.35216 0.47656 0.35457 0.46676 0.31667 0.46093 Metetra 0.336 0.739 0.982 setrgbcolor 0.31667 0.46093 0.35457 0.46676 0.35707 0.45744 0.31838 0.44945 Metetra 0.297 0.706 0.975 setrgbcolor 0.31838 0.44945 0.35707 0.45744 0.35965 0.44877 0.32016 0.4376 Metetra 0.255 0.66 0.965 setrgbcolor 0.32016 0.4376 0.35965 0.44877 0.36233 0.4408 0.32204 0.42497 Metetra 0.216 0.599 0.949 setrgbcolor 0.32204 0.42497 0.36233 0.4408 0.36512 0.43315 0.32405 0.41061 Metetra 0.194 0.526 0.92 setrgbcolor 0.32405 0.41061 0.36512 0.43315 0.36808 0.42417 0.32627 0.39266 Metetra 0.205 0.45 0.872 setrgbcolor 0.32627 0.39266 0.36808 0.42417 0.37134 0.40914 0.32882 0.36793 Metetra 0.255 0.399 0.816 setrgbcolor 0.32882 0.36793 0.37134 0.40914 0.37515 0.37791 0.33187 0.33223 Metetra 0.346 0.405 0.78 setrgbcolor 0.33187 0.33223 0.37515 0.37791 0.37977 0.31813 0.33551 0.28281 Metetra 0.492 0.493 0.786 setrgbcolor 0.33551 0.28281 0.37977 0.31813 0.38507 0.23167 0.33961 0.22222 Metetra 0.686 0.658 0.817 setrgbcolor 0.33961 0.22222 0.38507 0.23167 0.39047 0.14221 0.34388 0.15855 Metetra 0.842 0.821 0.828 setrgbcolor 0.34388 0.15855 0.39047 0.14221 0.39552 0.0711 0.34802 0.09994 Metetra 0.471 0.815 0.998 setrgbcolor 0.27224 0.5454 0.30488 0.54665 0.30619 0.53661 0.27296 0.53519 Metetra 0.466 0.813 0.998 setrgbcolor 0.27296 0.53519 0.30619 0.53661 0.30755 0.52635 0.2737 0.52469 Metetra 0.459 0.81 0.998 setrgbcolor 0.2737 0.52469 0.30755 0.52635 0.30895 0.51588 0.27446 0.51391 Metetra 0.451 0.805 0.997 setrgbcolor 0.27446 0.51391 0.30895 0.51588 0.31039 0.50522 0.27525 0.50282 Metetra 0.441 0.799 0.997 setrgbcolor 0.27525 0.50282 0.31039 0.50522 0.31188 0.49437 0.27606 0.49139 Metetra 0.43 0.791 0.996 setrgbcolor 0.27606 0.49139 0.31188 0.49437 0.31343 0.48337 0.2769 0.4796 Metetra 0.416 0.78 0.995 setrgbcolor 0.2769 0.4796 0.31343 0.48337 0.31502 0.47222 0.27778 0.46738 Metetra 0.4 0.766 0.993 setrgbcolor 0.27778 0.46738 0.31502 0.47222 0.31667 0.46093 0.27869 0.45462 Metetra 0.381 0.746 0.991 setrgbcolor 0.27869 0.45462 0.31667 0.46093 0.31838 0.44945 0.27964 0.44114 Metetra 0.362 0.721 0.988 setrgbcolor 0.27964 0.44114 0.31838 0.44945 0.32016 0.4376 0.28067 0.42662 Metetra 0.345 0.688 0.981 setrgbcolor 0.28067 0.42662 0.32016 0.4376 0.32204 0.42497 0.28179 0.41051 Metetra 0.333 0.648 0.968 setrgbcolor 0.28179 0.41051 0.32204 0.42497 0.32405 0.41061 0.28305 0.3919 Metetra 0.334 0.603 0.946 setrgbcolor 0.28305 0.3919 0.32405 0.41061 0.32627 0.39266 0.28453 0.36947 Metetra 0.353 0.564 0.916 setrgbcolor 0.28453 0.36947 0.32627 0.39266 0.32882 0.36793 0.28631 0.34151 Metetra 0.395 0.543 0.885 setrgbcolor 0.28631 0.34151 0.32882 0.36793 0.33187 0.33223 0.28847 0.3064 Metetra 0.465 0.558 0.866 setrgbcolor 0.28847 0.3064 0.33187 0.33223 0.33551 0.28281 0.29105 0.26369 Metetra 0.562 0.616 0.864 setrgbcolor 0.29105 0.26369 0.33551 0.28281 0.33961 0.22222 0.29395 0.21494 Metetra 0.672 0.707 0.874 setrgbcolor 0.29395 0.21494 0.33961 0.22222 0.34388 0.15855 0.29699 0.16358 Metetra 0.763 0.8 0.883 setrgbcolor 0.29699 0.16358 0.34388 0.15855 0.34802 0.09994 0.3 0.11319 Metetra grestore gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.92685 0.0942 lineto stroke 0.92685 0.0942 moveto 0.97409 0.39537 lineto stroke 0.97409 0.39537 moveto 0.02591 0.33991 lineto stroke 0.02591 0.33991 moveto 0.06748 0.02591 lineto stroke grestore gsave gsave 0.002 setlinewidth 0.72431 0.67232 moveto 0.97409 0.39537 lineto stroke grestore gsave 0.002 setlinewidth 0.72431 0.67232 moveto 0.71784 0.67207 lineto stroke grestore [(-10000)] 0.73726 0.67281 -1 -0.0382775 Mshowa gsave 0.002 setlinewidth 0.75996 0.63279 moveto 0.75349 0.63252 lineto stroke grestore [(-8000)] 0.77291 0.63332 -1 -0.0411194 Mshowa gsave 0.002 setlinewidth 0.80111 0.58716 moveto 0.79464 0.58688 lineto stroke grestore [(-6000)] 0.81405 0.58774 -1 -0.044417 Mshowa gsave 0.002 setlinewidth 0.84914 0.53392 moveto 0.84267 0.5336 lineto stroke grestore [(-4000)] 0.86208 0.53454 -1 -0.0482897 Mshowa gsave 0.002 setlinewidth 0.90592 0.47096 moveto 0.89945 0.47062 lineto stroke grestore [(-2000)] 0.91885 0.47164 -1 -0.0529023 Mshowa gsave 0.002 setlinewidth 0.97409 0.39537 moveto 0.96762 0.39499 lineto stroke grestore [(0)] 0.98702 0.39613 -1 -0.058489 Mshowa gsave 0.001 setlinewidth 0.73106 0.66484 moveto 0.72717 0.66469 lineto stroke grestore gsave 0.001 setlinewidth 0.73799 0.65716 moveto 0.7341 0.657 lineto stroke grestore gsave 0.001 setlinewidth 0.74511 0.64926 moveto 0.74122 0.6491 lineto stroke grestore gsave 0.001 setlinewidth 0.75243 0.64114 moveto 0.74855 0.64098 lineto stroke grestore gsave 0.001 setlinewidth 0.76771 0.62419 moveto 0.76383 0.62403 lineto stroke grestore gsave 0.001 setlinewidth 0.77569 0.61535 moveto 0.77181 0.61518 lineto stroke grestore gsave 0.001 setlinewidth 0.78391 0.60623 moveto 0.78003 0.60607 lineto stroke grestore gsave 0.001 setlinewidth 0.79238 0.59684 moveto 0.7885 0.59667 lineto stroke grestore gsave 0.001 setlinewidth 0.81011 0.57718 moveto 0.80623 0.57701 lineto stroke grestore gsave 0.001 setlinewidth 0.8194 0.56688 moveto 0.81552 0.5667 lineto stroke grestore gsave 0.001 setlinewidth 0.82899 0.55625 moveto 0.82511 0.55607 lineto stroke grestore gsave 0.001 setlinewidth 0.8389 0.54527 moveto 0.83502 0.54508 lineto stroke grestore gsave 0.001 setlinewidth 0.85972 0.52218 moveto 0.85584 0.52199 lineto stroke grestore gsave 0.001 setlinewidth 0.87067 0.51004 moveto 0.86679 0.50985 lineto stroke grestore gsave 0.001 setlinewidth 0.88201 0.49747 moveto 0.87812 0.49727 lineto stroke grestore gsave 0.001 setlinewidth 0.89375 0.48445 moveto 0.88987 0.48425 lineto stroke grestore gsave 0.001 setlinewidth 0.91854 0.45697 moveto 0.91466 0.45676 lineto stroke grestore gsave 0.001 setlinewidth 0.93164 0.44244 moveto 0.92776 0.44223 lineto stroke grestore gsave 0.001 setlinewidth 0.94524 0.42736 moveto 0.94136 0.42714 lineto stroke grestore gsave 0.001 setlinewidth 0.95938 0.41168 moveto 0.9555 0.41146 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.92685 0.0942 lineto stroke grestore gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.06663 0.03233 lineto stroke grestore [(0)] 0.06918 0.01307 -0.132388 1 Mshowa gsave 0.002 setlinewidth 0.25497 0.04081 moveto 0.25453 0.04727 lineto stroke grestore [(2500)] 0.25585 0.02788 -0.0681378 1 Mshowa gsave 0.002 setlinewidth 0.43786 0.05534 moveto 0.43782 0.06182 lineto stroke grestore [(5000)] 0.43794 0.04239 -0.00608828 1 Mshowa gsave 0.002 setlinewidth 0.61631 0.06953 moveto 0.61666 0.07599 lineto stroke grestore [(7500)] 0.61562 0.05659 0.0538721 1 Mshowa gsave 0.002 setlinewidth 0.79049 0.08337 moveto 0.79121 0.0898 lineto stroke grestore [(10000)] 0.78905 0.07049 0.111847 1 Mshowa gsave 0.001 setlinewidth 0.10536 0.02892 moveto 0.10489 0.03278 lineto stroke grestore gsave 0.001 setlinewidth 0.14304 0.03191 moveto 0.14263 0.03578 lineto stroke grestore gsave 0.001 setlinewidth 0.18054 0.03489 moveto 0.18018 0.03876 lineto stroke grestore gsave 0.001 setlinewidth 0.21785 0.03786 moveto 0.21753 0.04173 lineto stroke grestore gsave 0.001 setlinewidth 0.29191 0.04375 moveto 0.2917 0.04763 lineto stroke grestore gsave 0.001 setlinewidth 0.32867 0.04667 moveto 0.3285 0.05055 lineto stroke grestore gsave 0.001 setlinewidth 0.36525 0.04957 moveto 0.36513 0.05346 lineto stroke grestore gsave 0.001 setlinewidth 0.40164 0.05247 moveto 0.40157 0.05635 lineto stroke grestore gsave 0.001 setlinewidth 0.4739 0.05821 moveto 0.47392 0.06209 lineto stroke grestore gsave 0.001 setlinewidth 0.50976 0.06106 moveto 0.50984 0.06494 lineto stroke grestore gsave 0.001 setlinewidth 0.54545 0.06389 moveto 0.54557 0.06778 lineto stroke grestore gsave 0.001 setlinewidth 0.58097 0.06672 moveto 0.58113 0.0706 lineto stroke grestore gsave 0.001 setlinewidth 0.65148 0.07232 moveto 0.65174 0.0762 lineto stroke grestore gsave 0.001 setlinewidth 0.68649 0.0751 moveto 0.68679 0.07898 lineto stroke grestore gsave 0.001 setlinewidth 0.72132 0.07787 moveto 0.72166 0.08174 lineto stroke grestore gsave 0.001 setlinewidth 0.75599 0.08063 moveto 0.75637 0.08449 lineto stroke grestore gsave 0.001 setlinewidth 0.82482 0.0861 moveto 0.8253 0.08995 lineto stroke grestore gsave 0.001 setlinewidth 0.85899 0.08881 moveto 0.85951 0.09266 lineto stroke grestore gsave 0.001 setlinewidth 0.893 0.09151 moveto 0.89356 0.09536 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0.06748 0.02591 moveto 0.02591 0.33991 lineto stroke grestore gsave 0.002 setlinewidth 0.06688 0.03047 moveto 0.07333 0.03098 lineto stroke grestore [(-8)] 0.05396 0.02945 1 0.0791647 Mshowa gsave 0.002 setlinewidth 0.05368 0.13015 moveto 0.06014 0.13062 lineto stroke grestore [(-6)] 0.04076 0.12922 1 0.0724919 Mshowa gsave 0.002 setlinewidth 0.03956 0.23684 moveto 0.04602 0.23726 lineto stroke grestore [(-4)] 0.02663 0.236 1 0.0653635 Mshowa gsave 0.001 setlinewidth 0.06431 0.04988 moveto 0.06818 0.05018 lineto stroke grestore gsave 0.001 setlinewidth 0.0617 0.06955 moveto 0.06558 0.06984 lineto stroke grestore gsave 0.001 setlinewidth 0.05906 0.08948 moveto 0.06294 0.08977 lineto stroke grestore gsave 0.001 setlinewidth 0.05639 0.10968 moveto 0.06027 0.10997 lineto stroke grestore gsave 0.001 setlinewidth 0.05093 0.15091 moveto 0.05481 0.15118 lineto stroke grestore gsave 0.001 setlinewidth 0.04815 0.17195 moveto 0.05202 0.17222 lineto stroke grestore gsave 0.001 setlinewidth 0.04532 0.19328 moveto 0.0492 0.19354 lineto stroke grestore gsave 0.001 setlinewidth 0.04246 0.21491 moveto 0.04634 0.21517 lineto stroke grestore gsave 0.001 setlinewidth 0.03661 0.25908 moveto 0.04049 0.25933 lineto stroke grestore gsave 0.001 setlinewidth 0.03362 0.28164 moveto 0.0375 0.28188 lineto stroke grestore gsave 0.001 setlinewidth 0.03059 0.30453 moveto 0.03447 0.30476 lineto stroke grestore gsave 0.001 setlinewidth 0.02752 0.32774 moveto 0.0314 0.32797 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{337, 235}, ImageMargins->{{60, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.2.3 - Continous Second Order Test Code"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Continous Second Order Test Code"], Cell[TextData[ "The following function prints some interesting information about a second \ order filter function. (The filter's center frequency and quality factor \ aren't strictly needed for this analysis since they can be found from the \ filter polynomial. They are included here to make the code easier to \ write.)"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FilterCheck[filter_,f_,q_] :=\n\t\tBlock[{fd,f1,f2,g1,g2},\n\t\t\t\tf1 = \ N[Lower3DbPoint[f,q]];\n\t\t\t\tf2 = N[Upper3DbPoint[f,q]];\n\t\t\t\tfd = \ N[ContinuousNaturalResonance[f,q]];\n\t\t\t\tg = \ N[ContinuousFilterMag[filter,fd]];\n\t\t\t\tg1 = \ N[ContinuousFilterMag[filter,f1]];\n\t\t\t\tg2 = \ N[ContinuousFilterMag[filter,f2]];\n\t\t\t\tPrint[\"Gain at f1=\",f1,\" is \ \",g1];\n\t\t\t\tPrint[\" or \",dB[g1/g],\"dB\"];\n\t\t\t\tPrint[\"Gain at \ fd=\",fd,\" is \",g];\n\t\t\t\tPrint[\"Gain at f2=\",f2,\" is \",g2];\n\t\t\t\ \tPrint[\" or \",dB[g2/g],\"dB\"];\n\t\t\t\t]\t\t\t"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "FilterCheck[MakeContinuousResonance[1000,10],1000,10]"], "Input", AspectRatioFixed->False], Cell[TextData[ "Gain at f1=947.497 is 0.71646\n or -2.89616dB\nGain at fd=997.497 is 1.\n\ Gain at f2=1047.5 is 0.698751\n or -3.11355dB"], "Print", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "Note that the calculation of the 3dB points is only approximate. As the q \ gets larger the approximation is better."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "FilterCheck[MakeContinuousResonance[1000,100],1000,100]"], "Input", AspectRatioFixed->False], Cell[TextData[ "Gain at f1=994.975 is 0.707996\n or -2.99939dB\nGain at fd=999.975 is 1.\n\ Gain at f2=1004.97 is 0.706228\n or -3.0211dB"], "Print", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox[ "I\[CloseCurlyQuote]ve written the following function to look for the 3dB \ points. I couldn\[CloseCurlyQuote]t figure out any way to make ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" solve the equation for me.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FilterSearch[f_,v_,l_,h_] := Block[{vl,vm,vh,m},\n\t\t\tm = (l + h) / 2;\n\t\ \t\tIf [Abs[m-l] < m/1000000,\n\t\t\t\tReturn[N[m]]];\n\t\t\tvl = \ N[ContinuousFilterMag[f,l]];\n\t\t\tvm = N[ContinuousFilterMag[f,(l+h)/2]];\n\ \t\t\tvh = N[ContinuousFilterMag[f,h]];\n\t\t\tIf [ Between[vl,v,vm], \n\t\t\t\ \tFilterSearch[f,v,l,m],\n\t\t\t\tIf [ Between [vm, v, vh],\n\t\t\t\t\t\ FilterSearch[f,v,m,h],\n\t\t\t\t\tPrint[\"Error vl=\",vl,\" vm=\",vm,\" \ vh=\",vh]\n\t\t\t\t\t]\n\t\t\t\t]\n\t\t\t]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterSearch"], Cell[TextData[ "Between[l_,m_,h_] := (m >= l && m < h) || \n\t\t\t\t\t(m < l && m >= h)"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"Between"], Cell[TextData[ "Get a simple resonator with center frequency 1000 and a q of 2."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["aFilter = MakeContinuousResonance[1000,2]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (4.934802200544679308*10^6 + 1.846433910593630021*10^7*I)/ (3.947841760435743446*10^7 + 3141.592653589793238*s + s^2)\ \>", "\<\ 6 7 4.9348 10 + 1.84643 10 I ---------------------------- 7 2 3.94784 10 + 3141.59 s + s\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "First look for the upper 3dB point. Note that it is few percent lower in \ frequency than the equations predict."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["FilterSearch[aFilter,N[Sqrt[2]/2],1000,1200]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 1165.814971923828125\ \>", "\<\ 1165.81\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Upper3DbPoint[1000,2]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 1185.414346693485347\ \>", "\<\ 1185.41\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData["Likewise the lower 3dB point is also off by a bit."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["FilterSearch[aFilter,N[Sqrt[2]/2],500,1000]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 625.2017021179199219\ \>", "\<\ 625.202\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Lower3DbPoint[1000,2]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 685.4143466934853465\ \>", "\<\ 685.414\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox[ "The following two equations verify that the two 3dB frequencies really do \ solve the defining equations (See Hayt and Kemmerly, ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Engineering Circuit Analysis", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[".)", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "Simplify[q(Upper3DbPoint[f,q]/f-f/Upper3DbPoint[f,q])]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (-(f/(f*(1 - 1/(2*q^2))^(1/2) + f/(2*q))) + (f*(1 - 1/(2*q^2))^(1/2) + f/(2*q))/f)*q\ \>", "\<\ 2 (-(f/(f Sqrt[1 - 1/(2 q )] + f/(2 q))) + 2 (f Sqrt[1 - 1/(2 q )] + f/(2 q))/f) q\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "Simplify[q(Lower3DbPoint[f,q]/f-f/Lower3DbPoint[f,q])]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (-(f/(f*(1 - 1/(2*q^2))^(1/2) - f/(2*q))) + (f*(1 - 1/(2*q^2))^(1/2) - f/(2*q))/f)*q\ \>", "\<\ 2 (-(f/(f Sqrt[1 - 1/(2 q )] - f/(2 q))) + 2 (f Sqrt[1 - 1/(2 q )] - f/(2 q))/f) q\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "Note that if we subtract the two 3dB frequencies we get the bandwidth of the \ filter (in cycles per second) as a function of the center frequency and q."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["Simplify[Upper3DbPoint[f,q] - Lower3DbPoint[f,q]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ f/q\ \>", "\<\ f/q\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.2.4 - Usage"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox["The following definitions are needed so that ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " can respond to user\[CloseCurlyQuote]s requests for more information \ about the functions defined here. This means that the Apple-I (for a function \ template) and ?Function features will now work with this notebook.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FilterEval::usage = \"FilterEval[filter, w] returns the\nresponse of a \ filter at real frequency w.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterMag::usage = \"FilterMag[filter, w] returns the \nmagnitude of the \ response of a filter at real frequency w.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterPhase::usage = \"FilterPhase[filter, w] returns the\nphase of the \ response of a filter at real frequency w.\"; "], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "dB::usage = \"dB[x] converts a voltage (or current) into\ndecibels.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterDb::usage = \"FilterDb[filter, w] returns the \nmagnitude of the \ response of a filter in dB at a \nfrequency w.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "AdjustGain::usage = \"AdjustGain[filter,w] adjust the \ngain of a filter so \ that it has unity gain at the frequency\nw.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "SecondOrderRoot::usage = \"SecondOrderRoot[w, q] gives the\nlocation on the \ s-plane of a pole or zero that has a center\nfrequency of w and a quality \ factor of q. The other root\nof the second order section is given by the \ complex \nconjugate of this root.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "Omega1::usage = \"Omega1[w, q] gives the frequency of the \nlower 3dB point \ of a second order section with center \nfrequency of w and a quality factor \ of q.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "Omega2::usage = \"Omega2[w, q] gives the frequency of the \nupper 3dB point \ of a second order section with center \nfrequency of w and a quality factor \ of q.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "NaturalResonance::usage = \"NaturalResonance[w, q] gives \nthe frequency of \ the peak (or valley) of the response of a\nsecond order filter with frequency \ w and quality factor q.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "ContinuousFreqResponse::usage = \"ContinuousFreqResponse[\nfilter,maxf] \ shows the frequency response of a continuous\nfilter from DC to the maximum \ frequency specified.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "MakeResonance::usage = \"MakeResonance[w,q] designs a \nsecond order filter \ with a peak at frequency w and a \nquality factor of q.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "MakeAntiResonance::usage = \"MakeAntiResonance[w,q] designs\na second order \ filter with a notch at frequency w and a \nquality factor of q.\";"], "Input",\ InitializationCell->True, AspectRatioFixed->False] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.3 - Continuous Filter Design"], "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Continuous Filter Design"], Cell[TextData[ "Section 1.3.1 will introduce higher-order filters and define a data \ structure that is used throughout this notebook to describing an arbitrary \ polynomial filter. The simplest filter, the Butterworth, is described in \ Section 1.3.2 and a higher performance alternative, the Chebychev, is \ described in Section 1.3.3. These polynomials are transformed into lowpass \ filters in Section 1.3.4. Section 1.3.5 shows how to transform these \ polynomials into highpass, bandpass, and band-reject filters. Finally, \ Section 1.3.6 shows a number of examples and test cases."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "Higher order filters have a sharper response and are designed using \ different techniques. The second order filters designed above have a gain \ that varies with the square of the frequency. In other words the gain changes \ by at most 6 dB per octive. Faster gain changes are possible by combining \ multiple second order sections and this section of the report describes how \ to place the poles and zeros to get arbitrarily sharp cutoffs."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ " 1.3.1 - Introduction to Continuous Filter Design"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Introduction to Continuous Filter Design"], Cell[TextData[ "Four types of filters we will be studied in this section. The simplest \ filter is a low pass filter. We study several types of low pass filters, all \ normalized so that frequencies below 1 radians/second (rps) are passed \ relatively unchanged and frequencies above 1 rps are attenuated. We then \ study four transformations that are used to transform the normalized low pass \ filter into four other types of filters. They are the unnormalized low pass, \ high pass, band reject and band pass filters. For these filters each of the \ poles and zeros of the normalized low pass are transformed into new poles and \ zeros that lead to the desired response."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox["These filters could be designed with ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " using either rational polynomials or lists of poles and zeros. Rational \ polynomials would certainly be nicer since all intermediate results look like \ filters. Unfortunately we sometimes need to talk about individual poles and \ zeros (for example when doing partial fractions expansions) and this is \ difficult if the filter is described as a polynomial. If a filter is \ described by its poles, zeros and gain and we can always regenerate the \ polynomial.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox[ "A list of polynomial roots are turned into a polynomial in s using this ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" expression.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "PolynomialFromRoots[roots_] :=\n\tIf[Length[roots] == 0,\n\t\t1,\n\t\t\ First[Apply[Times,Map[{s-#}&,roots]]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"PolynomialFromRoots"], Cell[TextData[{ StyleBox[ "In this notebook we use a list to keep track of the zeros, poles and gain \ of a filter. Functions that transform filters will take as input a list of \ three items (gain, zeros and poles) and return a similar structure. We \ abbreviate the name of this structure to just GZP (Gain, Zeros and Poles.) \ The following function is then used to take one of these lists and transform \ it into a filter in the s-domain. Note that we have used the pattern matching \ facilities of ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" to pick out the three elements of the input list. ", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FilterFromGZP[{gain_, zeros_, poles_}] :=\n\tgain * \ PolynomialFromRoots[zeros]/\n\t\t\t\tPolynomialFromRoots[poles]//N"], "Input",\ InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterFromGZP"], Cell[TextData[ "FilterFromGZP[{zeros_, poles_}] :=\n\tFilterFromGZP[{1,zeros,poles}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterFromGZP"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.3.2 - Butterworth Filters"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Butterworth Filters"], Cell[TextData[ "The simplest type of higher order filter is known as the Butterworth. In a \ Butterworth filter design the poles are evenly spaced along a circle in the \ left half of the s-plane. (Remember that poles in the right half of the \ s-plane lead to unstable filters.) The left hand poles of the following \ equation define the Butterworth filter."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ 1/(1+s^(2n))\ \>", "\<\ 1 -------- 2 n 1 + s\ \>"], "Input", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "The following expression calculates the poles of an n\[CloseCurlyQuote]th \ order Butterworth filter. Note that the poles are evenly distributed around \ the left half of a unit circle in the s-plane."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "ButterworthPoles[n_] :=\n\tTable[N[Exp[I Pi / 2 ( 2 k + n - 1)/n]],\n\t\t\t\ {k,1,n}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ButterworthPoles"], Cell[CellGroupData[{ Cell[TextData["ButterworthPoles[4]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {-0.3826834323650897713 + 0.9238795325112867564*I, -0.923879532511286756 + 0.3826834323650897721*I, -0.923879532511286756 - 0.3826834323650897721*I, -0.3826834323650897713 - 0.9238795325112867564*I}\ \>", "\<\ {-0.382683 + 0.92388 I, -0.92388 + 0.382683 I, -0.92388 - 0.382683 I, -0.382683 - 0.92388 I}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "We use the following expression to plot the locations of a poles (or zero) \ list."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "PlotPoles[complexpolelist_]:=\n\t\ ListPlot[Map[{Re[#],Im[#]}&,complexpolelist],\n\t\t\t\ AspectRatio->Automatic];"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"PlotPoles"], Cell[TextData[ "These last two functions are demonstrated below by showing the locations of \ the poles in a 16th order Butterworth filter."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["PlotPoles[ButterworthPoles[16]];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 2 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.97619 0.956989 1 0.956989 [ [(-1)] 0.0192 1 0 2 Msboxa [(-0.8)] 0.2106 1 0 2 Msboxa [(-0.6)] 0.402 1 0 2 Msboxa [(-0.4)] 0.59339 1 0 2 Msboxa [(-0.2)] 0.78479 1 0 2 Msboxa [(-1)] 0.96369 0.04301 1 0 Msboxa [(-0.5)] 0.96369 0.52151 1 0 Msboxa [(0.5)] 0.96369 1.47849 1 0 Msboxa [(1)] 0.96369 1.95699 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 2.001 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.0192 1 moveto 0.0192 1.00625 lineto stroke grestore [(-1)] 0.0192 1 0 2 Mshowa gsave 0.002 setlinewidth 0.2106 1 moveto 0.2106 1.00625 lineto stroke grestore [(-0.8)] 0.2106 1 0 2 Mshowa gsave 0.002 setlinewidth 0.402 1 moveto 0.402 1.00625 lineto stroke grestore [(-0.6)] 0.402 1 0 2 Mshowa gsave 0.002 setlinewidth 0.59339 1 moveto 0.59339 1.00625 lineto stroke grestore [(-0.4)] 0.59339 1 0 2 Mshowa gsave 0.002 setlinewidth 0.78479 1 moveto 0.78479 1.00625 lineto stroke grestore [(-0.2)] 0.78479 1 0 2 Mshowa gsave 0.001 setlinewidth 0.05748 1 moveto 0.05748 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.09576 1 moveto 0.09576 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.13404 1 moveto 0.13404 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.17232 1 moveto 0.17232 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.24888 1 moveto 0.24888 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.28716 1 moveto 0.28716 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.32544 1 moveto 0.32544 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.36372 1 moveto 0.36372 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.44028 1 moveto 0.44028 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.47856 1 moveto 0.47856 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.51684 1 moveto 0.51684 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.55512 1 moveto 0.55512 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.63167 1 moveto 0.63167 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.66995 1 moveto 0.66995 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.70823 1 moveto 0.70823 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.74651 1 moveto 0.74651 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.82307 1 moveto 0.82307 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.86135 1 moveto 0.86135 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.89963 1 moveto 0.89963 1.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.93791 1 moveto 0.93791 1.00375 lineto stroke grestore gsave 0.002 setlinewidth 0 1 moveto 1 1 lineto stroke grestore gsave 0.002 setlinewidth 0.97619 0.04301 moveto 0.98244 0.04301 lineto stroke grestore [(-1)] 0.96369 0.04301 1 0 Mshowa gsave 0.002 setlinewidth 0.97619 0.52151 moveto 0.98244 0.52151 lineto stroke grestore [(-0.5)] 0.96369 0.52151 1 0 Mshowa gsave 0.002 setlinewidth 0.97619 1.47849 moveto 0.98244 1.47849 lineto stroke grestore [(0.5)] 0.96369 1.47849 1 0 Mshowa gsave 0.002 setlinewidth 0.97619 1.95699 moveto 0.98244 1.95699 lineto stroke grestore [(1)] 0.96369 1.95699 1 0 Mshowa gsave 0.001 setlinewidth 0.97619 0.13871 moveto 0.97994 0.13871 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.23441 moveto 0.97994 0.23441 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.33011 moveto 0.97994 0.33011 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.42581 moveto 0.97994 0.42581 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.6172 moveto 0.97994 0.6172 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.7129 moveto 0.97994 0.7129 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.8086 moveto 0.97994 0.8086 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.9043 moveto 0.97994 0.9043 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.0957 moveto 0.97994 1.0957 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.1914 moveto 0.97994 1.1914 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.2871 moveto 0.97994 1.2871 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.3828 moveto 0.97994 1.3828 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.57419 moveto 0.97994 1.57419 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.66989 moveto 0.97994 1.66989 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.76559 moveto 0.97994 1.76559 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.86129 moveto 0.97994 1.86129 lineto stroke grestore gsave 0.002 setlinewidth 0.97619 0 moveto 0.97619 2 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 2 lineto 0 2 lineto closepath clip newpath gsave 0.008 setlinewidth 0.88239 1.95238 Mdot 0.69839 1.91578 Mdot 0.52507 1.84399 Mdot 0.36908 1.73976 Mdot 0.23643 1.60711 Mdot 0.1322 1.45112 Mdot 0.06041 1.2778 Mdot 0.02381 1.0938 Mdot 0.02381 0.9062 Mdot 0.06041 0.7222 Mdot 0.1322 0.54888 Mdot 0.23643 0.39289 Mdot 0.36908 0.26024 Mdot 0.52507 0.15601 Mdot 0.69839 0.08422 Mdot 0.88239 0.04762 Mdot grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{143, 283}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The polynomial resulting from a eighth order Butterworth filter is"], "Text",\ Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["PolynomialFromRoots[ButterworthPoles[8]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ (0.1950903220161282674 - 0.9807852804032304493*I + s)* (0.1950903220161282674 + 0.9807852804032304493*I + s)* (0.5555702330196022243 - 0.8314696123025452374*I + s)* (0.5555702330196022243 + 0.8314696123025452374*I + s)* (0.8314696123025452367 - 0.5555702330196022253*I + s)* (0.8314696123025452367 + 0.5555702330196022253*I + s)* (0.980785280403230449 - 0.1950903220161282684*I + s)* (0.980785280403230449 + 0.1950903220161282684*I + s)\ \>", "\<\ (0.19509 - 0.980785 I + s) (0.19509 + 0.980785 I + s) (0.55557 - 0.83147 I + s) (0.55557 + 0.83147 I + s) (0.83147 - 0.55557 I + s) (0.83147 + 0.55557 I + s) (0.980785 - 0.19509 I + s) (0.980785 + 0.19509 I + s)\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\tContinuousAdjustGain[1/\n\t\t\ PolynomialFromRoots[ButterworthPoles[8]],0],2];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.47619 0.603319 11.7013 [ [(0.5)] 0.2619 0.60332 0 2 Msboxa [(1)] 0.5 0.60332 0 2 Msboxa [(1.5)] 0.7381 0.60332 0 2 Msboxa [(2)] 0.97619 0.60332 0 2 Msboxa [( RPS)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-0.05)] 0.01131 0.01825 1 0 Msboxa [(-0.04)] 0.01131 0.13527 1 0 Msboxa [(-0.03)] 0.01131 0.25228 1 0 Msboxa [(-0.02)] 0.01131 0.36929 1 0 Msboxa [(-0.01)] 0.01131 0.48631 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(0.5)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(1.5)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( RPS)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.01825 moveto 0.03006 0.01825 lineto stroke grestore [(-0.05)] 0.01131 0.01825 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.13527 moveto 0.03006 0.13527 lineto stroke grestore [(-0.04)] 0.01131 0.13527 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.25228 moveto 0.03006 0.25228 lineto stroke grestore [(-0.03)] 0.01131 0.25228 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36929 moveto 0.03006 0.36929 lineto stroke grestore [(-0.02)] 0.01131 0.36929 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.48631 moveto 0.03006 0.48631 lineto stroke grestore [(-0.01)] 0.01131 0.48631 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.04166 moveto 0.02756 0.04166 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06506 moveto 0.02756 0.06506 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08846 moveto 0.02756 0.08846 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.11187 moveto 0.02756 0.11187 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15867 moveto 0.02756 0.15867 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18207 moveto 0.02756 0.18207 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.20548 moveto 0.02756 0.20548 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22888 moveto 0.02756 0.22888 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27568 moveto 0.02756 0.27568 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29909 moveto 0.02756 0.29909 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32249 moveto 0.02756 0.32249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34589 moveto 0.02756 0.34589 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3927 moveto 0.02756 0.3927 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4161 moveto 0.02756 0.4161 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4395 moveto 0.02756 0.4395 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4629 moveto 0.02756 0.4629 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50971 moveto 0.02756 0.50971 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53311 moveto 0.02756 0.53311 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55651 moveto 0.02756 0.55651 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57992 moveto 0.02756 0.57992 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02857 0.60332 moveto 0.02981 0.60332 lineto 0.03104 0.60332 lineto 0.03227 0.60332 lineto 0.03351 0.60332 lineto 0.03474 0.60332 lineto 0.03597 0.60332 lineto 0.03844 0.60332 lineto 0.04091 0.60332 lineto 0.04214 0.60332 lineto 0.04338 0.60332 lineto 0.04461 0.60332 lineto 0.04585 0.60332 lineto 0.04708 0.60332 lineto 0.04831 0.60332 lineto 0.04955 0.60332 lineto 0.05078 0.60332 lineto 0.05202 0.60332 lineto 0.05325 0.60332 lineto 0.05448 0.60332 lineto 0.05572 0.60332 lineto 0.05695 0.60332 lineto 0.05818 0.60332 lineto 0.05942 0.60332 lineto 0.06065 0.60332 lineto 0.06189 0.60332 lineto 0.06312 0.60332 lineto 0.06435 0.60332 lineto 0.06559 0.60332 lineto 0.06682 0.60332 lineto 0.06806 0.60332 lineto 0.06929 0.60332 lineto 0.07052 0.60332 lineto 0.07176 0.60332 lineto 0.07299 0.60332 lineto 0.07422 0.60332 lineto 0.07546 0.60332 lineto 0.07669 0.60332 lineto 0.07793 0.60332 lineto 0.07916 0.60332 lineto 0.08039 0.60332 lineto 0.08163 0.60332 lineto 0.08286 0.60332 lineto 0.0841 0.60332 lineto 0.08533 0.60332 lineto 0.08656 0.60332 lineto 0.0878 0.60332 lineto 0.08903 0.60332 lineto 0.09027 0.60332 lineto 0.0915 0.60332 lineto Mistroke 0.09273 0.60332 lineto 0.09397 0.60332 lineto 0.0952 0.60332 lineto 0.09643 0.60332 lineto 0.09767 0.60332 lineto 0.0989 0.60332 lineto 0.10014 0.60332 lineto 0.10137 0.60332 lineto 0.1026 0.60332 lineto 0.10384 0.60332 lineto 0.10507 0.60332 lineto 0.10631 0.60332 lineto 0.10754 0.60332 lineto 0.10877 0.60332 lineto 0.11001 0.60332 lineto 0.11124 0.60332 lineto 0.11248 0.60332 lineto 0.11371 0.60332 lineto 0.11494 0.60332 lineto 0.11618 0.60332 lineto 0.11741 0.60332 lineto 0.11988 0.60332 lineto 0.12111 0.60332 lineto 0.12235 0.60332 lineto 0.12358 0.60332 lineto 0.12481 0.60332 lineto 0.12605 0.60332 lineto 0.12728 0.60332 lineto 0.12975 0.60332 lineto 0.13222 0.60332 lineto 0.13469 0.60332 lineto 0.13715 0.60332 lineto 0.13962 0.60332 lineto 0.14209 0.60332 lineto 0.14456 0.60332 lineto 0.14702 0.60332 lineto 0.14949 0.60332 lineto 0.15196 0.60332 lineto 0.15443 0.60332 lineto 0.15689 0.60332 lineto 0.15936 0.60332 lineto 0.16183 0.60332 lineto 0.1643 0.60332 lineto 0.16677 0.60332 lineto 0.16923 0.60332 lineto 0.1717 0.60332 lineto 0.17417 0.60332 lineto 0.17664 0.60332 lineto 0.1791 0.60332 lineto 0.18157 0.60332 lineto Mistroke 0.18404 0.60332 lineto 0.18651 0.60332 lineto 0.18898 0.60332 lineto 0.19144 0.60332 lineto 0.19391 0.60332 lineto 0.19638 0.60331 lineto 0.19885 0.60331 lineto 0.20131 0.60331 lineto 0.20378 0.60331 lineto 0.20625 0.60331 lineto 0.21119 0.6033 lineto 0.21365 0.6033 lineto 0.21612 0.60329 lineto 0.21859 0.60329 lineto 0.22106 0.60328 lineto 0.22352 0.60327 lineto 0.22599 0.60326 lineto 0.22846 0.60325 lineto 0.23093 0.60324 lineto 0.23586 0.6032 lineto 0.2408 0.60314 lineto 0.24573 0.60307 lineto 0.25067 0.60296 lineto 0.25561 0.60281 lineto 0.26054 0.60261 lineto 0.26548 0.60233 lineto 0.27041 0.60196 lineto 0.27535 0.60145 lineto 0.28028 0.60077 lineto 0.28522 0.59986 lineto 0.29015 0.59866 lineto 0.29509 0.59706 lineto 0.30002 0.59497 lineto 0.30496 0.59224 lineto 0.3099 0.58868 lineto 0.31483 0.58408 lineto 0.31977 0.57814 lineto 0.3247 0.57051 lineto 0.32964 0.56076 lineto 0.33457 0.54834 lineto 0.33951 0.53259 lineto 0.34444 0.51268 lineto 0.34938 0.48761 lineto 0.35432 0.45617 lineto 0.35925 0.41685 lineto 0.36419 0.36788 lineto 0.36912 0.30707 lineto 0.37406 0.23183 lineto 0.37899 0.13903 lineto 0.38393 0.02497 lineto Mistroke Mfstroke 0.38472 0 moveto 0.38393 0.02497 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Note that at the corner frequency (1 rps) this filter has a gain of 3 dB."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFilterDb[ContinuousAdjustGain[\n\t\ PolynomialFromRoots[ButterworthPoles[8]],0],\n\t1/2/Pi] //N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 3.010299956639811921\ \>", "\<\ 3.0103\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "If we want to have a different gain then we need to move the roots slightly \ to give us the desired gain at the corner frequency. This correction factor \ is included in the following function which takes as arguments the order of \ the desired filter and the gain (in dB) at 1 rps."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ButterworthLp[n_,amax_] :=\n\tBlock[{poles,gain},\n\t\tpoles = \ Sqrt[10^(amax/10)-1]^(-1/n) *\n\t\t\tButterworthPoles[n]//N;\n\t\tgain = \ ContinuousFilterGain[\n\t\t\t\t\tPolynomialFromRoots[poles],0]//N;\n\t\t\ Return[{gain, {}, poles}]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ButterworthLp"], Cell[TextData[ "An example of this shown below for an eighth order Butterworth filter with a \ gain of 1 dB at the corner frequency."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["ButterworthLp[8,1]"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ {1.965226728360271937 - 2.710505431213761085*10^-20*I, {}, {-0.2122815785088832999 + 1.067211563088522723*I, -0.604526789535973542 + 0.9047382769052052496*I, -0.9047382769052052489 + 0.604526789535973543*I, -1.067211563088522723 + 0.2122815785088833009*I, -1.067211563088522723 - 0.2122815785088833009*I, -0.9047382769052052489 - 0.604526789535973543*I, -0.604526789535973542 - 0.9047382769052052496*I, -0.2122815785088832999 - 1.067211563088522723*I}}\ \>", "\<\ -20 {1.96523 - 2.71051 10 I, {}, {-0.212282 + 1.06721 I, -0.604527 + 0.904738 I, -0.904738 + 0.604527 I, -1.06721 + 0.212282 I, -1.06721 - 0.212282 I, -0.904738 - 0.604527 I, -0.604527 - 0.904738 I, -0.212282 - 1.06721 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FilterFromGZP[ButterworthLp[8,1]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ (1.965226728360271937 - 2.710505431213761085*10^-20*I)/ ((0.2122815785088832999 - 1.067211563088522723*I + s)* (0.2122815785088832999 + 1.067211563088522723*I + s)* (0.604526789535973542 - 0.9047382769052052496*I + s)* (0.604526789535973542 + 0.9047382769052052496*I + s)* (0.9047382769052052489 - 0.604526789535973543*I + s)* (0.9047382769052052489 + 0.604526789535973543*I + s)* (1.067211563088522723 - 0.2122815785088833009*I + s)* (1.067211563088522723 + 0.2122815785088833009*I + s))\ \>", "\<\ -20 (1.96523 - 2.71051 10 I)/ ((0.212282 - 1.06721 I + s) (0.212282 + 1.06721 I + s) (0.604527 - 0.904738 I + s) (0.604527 + 0.904738 I + s) (0.904738 - 0.604527 I + s) (0.904738 + 0.604527 I + s) (1.06721 - 0.212282 I + s) (1.06721 + 0.212282 I + s) )\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\tFilterFromGZP[ButterworthLp[8,1]],2];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.47619 0.603319 18.3198 [ [(0.5)] 0.2619 0.60332 0 2 Msboxa [(1)] 0.5 0.60332 0 2 Msboxa [(1.5)] 0.7381 0.60332 0 2 Msboxa [(2)] 0.97619 0.60332 0 2 Msboxa [( RPS)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-0.03)] 0.01131 0.05373 1 0 Msboxa [(-0.025)] 0.01131 0.14532 1 0 Msboxa [(-0.02)] 0.01131 0.23692 1 0 Msboxa [(-0.015)] 0.01131 0.32852 1 0 Msboxa [(-0.01)] 0.01131 0.42012 1 0 Msboxa [(-0.005)] 0.01131 0.51172 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(0.5)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(1.5)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( RPS)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.05373 moveto 0.03006 0.05373 lineto stroke grestore [(-0.03)] 0.01131 0.05373 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.14532 moveto 0.03006 0.14532 lineto stroke grestore [(-0.025)] 0.01131 0.14532 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.23692 moveto 0.03006 0.23692 lineto stroke grestore [(-0.02)] 0.01131 0.23692 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.32852 moveto 0.03006 0.32852 lineto stroke grestore [(-0.015)] 0.01131 0.32852 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.42012 moveto 0.03006 0.42012 lineto stroke grestore [(-0.01)] 0.01131 0.42012 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.51172 moveto 0.03006 0.51172 lineto stroke grestore [(-0.005)] 0.01131 0.51172 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.07204 moveto 0.02756 0.07204 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09036 moveto 0.02756 0.09036 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10868 moveto 0.02756 0.10868 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.127 moveto 0.02756 0.127 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16364 moveto 0.02756 0.16364 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18196 moveto 0.02756 0.18196 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.20028 moveto 0.02756 0.20028 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2186 moveto 0.02756 0.2186 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25524 moveto 0.02756 0.25524 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27356 moveto 0.02756 0.27356 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29188 moveto 0.02756 0.29188 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3102 moveto 0.02756 0.3102 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34684 moveto 0.02756 0.34684 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36516 moveto 0.02756 0.36516 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38348 moveto 0.02756 0.38348 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4018 moveto 0.02756 0.4018 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43844 moveto 0.02756 0.43844 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45676 moveto 0.02756 0.45676 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47508 moveto 0.02756 0.47508 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4934 moveto 0.02756 0.4934 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53004 moveto 0.02756 0.53004 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54836 moveto 0.02756 0.54836 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56668 moveto 0.02756 0.56668 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.585 moveto 0.02756 0.585 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.03541 moveto 0.02756 0.03541 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01709 moveto 0.02756 0.01709 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02857 0.60332 moveto 0.02981 0.60332 lineto 0.03104 0.60332 lineto 0.03227 0.60332 lineto 0.03351 0.60332 lineto 0.03474 0.60332 lineto 0.03597 0.60332 lineto 0.03721 0.60332 lineto 0.03844 0.60332 lineto 0.03968 0.60332 lineto 0.04091 0.60332 lineto 0.04214 0.60332 lineto 0.04338 0.60332 lineto 0.04461 0.60332 lineto 0.04585 0.60332 lineto 0.04708 0.60332 lineto 0.04831 0.60332 lineto 0.04955 0.60332 lineto 0.05078 0.60332 lineto 0.05202 0.60332 lineto 0.05325 0.60332 lineto 0.05448 0.60332 lineto 0.05572 0.60332 lineto 0.05695 0.60332 lineto 0.05818 0.60332 lineto 0.06065 0.60332 lineto 0.06189 0.60332 lineto 0.06312 0.60332 lineto 0.06435 0.60332 lineto 0.06559 0.60332 lineto 0.06682 0.60332 lineto 0.06806 0.60332 lineto 0.06929 0.60332 lineto 0.07052 0.60332 lineto 0.07176 0.60332 lineto 0.07299 0.60332 lineto 0.07422 0.60332 lineto 0.07546 0.60332 lineto 0.07669 0.60332 lineto 0.07793 0.60332 lineto 0.07916 0.60332 lineto 0.08039 0.60332 lineto 0.08163 0.60332 lineto 0.08286 0.60332 lineto 0.0841 0.60332 lineto 0.08533 0.60332 lineto 0.08656 0.60332 lineto 0.0878 0.60332 lineto 0.08903 0.60332 lineto 0.09027 0.60332 lineto Mistroke 0.0915 0.60332 lineto 0.09273 0.60332 lineto 0.09397 0.60332 lineto 0.0952 0.60332 lineto 0.09643 0.60332 lineto 0.09767 0.60332 lineto 0.0989 0.60332 lineto 0.10014 0.60332 lineto 0.10137 0.60332 lineto 0.1026 0.60332 lineto 0.10384 0.60332 lineto 0.10507 0.60332 lineto 0.10631 0.60332 lineto 0.10754 0.60332 lineto 0.10877 0.60332 lineto 0.11001 0.60332 lineto 0.11124 0.60332 lineto 0.11248 0.60332 lineto 0.11371 0.60332 lineto 0.11494 0.60332 lineto 0.11618 0.60332 lineto 0.11741 0.60332 lineto 0.11988 0.60332 lineto 0.12111 0.60332 lineto 0.12235 0.60332 lineto 0.12358 0.60332 lineto 0.12481 0.60332 lineto 0.12605 0.60332 lineto 0.12728 0.60332 lineto 0.12975 0.60332 lineto 0.13222 0.60332 lineto 0.13469 0.60332 lineto 0.13715 0.60332 lineto 0.13962 0.60332 lineto 0.14209 0.60332 lineto 0.14456 0.60332 lineto 0.14702 0.60332 lineto 0.14949 0.60332 lineto 0.15196 0.60332 lineto 0.15443 0.60332 lineto 0.15689 0.60332 lineto 0.15936 0.60332 lineto 0.16183 0.60332 lineto 0.1643 0.60332 lineto 0.16677 0.60332 lineto 0.16923 0.60332 lineto 0.1717 0.60332 lineto 0.17417 0.60332 lineto 0.17664 0.60332 lineto 0.1791 0.60332 lineto Mistroke 0.18157 0.60332 lineto 0.18404 0.60332 lineto 0.18651 0.60332 lineto 0.18898 0.60332 lineto 0.19144 0.60332 lineto 0.19391 0.60332 lineto 0.19638 0.60332 lineto 0.19885 0.60332 lineto 0.20131 0.60332 lineto 0.20378 0.60332 lineto 0.20625 0.60331 lineto 0.21119 0.60331 lineto 0.21365 0.60331 lineto 0.21612 0.60331 lineto 0.21859 0.60331 lineto 0.22106 0.6033 lineto 0.22352 0.6033 lineto 0.22599 0.6033 lineto 0.22846 0.60329 lineto 0.23093 0.60329 lineto 0.23586 0.60327 lineto 0.2408 0.60325 lineto 0.24573 0.60322 lineto 0.25067 0.60317 lineto 0.25561 0.60311 lineto 0.26054 0.60303 lineto 0.26548 0.60292 lineto 0.27041 0.60277 lineto 0.27535 0.60256 lineto 0.28028 0.60229 lineto 0.28522 0.60192 lineto 0.29015 0.60143 lineto 0.29509 0.60078 lineto 0.30002 0.59994 lineto 0.30496 0.59883 lineto 0.3099 0.59739 lineto 0.31483 0.59552 lineto 0.31977 0.59311 lineto 0.3247 0.59002 lineto 0.32964 0.58606 lineto 0.33457 0.58102 lineto 0.33951 0.57463 lineto 0.34444 0.56655 lineto 0.34938 0.55637 lineto 0.35432 0.5436 lineto 0.35925 0.52763 lineto 0.36419 0.50771 lineto 0.36912 0.48297 lineto 0.37406 0.45232 lineto 0.37899 0.41447 lineto Mistroke 0.38393 0.36788 lineto 0.3938 0.24071 lineto 0.39874 0.15531 lineto 0.40367 0.0514 lineto Mfstroke 0.40568 0 moveto 0.40367 0.0514 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.3.3 - Chebychev Polynomials"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Chebychev Polynomials"], Cell[TextData[ "The Chebychev polynomials are an alternative to the Butterworth filters \ described above. The poles of a Butterworth low pass filter are arrayed so \ that the filter\[CloseCurlyQuote]s response is flat through most of its \ passband and as the frequency approaches the corner frequency the gain \ quickly falls off. In some cases this characteristic is an advantage because \ the gain between DC and the corner frequency is nearly flat. In addition if a \ Butterworth filter is designed that has a given tolerance in the passband \ then it will easily meet the specification at low frequencies and only at the \ corner frequency will it approach the maximum specified passband loss. "], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "It turns out that filters with a much smaller variation in gain in the \ passband can be designed using the Chebychev polynomials. Chebychev filters \ no longer have a flat response in the passband but like Butterworth filters \ the passband error can be made arbitrarily small."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox[ "The Chebychvev polynomials are described by the following recursive \ relationship. A technique that ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " calls dynamic programming is used to remember lower order Chebychev \ polynomials so that they do not need to be recalculated. (I think caching is \ a better name.)", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData["ChebychevPoly[0] := 1"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData["ChebychevPoly[1] := s"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "ChebychevPoly[n_] := ChebychevPoly[n] = \n\tSimplify[2 s ChebychevPoly[n-1] \ - ChebychevPoly[n-2]] "], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ChebychevPoly"], Cell[CellGroupData[{ Cell[TextData["ChebychevPoly[6]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ -1 + 18*s^2 - 48*s^4 + 32*s^6\ \>", "\<\ 2 4 6 -1 + 18 s - 48 s + 32 s\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "The poles of these function are given by the following expression. This \ expression is a function of the desired order (n) and the error (e) in the \ passband."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "Chebychev[n_,e_] := \n\tTable[Sin[Pi/2(1+2k)/n]Sinh[ArcSinh[1/e]/n] +\n\t\t\t\ I Cos[Pi/2(1+2k)/n]Cosh[ArcSinh[1/e]/n],\n\t\t{k,n,2n-1}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"Chebychev"], Cell[TextData[ "ChebychevPoles[n_, amax_] :=\n\tChebychev[n,Sqrt[10^(amax/10)-1]]"], "Input",\ InitializationCell->True, AspectRatioFixed->False, CellTags->"ChebychevPoles"], Cell[CellGroupData[{ Cell[TextData["ChebychevPoles[6,2]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {-0.04697321546023343601 - 0.9817051722039066734*I, -0.1283332112322376309 - 0.7186580641064136301*I, -0.1753064266924710669 - 0.2630471080974930432*I, -0.1753064266924710669 + 0.2630471080974930432*I, -0.1283332112322376309 + 0.7186580641064136301*I, -0.04697321546023343601 + 0.9817051722039066734*I}\ \>", "\<\ {-0.0469732 - 0.981705 I, -0.128333 - 0.718658 I, -0.175306 - 0.263047 I, -0.175306 + 0.263047 I, -0.128333 + 0.718658 I, -0.0469732 + 0.981705 I}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox[ "As can be seen from the pole plot below, the roots of a Chebychev \ polynomial fall on an ellipse. This plot shows the roots as the maximum \ error in the passband is varied from 10", Evaluatable->False, AspectRatioFixed->False], StyleBox["-10", Evaluatable->False, AspectRatioFixed->False, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ " (the ones that look most like a circle) and a passband error of 1 dB.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "PlotPoles[Flatten[Map[N[ChebychevPoles[16,#]]&,\n\t\t\t\t\t\t\ {10^-10,10^-4,.1,1}]]];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 2.98993 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.97619 1.06347 1.49496 1.06347 [ [(-0.8)] 0.12541 1.49496 0 2 Msboxa [(-0.6)] 0.33811 1.49496 0 2 Msboxa [(-0.4)] 0.5508 1.49496 0 2 Msboxa [(-0.2)] 0.7635 1.49496 0 2 Msboxa [(-1)] 0.96369 0.43149 1 0 Msboxa [(-0.5)] 0.96369 0.96323 1 0 Msboxa [(0.5)] 0.96369 2.0267 1 0 Msboxa [(1)] 0.96369 2.55844 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 2.99093 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.12541 1.49496 moveto 0.12541 1.50121 lineto stroke grestore [(-0.8)] 0.12541 1.49496 0 2 Mshowa gsave 0.002 setlinewidth 0.33811 1.49496 moveto 0.33811 1.50121 lineto stroke grestore [(-0.6)] 0.33811 1.49496 0 2 Mshowa gsave 0.002 setlinewidth 0.5508 1.49496 moveto 0.5508 1.50121 lineto stroke grestore [(-0.4)] 0.5508 1.49496 0 2 Mshowa gsave 0.002 setlinewidth 0.7635 1.49496 moveto 0.7635 1.50121 lineto stroke grestore [(-0.2)] 0.7635 1.49496 0 2 Mshowa gsave 0.001 setlinewidth 0.16795 1.49496 moveto 0.16795 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.21049 1.49496 moveto 0.21049 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.25303 1.49496 moveto 0.25303 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.29557 1.49496 moveto 0.29557 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.38065 1.49496 moveto 0.38065 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.42318 1.49496 moveto 0.42318 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.46572 1.49496 moveto 0.46572 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.50826 1.49496 moveto 0.50826 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.59334 1.49496 moveto 0.59334 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.63588 1.49496 moveto 0.63588 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.67842 1.49496 moveto 0.67842 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.72096 1.49496 moveto 0.72096 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.80603 1.49496 moveto 0.80603 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.84857 1.49496 moveto 0.84857 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.89111 1.49496 moveto 0.89111 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.93365 1.49496 moveto 0.93365 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.08287 1.49496 moveto 0.08287 1.49871 lineto stroke grestore gsave 0.001 setlinewidth 0.04033 1.49496 moveto 0.04033 1.49871 lineto stroke grestore gsave 0.002 setlinewidth 0 1.49496 moveto 1 1.49496 lineto stroke grestore gsave 0.002 setlinewidth 0.97619 0.43149 moveto 0.98244 0.43149 lineto stroke grestore [(-1)] 0.96369 0.43149 1 0 Mshowa gsave 0.002 setlinewidth 0.97619 0.96323 moveto 0.98244 0.96323 lineto stroke grestore [(-0.5)] 0.96369 0.96323 1 0 Mshowa gsave 0.002 setlinewidth 0.97619 2.0267 moveto 0.98244 2.0267 lineto stroke grestore [(0.5)] 0.96369 2.0267 1 0 Mshowa gsave 0.002 setlinewidth 0.97619 2.55844 moveto 0.98244 2.55844 lineto stroke grestore [(1)] 0.96369 2.55844 1 0 Mshowa gsave 0.001 setlinewidth 0.97619 0.53784 moveto 0.97994 0.53784 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.64419 moveto 0.97994 0.64419 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.75053 moveto 0.97994 0.75053 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.85688 moveto 0.97994 0.85688 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.06958 moveto 0.97994 1.06958 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.17592 moveto 0.97994 1.17592 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.28227 moveto 0.97994 1.28227 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.38862 moveto 0.97994 1.38862 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.60131 moveto 0.97994 1.60131 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.70766 moveto 0.97994 1.70766 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.81401 moveto 0.97994 1.81401 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 1.92035 moveto 0.97994 1.92035 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.13305 moveto 0.97994 2.13305 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.2394 moveto 0.97994 2.2394 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.34574 moveto 0.97994 2.34574 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.45209 moveto 0.97994 2.45209 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.32514 moveto 0.97994 0.32514 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.2188 moveto 0.97994 0.2188 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.11245 moveto 0.97994 0.11245 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 0.0061 moveto 0.97994 0.0061 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.66478 moveto 0.97994 2.66478 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.77113 moveto 0.97994 2.77113 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.87748 moveto 0.97994 2.87748 lineto stroke grestore gsave 0.001 setlinewidth 0.97619 2.98383 moveto 0.97994 2.98383 lineto stroke grestore gsave 0.002 setlinewidth 0.97619 0 moveto 0.97619 2.98993 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 2.98993 lineto 0 2.98993 lineto closepath clip newpath gsave 0.008 setlinewidth 0.88239 0.07119 Mdot 0.69839 0.1259 Mdot 0.52507 0.23323 Mdot 0.36908 0.38905 Mdot 0.23643 0.58736 Mdot 0.1322 0.82055 Mdot 0.06041 1.07966 Mdot 0.02381 1.35473 Mdot 0.02381 1.63519 Mdot 0.06041 1.91026 Mdot 0.1322 2.16938 Mdot 0.23643 2.40257 Mdot 0.36908 2.60088 Mdot 0.52507 2.7567 Mdot 0.69839 2.86403 Mdot 0.88239 2.91874 Mdot 0.93595 0.36049 Mdot 0.85702 0.40409 Mdot 0.78266 0.48961 Mdot 0.71575 0.61376 Mdot 0.65884 0.77178 Mdot 0.61413 0.95759 Mdot 0.58333 1.16405 Mdot 0.56763 1.38323 Mdot 0.56763 1.6067 Mdot 0.58333 1.82588 Mdot 0.61413 2.03234 Mdot 0.65884 2.21815 Mdot 0.71575 2.37617 Mdot 0.78266 2.50032 Mdot 0.85702 2.58584 Mdot 0.93595 2.62944 Mdot 0.95932 0.42284 Mdot 0.92622 0.46404 Mdot 0.89504 0.54486 Mdot 0.86698 0.66219 Mdot 0.84312 0.81152 Mdot 0.82437 0.98712 Mdot 0.81146 1.18224 Mdot 0.80488 1.38937 Mdot 0.80488 1.60056 Mdot 0.81146 1.80769 Mdot 0.82437 2.00281 Mdot 0.84312 2.17841 Mdot 0.86698 2.32774 Mdot 0.89504 2.44507 Mdot 0.92622 2.52589 Mdot 0.95932 2.56709 Mdot 0.96687 0.4324 Mdot 0.9486 0.47323 Mdot 0.93139 0.55333 Mdot 0.9159 0.66961 Mdot 0.90272 0.81762 Mdot 0.89237 0.99165 Mdot 0.88524 1.18502 Mdot 0.88161 1.39031 Mdot 0.88161 1.59962 Mdot 0.88524 1.8049 Mdot 0.89237 1.99828 Mdot 0.90272 2.17231 Mdot 0.9159 2.32032 Mdot 0.93139 2.4366 Mdot 0.9486 2.5167 Mdot 0.96687 2.55753 Mdot grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{154, 456}, ImageMargins->{{21, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The next function computes a Chebychev low pass filter and returns a list \ with the gain, zeros (none for a low pass filter) and poles. This list can \ then be passed to the filter transform routines to realize other types of \ filters (bandpass, bandreject and highpass.) In this filter design function \ the gain at the corner frequency (1 radian per second) is adjusted so that it \ has a loss of amax. As will be seen in the plots to follow this will set the \ maximum gain of the filter (at the peaks in the passband) to 0 dB."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "ChebychevLp[n_,amax_] :=\n\tBlock[{poles,gain},\n\t\tpoles = \ ChebychevPoles[n,amax]//N;\n\t\tgain = ContinuousFilterGain[\n\t\t\t\t\t\ PolynomialFromRoots[poles],\n\t\t\t\t\t1/(2 Pi)]//N;\n\t\tgain = \ 10^(-amax/20) * gain;\n\t\tReturn[{gain, {}, poles}]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"ChebychevLp"], Cell[TextData[ "The plot below shows the response of a eighth order Chebychev low pass \ filter with a passband error of 1 dB."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\tFilterFromGZP[ChebychevLp[8,1]],1.02];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.933707 0.603319 0.237848 [ [(0.2)] 0.21055 0.60332 0 2 Msboxa [(0.4)] 0.39729 0.60332 0 2 Msboxa [(0.6)] 0.58403 0.60332 0 2 Msboxa [(0.8)] 0.77077 0.60332 0 2 Msboxa [(1)] 0.95752 0.60332 0 2 Msboxa [( RPS)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-2.5)] 0.01131 0.0087 1 0 Msboxa [(-2)] 0.01131 0.12762 1 0 Msboxa [(-1.5)] 0.01131 0.24655 1 0 Msboxa [(-1)] 0.01131 0.36547 1 0 Msboxa [(-0.5)] 0.01131 0.48439 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.21055 0.60332 moveto 0.21055 0.60957 lineto stroke grestore [(0.2)] 0.21055 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.39729 0.60332 moveto 0.39729 0.60957 lineto stroke grestore [(0.4)] 0.39729 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.58403 0.60332 moveto 0.58403 0.60957 lineto stroke grestore [(0.6)] 0.58403 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.77077 0.60332 moveto 0.77077 0.60957 lineto stroke grestore [(0.8)] 0.77077 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.95752 0.60332 moveto 0.95752 0.60957 lineto stroke grestore [(1)] 0.95752 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.06116 0.60332 moveto 0.06116 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.09851 0.60332 moveto 0.09851 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.13585 0.60332 moveto 0.13585 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.1732 0.60332 moveto 0.1732 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.2479 0.60332 moveto 0.2479 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.28525 0.60332 moveto 0.28525 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.3226 0.60332 moveto 0.3226 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35994 0.60332 moveto 0.35994 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.43464 0.60332 moveto 0.43464 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.47199 0.60332 moveto 0.47199 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.50934 0.60332 moveto 0.50934 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54669 0.60332 moveto 0.54669 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.62138 0.60332 moveto 0.62138 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.65873 0.60332 moveto 0.65873 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69608 0.60332 moveto 0.69608 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.73343 0.60332 moveto 0.73343 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.80812 0.60332 moveto 0.80812 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.84547 0.60332 moveto 0.84547 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88282 0.60332 moveto 0.88282 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92017 0.60332 moveto 0.92017 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.99486 0.60332 moveto 0.99486 0.60707 lineto stroke grestore [( RPS)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.0087 moveto 0.03006 0.0087 lineto stroke grestore [(-2.5)] 0.01131 0.0087 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12762 moveto 0.03006 0.12762 lineto stroke grestore [(-2)] 0.01131 0.12762 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24655 moveto 0.03006 0.24655 lineto stroke grestore [(-1.5)] 0.01131 0.24655 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36547 moveto 0.03006 0.36547 lineto stroke grestore [(-1)] 0.01131 0.36547 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.48439 moveto 0.03006 0.48439 lineto stroke grestore [(-0.5)] 0.01131 0.48439 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.03248 moveto 0.02756 0.03248 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05627 moveto 0.02756 0.05627 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08005 moveto 0.02756 0.08005 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10384 moveto 0.02756 0.10384 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15141 moveto 0.02756 0.15141 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17519 moveto 0.02756 0.17519 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19898 moveto 0.02756 0.19898 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22276 moveto 0.02756 0.22276 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27033 moveto 0.02756 0.27033 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29412 moveto 0.02756 0.29412 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3179 moveto 0.02756 0.3179 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34169 moveto 0.02756 0.34169 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38926 moveto 0.02756 0.38926 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41304 moveto 0.02756 0.41304 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43683 moveto 0.02756 0.43683 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46061 moveto 0.02756 0.46061 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50818 moveto 0.02756 0.50818 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53196 moveto 0.02756 0.53196 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55575 moveto 0.02756 0.55575 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57953 moveto 0.02756 0.57953 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.03315 0.36683 moveto 0.03806 0.36863 lineto 0.04297 0.37116 lineto 0.04788 0.37442 lineto 0.05279 0.37839 lineto 0.06262 0.38837 lineto 0.07244 0.4009 lineto 0.11173 0.47027 lineto 0.13138 0.51042 lineto 0.15103 0.54834 lineto 0.16085 0.56493 lineto 0.17067 0.57914 lineto 0.17559 0.58519 lineto 0.1805 0.59044 lineto 0.18541 0.59486 lineto 0.19032 0.59838 lineto 0.19523 0.60098 lineto 0.19769 0.60193 lineto 0.19892 0.60231 lineto 0.20014 0.60263 lineto 0.20137 0.60289 lineto 0.2026 0.60309 lineto 0.20383 0.60323 lineto 0.20506 0.6033 lineto 0.20628 0.60332 lineto 0.20751 0.60327 lineto 0.20874 0.60316 lineto 0.20997 0.60299 lineto 0.21242 0.60247 lineto 0.21365 0.60211 lineto 0.21488 0.6017 lineto 0.21733 0.60069 lineto 0.21979 0.59943 lineto 0.2247 0.59621 lineto 0.22961 0.59207 lineto 0.23944 0.58117 lineto 0.24926 0.56713 lineto 0.26891 0.5318 lineto 0.3082 0.44984 lineto 0.32785 0.4133 lineto 0.33767 0.39805 lineto 0.34749 0.38537 lineto 0.35241 0.3801 lineto 0.35732 0.3756 lineto 0.36223 0.37189 lineto 0.36714 0.36901 lineto 0.3696 0.36788 lineto 0.37205 0.36697 lineto 0.37328 0.36659 lineto 0.37451 0.36627 lineto Mistroke 0.37574 0.366 lineto 0.37696 0.36579 lineto 0.37819 0.36563 lineto 0.37942 0.36552 lineto 0.38065 0.36547 lineto 0.38188 0.36548 lineto 0.3831 0.36554 lineto 0.38433 0.36566 lineto 0.38556 0.36583 lineto 0.38679 0.36606 lineto 0.38924 0.36668 lineto 0.3917 0.36752 lineto 0.39661 0.36987 lineto 0.40152 0.37309 lineto 0.40643 0.37717 lineto 0.41626 0.38785 lineto 0.42608 0.4017 lineto 0.44573 0.43751 lineto 0.46538 0.48084 lineto 0.48502 0.52612 lineto 0.49485 0.54736 lineto 0.50467 0.56639 lineto 0.51449 0.58228 lineto 0.5194 0.58877 lineto 0.52432 0.59417 lineto 0.52677 0.59643 lineto 0.52923 0.59838 lineto 0.53168 0.60002 lineto 0.53414 0.60133 lineto 0.53537 0.60187 lineto 0.53659 0.60232 lineto 0.53782 0.60269 lineto 0.53905 0.60297 lineto 0.54028 0.60317 lineto 0.54151 0.60329 lineto 0.54273 0.60332 lineto 0.54396 0.60326 lineto 0.54519 0.60312 lineto 0.54642 0.60289 lineto 0.54765 0.60258 lineto 0.54887 0.60218 lineto 0.55133 0.60112 lineto 0.55379 0.59972 lineto 0.5587 0.5959 lineto 0.56361 0.59077 lineto 0.57343 0.57677 lineto 0.58326 0.55838 lineto 0.62255 0.46089 lineto 0.6422 0.41404 lineto 0.65202 0.39499 lineto Mistroke 0.65693 0.38698 lineto 0.66184 0.38011 lineto 0.66675 0.37447 lineto 0.66921 0.37213 lineto 0.67167 0.37014 lineto 0.67412 0.36848 lineto 0.67658 0.36719 lineto 0.67903 0.36625 lineto 0.68026 0.36591 lineto 0.68149 0.36567 lineto 0.68272 0.36553 lineto 0.68395 0.36547 lineto 0.68517 0.36551 lineto 0.6864 0.36565 lineto 0.68763 0.36587 lineto 0.68886 0.3662 lineto 0.69008 0.36662 lineto 0.69131 0.36714 lineto 0.69377 0.36846 lineto 0.69622 0.37017 lineto 0.70114 0.37474 lineto 0.70605 0.38084 lineto 0.71096 0.38845 lineto 0.72078 0.40797 lineto 0.74043 0.46137 lineto 0.76008 0.52448 lineto 0.7699 0.55429 lineto 0.77481 0.56757 lineto 0.77972 0.57926 lineto 0.78463 0.589 lineto 0.78709 0.59303 lineto 0.78955 0.59645 lineto 0.792 0.59921 lineto 0.79323 0.60034 lineto 0.79446 0.60129 lineto 0.79569 0.60207 lineto 0.79691 0.60266 lineto 0.79814 0.60306 lineto 0.79937 0.60328 lineto 0.8006 0.60331 lineto 0.80183 0.60314 lineto 0.80305 0.60278 lineto 0.80428 0.60223 lineto 0.80674 0.60053 lineto 0.80797 0.59938 lineto 0.80919 0.59803 lineto 0.8141 0.5907 lineto 0.81902 0.58033 lineto 0.82884 0.55138 lineto 0.83866 0.514 lineto Mistroke 0.85831 0.43127 lineto 0.86322 0.41266 lineto 0.86813 0.39625 lineto 0.87305 0.3827 lineto 0.8755 0.37721 lineto 0.87796 0.37267 lineto 0.87918 0.37079 lineto 0.88041 0.36918 lineto 0.88164 0.36784 lineto 0.88287 0.3668 lineto 0.8841 0.36605 lineto 0.88532 0.3656 lineto 0.88655 0.36547 lineto 0.88778 0.36566 lineto 0.88901 0.36618 lineto 0.89024 0.36704 lineto 0.89146 0.36824 lineto 0.89269 0.3698 lineto 0.89515 0.37398 lineto 0.8976 0.37962 lineto 0.90252 0.39543 lineto 0.90743 0.41725 lineto 0.91725 0.47714 lineto 0.92707 0.54829 lineto 0.92953 0.56484 lineto 0.93199 0.57958 lineto 0.93321 0.58599 lineto 0.93444 0.5916 lineto 0.93567 0.59628 lineto 0.9369 0.59989 lineto 0.93812 0.60228 lineto 0.93935 0.60329 lineto 0.94058 0.60278 lineto 0.94181 0.60059 lineto 0.94304 0.59655 lineto 0.94426 0.59051 lineto 0.94549 0.58231 lineto 0.94672 0.57183 lineto 0.94918 0.54345 lineto 0.95163 0.50449 lineto 0.95409 0.45439 lineto 0.95654 0.39293 lineto 0.96146 0.237 lineto 0.96637 0.04217 lineto Mfstroke 0.96725 0 moveto 0.96637 0.04217 lineto stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Chebychev filters can have an arbitrarily small error in the passband but \ this does not come for free. The plot below shows the gain at twice the \ corner frequency as a function of passband error. In each case an eighth \ order Chebychev low pass filter was designed."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "Plot[ContinuousFilterDb[\n\t\tFilterFromGZP[ChebychevLp[8,e]],\n\t\t1/Pi],\n\ \t{e,.01,10},\n\tAxesLabel->{\"Passband Error\",\"Gain at 2rps\"}];"], "Input",\ AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.0952381 1.57219 0.0163887 [ [(2)] 0.21429 0.01526 0 2 Msboxa [(4)] 0.40476 0.01526 0 2 Msboxa [(6)] 0.59524 0.01526 0 2 Msboxa [(8)] 0.78571 0.01526 0 2 Msboxa [(10)] 0.97619 0.01526 0 2 Msboxa [(Passband Error)] 1.025 0.01526 -1 0 Msboxa [(-90)] 0.01131 0.09721 1 0 Msboxa [(-85)] 0.01131 0.17915 1 0 Msboxa [(-80)] 0.01131 0.26109 1 0 Msboxa [(-75)] 0.01131 0.34304 1 0 Msboxa [(-70)] 0.01131 0.42498 1 0 Msboxa [(-65)] 0.01131 0.50692 1 0 Msboxa [(-60)] 0.01131 0.58887 1 0 Msboxa [(Gain at 2rps)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.21429 0.01526 moveto 0.21429 0.02151 lineto stroke grestore [(2)] 0.21429 0.01526 0 2 Mshowa gsave 0.002 setlinewidth 0.40476 0.01526 moveto 0.40476 0.02151 lineto stroke grestore [(4)] 0.40476 0.01526 0 2 Mshowa gsave 0.002 setlinewidth 0.59524 0.01526 moveto 0.59524 0.02151 lineto stroke grestore [(6)] 0.59524 0.01526 0 2 Mshowa gsave 0.002 setlinewidth 0.78571 0.01526 moveto 0.78571 0.02151 lineto stroke grestore [(8)] 0.78571 0.01526 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.01526 moveto 0.97619 0.02151 lineto stroke grestore [(10)] 0.97619 0.01526 0 2 Mshowa gsave 0.001 setlinewidth 0.0619 0.01526 moveto 0.0619 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.1 0.01526 moveto 0.1 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.1381 0.01526 moveto 0.1381 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.17619 0.01526 moveto 0.17619 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.25238 0.01526 moveto 0.25238 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.29048 0.01526 moveto 0.29048 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.32857 0.01526 moveto 0.32857 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.36667 0.01526 moveto 0.36667 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.44286 0.01526 moveto 0.44286 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.48095 0.01526 moveto 0.48095 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.51905 0.01526 moveto 0.51905 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.55714 0.01526 moveto 0.55714 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.63333 0.01526 moveto 0.63333 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.67143 0.01526 moveto 0.67143 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.70952 0.01526 moveto 0.70952 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.74762 0.01526 moveto 0.74762 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.82381 0.01526 moveto 0.82381 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.8619 0.01526 moveto 0.8619 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.9 0.01526 moveto 0.9 0.01901 lineto stroke grestore gsave 0.001 setlinewidth 0.9381 0.01526 moveto 0.9381 0.01901 lineto stroke grestore [(Passband Error)] 1.025 0.01526 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.01526 moveto 1 0.01526 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.09721 moveto 0.03006 0.09721 lineto stroke grestore [(-90)] 0.01131 0.09721 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.17915 moveto 0.03006 0.17915 lineto stroke grestore [(-85)] 0.01131 0.17915 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.26109 moveto 0.03006 0.26109 lineto stroke grestore [(-80)] 0.01131 0.26109 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.34304 moveto 0.03006 0.34304 lineto stroke grestore [(-75)] 0.01131 0.34304 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.42498 moveto 0.03006 0.42498 lineto stroke grestore [(-70)] 0.01131 0.42498 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.50692 moveto 0.03006 0.50692 lineto stroke grestore [(-65)] 0.01131 0.50692 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.58887 moveto 0.03006 0.58887 lineto stroke grestore [(-60)] 0.01131 0.58887 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.03165 moveto 0.02756 0.03165 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04804 moveto 0.02756 0.04804 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06443 moveto 0.02756 0.06443 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08082 moveto 0.02756 0.08082 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1136 moveto 0.02756 0.1136 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12998 moveto 0.02756 0.12998 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14637 moveto 0.02756 0.14637 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16276 moveto 0.02756 0.16276 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19554 moveto 0.02756 0.19554 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21193 moveto 0.02756 0.21193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22832 moveto 0.02756 0.22832 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2447 moveto 0.02756 0.2447 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27748 moveto 0.02756 0.27748 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29387 moveto 0.02756 0.29387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.31026 moveto 0.02756 0.31026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32665 moveto 0.02756 0.32665 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35943 moveto 0.02756 0.35943 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37581 moveto 0.02756 0.37581 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3922 moveto 0.02756 0.3922 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40859 moveto 0.02756 0.40859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44137 moveto 0.02756 0.44137 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45776 moveto 0.02756 0.45776 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47415 moveto 0.02756 0.47415 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49053 moveto 0.02756 0.49053 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52331 moveto 0.02756 0.52331 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.5397 moveto 0.02756 0.5397 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55609 moveto 0.02756 0.55609 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57248 moveto 0.02756 0.57248 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.60526 moveto 0.02756 0.60526 lineto stroke grestore [(Gain at 2rps)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02476 0.60332 moveto 0.026 0.54391 lineto 0.02724 0.5119 lineto 0.02848 0.48985 lineto 0.02972 0.47299 lineto 0.03219 0.44785 lineto 0.03467 0.42921 lineto 0.03963 0.40204 lineto 0.04458 0.38221 lineto 0.05449 0.35359 lineto 0.0644 0.3328 lineto 0.08423 0.30276 lineto 0.10405 0.28081 lineto 0.14369 0.24868 lineto 0.18333 0.22475 lineto 0.22298 0.20529 lineto 0.26262 0.18866 lineto 0.30226 0.17397 lineto 0.3419 0.16068 lineto 0.38155 0.14845 lineto 0.42119 0.13704 lineto 0.46083 0.1263 lineto 0.50048 0.1161 lineto 0.54012 0.10633 lineto 0.57976 0.09694 lineto 0.6194 0.08786 lineto 0.65905 0.07905 lineto 0.69869 0.07046 lineto 0.73833 0.06207 lineto 0.77798 0.05386 lineto 0.81762 0.0458 lineto 0.85726 0.03787 lineto 0.8969 0.03005 lineto 0.93655 0.02234 lineto 0.97619 0.01472 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{385, 238}, ImageMargins->{{0, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The two plots that follow show the actual frequency response of two of the \ filters used to make the plot above. The first plot is for a maximum passband \ error of 0.1 dB while the second plot is a Chebychev filter with an error of \ 3 dB."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\tFilterFromGZP[ChebychevLp[8,.1]],\n\t\ 2,{PlotRange->All}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0190237 0.478583 0.603319 0.00851035 [ [(0.5)] 0.25832 0.60332 0 2 Msboxa [(1)] 0.49761 0.60332 0 2 Msboxa [(1.5)] 0.7369 0.60332 0 2 Msboxa [(2)] 0.97619 0.60332 0 2 Msboxa [( RPS)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-70)] 0.00652 0.00759 1 0 Msboxa [(-60)] 0.00652 0.0927 1 0 Msboxa [(-50)] 0.00652 0.1778 1 0 Msboxa [(-40)] 0.00652 0.2629 1 0 Msboxa [(-30)] 0.00652 0.34801 1 0 Msboxa [(-20)] 0.00652 0.43311 1 0 Msboxa [(-10)] 0.00652 0.51822 1 0 Msboxa [(dB)] 0.01902 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.25832 0.60332 moveto 0.25832 0.60957 lineto stroke grestore [(0.5)] 0.25832 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.49761 0.60332 moveto 0.49761 0.60957 lineto stroke grestore [(1)] 0.49761 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7369 0.60332 moveto 0.7369 0.60957 lineto stroke grestore [(1.5)] 0.7369 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.06688 0.60332 moveto 0.06688 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11474 0.60332 moveto 0.11474 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.1626 0.60332 moveto 0.1626 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21046 0.60332 moveto 0.21046 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30617 0.60332 moveto 0.30617 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35403 0.60332 moveto 0.35403 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40189 0.60332 moveto 0.40189 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.44975 0.60332 moveto 0.44975 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54547 0.60332 moveto 0.54547 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59332 0.60332 moveto 0.59332 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64118 0.60332 moveto 0.64118 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.68904 0.60332 moveto 0.68904 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78476 0.60332 moveto 0.78476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83262 0.60332 moveto 0.83262 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88047 0.60332 moveto 0.88047 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92833 0.60332 moveto 0.92833 0.60707 lineto stroke grestore [( RPS)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.01902 0.00759 moveto 0.02527 0.00759 lineto stroke grestore [(-70)] 0.00652 0.00759 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.0927 moveto 0.02527 0.0927 lineto stroke grestore [(-60)] 0.00652 0.0927 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.1778 moveto 0.02527 0.1778 lineto stroke grestore [(-50)] 0.00652 0.1778 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.2629 moveto 0.02527 0.2629 lineto stroke grestore [(-40)] 0.00652 0.2629 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.34801 moveto 0.02527 0.34801 lineto stroke grestore [(-30)] 0.00652 0.34801 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.43311 moveto 0.02527 0.43311 lineto stroke grestore [(-20)] 0.00652 0.43311 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.51822 moveto 0.02527 0.51822 lineto stroke grestore [(-10)] 0.00652 0.51822 1 0 Mshowa gsave 0.001 setlinewidth 0.01902 0.02461 moveto 0.02277 0.02461 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.04164 moveto 0.02277 0.04164 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.05866 moveto 0.02277 0.05866 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.07568 moveto 0.02277 0.07568 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.10972 moveto 0.02277 0.10972 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.12674 moveto 0.02277 0.12674 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.14376 moveto 0.02277 0.14376 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.16078 moveto 0.02277 0.16078 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.19482 moveto 0.02277 0.19482 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.21184 moveto 0.02277 0.21184 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.22886 moveto 0.02277 0.22886 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.24588 moveto 0.02277 0.24588 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.27993 moveto 0.02277 0.27993 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.29695 moveto 0.02277 0.29695 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.31397 moveto 0.02277 0.31397 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.33099 moveto 0.02277 0.33099 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.36503 moveto 0.02277 0.36503 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.38205 moveto 0.02277 0.38205 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.39907 moveto 0.02277 0.39907 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.41609 moveto 0.02277 0.41609 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.45013 moveto 0.02277 0.45013 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.46715 moveto 0.02277 0.46715 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.48417 moveto 0.02277 0.48417 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.50119 moveto 0.02277 0.50119 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.53524 moveto 0.02277 0.53524 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.55226 moveto 0.02277 0.55226 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.56928 moveto 0.02277 0.56928 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.5863 moveto 0.02277 0.5863 lineto stroke grestore [(dB)] 0.01902 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.01902 0 moveto 0.01902 0.61803 lineto stroke grestore grestore gsave gsave 0.004 setlinewidth 0.02381 0.60247 moveto 0.06349 0.60286 lineto 0.07341 0.603 lineto 0.08333 0.60313 lineto 0.08829 0.60318 lineto 0.09325 0.60323 lineto 0.09821 0.60327 lineto 0.10069 0.60329 lineto 0.10317 0.6033 lineto 0.10441 0.6033 lineto 0.10565 0.60331 lineto 0.10689 0.60331 lineto 0.10813 0.60331 lineto 0.10938 0.60332 lineto 0.11062 0.60332 lineto 0.11186 0.60332 lineto 0.1131 0.60332 lineto 0.11434 0.60332 lineto 0.11558 0.60332 lineto 0.11682 0.60331 lineto 0.11806 0.60331 lineto 0.12054 0.6033 lineto 0.12302 0.60329 lineto 0.12798 0.60326 lineto 0.13294 0.60322 lineto 0.14286 0.6031 lineto 0.1627 0.60282 lineto 0.17262 0.60268 lineto 0.17758 0.60262 lineto 0.18254 0.60257 lineto 0.1875 0.60253 lineto 0.18998 0.60251 lineto 0.19246 0.60249 lineto 0.19494 0.60248 lineto 0.19618 0.60248 lineto 0.19742 0.60247 lineto 0.19866 0.60247 lineto 0.1999 0.60247 lineto 0.20114 0.60247 lineto 0.20238 0.60247 lineto 0.20362 0.60247 lineto 0.20486 0.60247 lineto 0.2061 0.60247 lineto 0.20734 0.60248 lineto 0.20858 0.60248 lineto 0.20982 0.60248 lineto 0.2123 0.6025 lineto 0.21726 0.60253 lineto 0.22222 0.60258 lineto 0.23214 0.6027 lineto Mistroke 0.24206 0.60285 lineto 0.2619 0.60315 lineto 0.26687 0.60321 lineto 0.27183 0.60326 lineto 0.27431 0.60328 lineto 0.27679 0.6033 lineto 0.27803 0.6033 lineto 0.27927 0.60331 lineto 0.28051 0.60331 lineto 0.28175 0.60332 lineto 0.28299 0.60332 lineto 0.28423 0.60332 lineto 0.28547 0.60332 lineto 0.28671 0.60332 lineto 0.28795 0.60332 lineto 0.28919 0.60331 lineto 0.29043 0.60331 lineto 0.29167 0.6033 lineto 0.29415 0.60329 lineto 0.29663 0.60327 lineto 0.30159 0.60322 lineto 0.30655 0.60316 lineto 0.31151 0.60309 lineto 0.32143 0.60291 lineto 0.33135 0.60273 lineto 0.33631 0.60265 lineto 0.34127 0.60258 lineto 0.34375 0.60255 lineto 0.34623 0.60252 lineto 0.34871 0.6025 lineto 0.34995 0.60249 lineto 0.35119 0.60249 lineto 0.35243 0.60248 lineto 0.35367 0.60247 lineto 0.35491 0.60247 lineto 0.35615 0.60247 lineto 0.35739 0.60247 lineto 0.35863 0.60247 lineto 0.35987 0.60247 lineto 0.36111 0.60247 lineto 0.36359 0.60249 lineto 0.36483 0.60249 lineto 0.36607 0.6025 lineto 0.37103 0.60256 lineto 0.37599 0.60263 lineto 0.38095 0.60272 lineto 0.39087 0.60293 lineto 0.39583 0.60304 lineto 0.40079 0.60315 lineto 0.40575 0.60323 lineto Mistroke 0.40823 0.60326 lineto 0.40947 0.60328 lineto 0.41071 0.60329 lineto 0.41195 0.6033 lineto 0.41319 0.60331 lineto 0.41443 0.60331 lineto 0.41567 0.60332 lineto 0.41691 0.60332 lineto 0.41815 0.60332 lineto 0.41939 0.60331 lineto 0.42063 0.60331 lineto 0.42312 0.60329 lineto 0.42436 0.60328 lineto 0.4256 0.60326 lineto 0.43056 0.60317 lineto 0.43552 0.60305 lineto 0.44048 0.60291 lineto 0.46032 0.60247 lineto 0.48016 0.60305 lineto 0.48264 0.60317 lineto 0.48388 0.60322 lineto 0.48512 0.60326 lineto 0.48636 0.6033 lineto 0.4876 0.60331 lineto 0.48884 0.60332 lineto 0.49008 0.6033 lineto 0.49132 0.60326 lineto 0.49256 0.60318 lineto 0.4938 0.60308 lineto 0.49504 0.60293 lineto 0.49628 0.60273 lineto 0.49752 0.60249 lineto 0.49876 0.60218 lineto 0.5 0.60181 lineto 0.50248 0.60084 lineto 0.50496 0.59953 lineto 0.50744 0.59783 lineto 0.50992 0.59568 lineto 0.51488 0.58997 lineto 0.51984 0.58239 lineto 0.53968 0.5399 lineto 0.57937 0.45196 lineto 0.61905 0.38058 lineto 0.65873 0.32092 lineto 0.69841 0.26913 lineto 0.7381 0.22305 lineto 0.77778 0.18133 lineto 0.81746 0.1431 lineto 0.85714 0.10772 lineto 0.89683 0.07475 lineto Mistroke 0.93651 0.04384 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\tFilterFromGZP[ChebychevLp[8,3]],\n\t\ 2,{PlotRange->All}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0190237 0.478583 0.603319 0.00688664 [ [(0.5)] 0.25832 0.60332 0 2 Msboxa [(1)] 0.49761 0.60332 0 2 Msboxa [(1.5)] 0.7369 0.60332 0 2 Msboxa [(2)] 0.97619 0.60332 0 2 Msboxa [( RPS)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-80)] 0.00652 0.05239 1 0 Msboxa [(-60)] 0.00652 0.19012 1 0 Msboxa [(-40)] 0.00652 0.32785 1 0 Msboxa [(-20)] 0.00652 0.46559 1 0 Msboxa [(dB)] 0.01902 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.25832 0.60332 moveto 0.25832 0.60957 lineto stroke grestore [(0.5)] 0.25832 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.49761 0.60332 moveto 0.49761 0.60957 lineto stroke grestore [(1)] 0.49761 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7369 0.60332 moveto 0.7369 0.60957 lineto stroke grestore [(1.5)] 0.7369 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.06688 0.60332 moveto 0.06688 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11474 0.60332 moveto 0.11474 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.1626 0.60332 moveto 0.1626 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21046 0.60332 moveto 0.21046 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30617 0.60332 moveto 0.30617 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35403 0.60332 moveto 0.35403 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40189 0.60332 moveto 0.40189 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.44975 0.60332 moveto 0.44975 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54547 0.60332 moveto 0.54547 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59332 0.60332 moveto 0.59332 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64118 0.60332 moveto 0.64118 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.68904 0.60332 moveto 0.68904 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78476 0.60332 moveto 0.78476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83262 0.60332 moveto 0.83262 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88047 0.60332 moveto 0.88047 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92833 0.60332 moveto 0.92833 0.60707 lineto stroke grestore [( RPS)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.01902 0.05239 moveto 0.02527 0.05239 lineto stroke grestore [(-80)] 0.00652 0.05239 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.19012 moveto 0.02527 0.19012 lineto stroke grestore [(-60)] 0.00652 0.19012 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.32785 moveto 0.02527 0.32785 lineto stroke grestore [(-40)] 0.00652 0.32785 1 0 Mshowa gsave 0.002 setlinewidth 0.01902 0.46559 moveto 0.02527 0.46559 lineto stroke grestore [(-20)] 0.00652 0.46559 1 0 Mshowa gsave 0.001 setlinewidth 0.01902 0.07993 moveto 0.02277 0.07993 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.10748 moveto 0.02277 0.10748 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.13503 moveto 0.02277 0.13503 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.16257 moveto 0.02277 0.16257 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.21767 moveto 0.02277 0.21767 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.24521 moveto 0.02277 0.24521 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.27276 moveto 0.02277 0.27276 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.30031 moveto 0.02277 0.30031 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.3554 moveto 0.02277 0.3554 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.38295 moveto 0.02277 0.38295 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.41049 moveto 0.02277 0.41049 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.43804 moveto 0.02277 0.43804 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.49313 moveto 0.02277 0.49313 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.52068 moveto 0.02277 0.52068 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.54823 moveto 0.02277 0.54823 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.57577 moveto 0.02277 0.57577 lineto stroke grestore gsave 0.001 setlinewidth 0.01902 0.02484 moveto 0.02277 0.02484 lineto stroke grestore [(dB)] 0.01902 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.01902 0 moveto 0.01902 0.61803 lineto stroke grestore grestore gsave gsave 0.004 setlinewidth 0.02381 0.58275 moveto 0.02629 0.58288 lineto 0.02877 0.58305 lineto 0.03125 0.58328 lineto 0.03373 0.58356 lineto 0.03869 0.58426 lineto 0.04365 0.58515 lineto 0.05357 0.58748 lineto 0.06349 0.59044 lineto 0.08333 0.59731 lineto 0.08829 0.59895 lineto 0.09325 0.60043 lineto 0.09821 0.60167 lineto 0.10069 0.60218 lineto 0.10317 0.6026 lineto 0.10441 0.60278 lineto 0.10565 0.60293 lineto 0.10689 0.60306 lineto 0.10813 0.60316 lineto 0.10938 0.60324 lineto 0.11062 0.60329 lineto 0.11186 0.60332 lineto 0.1131 0.60331 lineto 0.11434 0.60329 lineto 0.11558 0.60323 lineto 0.11682 0.60315 lineto 0.11806 0.60304 lineto 0.12054 0.60275 lineto 0.12302 0.60236 lineto 0.12798 0.60132 lineto 0.13294 0.59998 lineto 0.14286 0.59669 lineto 0.1627 0.58964 lineto 0.17262 0.58671 lineto 0.17758 0.5855 lineto 0.18254 0.58449 lineto 0.1875 0.58369 lineto 0.18998 0.58337 lineto 0.19246 0.58311 lineto 0.19494 0.58291 lineto 0.19618 0.58283 lineto 0.19742 0.58277 lineto 0.19866 0.58272 lineto 0.1999 0.58268 lineto 0.20114 0.58266 lineto 0.20238 0.58266 lineto 0.20362 0.58267 lineto 0.20486 0.58269 lineto 0.2061 0.58273 lineto 0.20734 0.58279 lineto Mistroke 0.20858 0.58286 lineto 0.20982 0.58295 lineto 0.2123 0.58316 lineto 0.21726 0.58378 lineto 0.22222 0.58464 lineto 0.23214 0.58705 lineto 0.24206 0.59029 lineto 0.2619 0.59808 lineto 0.26687 0.59988 lineto 0.27183 0.60141 lineto 0.27431 0.60204 lineto 0.27679 0.60255 lineto 0.27803 0.60276 lineto 0.27927 0.60294 lineto 0.28051 0.60309 lineto 0.28175 0.6032 lineto 0.28299 0.60327 lineto 0.28423 0.60331 lineto 0.28547 0.60332 lineto 0.28671 0.60328 lineto 0.28795 0.60321 lineto 0.28919 0.6031 lineto 0.29043 0.60295 lineto 0.29167 0.60277 lineto 0.29415 0.60231 lineto 0.29663 0.60171 lineto 0.30159 0.60018 lineto 0.32143 0.59176 lineto 0.33135 0.58776 lineto 0.33631 0.58609 lineto 0.34127 0.58471 lineto 0.34375 0.58415 lineto 0.34623 0.58367 lineto 0.34871 0.58328 lineto 0.34995 0.58311 lineto 0.35119 0.58298 lineto 0.35243 0.58286 lineto 0.35367 0.58278 lineto 0.35491 0.58271 lineto 0.35615 0.58267 lineto 0.35739 0.58266 lineto 0.35863 0.58267 lineto 0.35987 0.58271 lineto 0.36111 0.58277 lineto 0.36359 0.58298 lineto 0.36483 0.58312 lineto 0.36607 0.5833 lineto 0.36855 0.58372 lineto 0.37103 0.58425 lineto 0.37599 0.58565 lineto Mistroke 0.38095 0.58747 lineto 0.40079 0.59784 lineto 0.40575 0.6004 lineto 0.40823 0.60147 lineto 0.41071 0.60233 lineto 0.41195 0.60268 lineto 0.41319 0.60295 lineto 0.41443 0.60315 lineto 0.41567 0.60328 lineto 0.41691 0.60332 lineto 0.41815 0.60328 lineto 0.41939 0.60316 lineto 0.42063 0.60295 lineto 0.42312 0.60229 lineto 0.42436 0.60184 lineto 0.4256 0.60132 lineto 0.43056 0.59861 lineto 0.44048 0.59168 lineto 0.44544 0.58832 lineto 0.44792 0.58683 lineto 0.4504 0.58552 lineto 0.45288 0.58441 lineto 0.45412 0.58395 lineto 0.45536 0.58355 lineto 0.4566 0.58322 lineto 0.45784 0.58296 lineto 0.45908 0.58278 lineto 0.46032 0.58268 lineto 0.48016 0.59516 lineto 0.48264 0.59845 lineto 0.48388 0.60001 lineto 0.48512 0.6014 lineto 0.48636 0.60251 lineto 0.4876 0.60318 lineto 0.48884 0.60328 lineto 0.49008 0.60266 lineto 0.49132 0.60124 lineto 0.49256 0.59897 lineto 0.4938 0.5959 lineto 0.49504 0.59212 lineto 0.5 0.57274 lineto 0.51984 0.49825 lineto 0.53968 0.44547 lineto 0.57937 0.36903 lineto 0.61905 0.31084 lineto 0.65873 0.26251 lineto 0.69841 0.2206 lineto 0.7381 0.1833 lineto 0.77778 0.14954 lineto 0.81746 0.1186 lineto Mistroke 0.85714 0.08998 lineto 0.89683 0.0633 lineto 0.93651 0.03828 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.3.4 - Low Pass Filter Design"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Low Pass Filter Design"], Cell[TextData[{ StyleBox[ "A low pass filter with a corner frequency of 1 rps can be transformed into \ a low pass filter with an arbitrary cutoff using a coordinate transformation. \ Using ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ ", this transformation can be implemented two different ways. First we \ could simply replace s in the normalized filter with s/(2 Pi fp) where fp is \ the new center frequency in Hertz. This gives us", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "LpToLp[filter_, fp_] :=\n\tSimplify[filter/.s->s/(2 Pi fp)]"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[{ StyleBox["But it is hard to convince ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " to put this transformed function into the form of simple polynomials in \ s.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["LpToLp[FilterFromGZP[ButterworthLp[3,1]],1000]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 1.965226728360271939/ (1.965226728360271939 + (0.001568947608228625552*s)/Pi + (6.262881940905132446*10^-7*s^2)/Pi^2 + (1.25*10^-10*s^3)/Pi^3)\ \>", "\<\ -7 2 0.00156895 s 6.26288 10 s 1.96523 / (1.96523 + ------------ + --------------- + Pi 2 Pi -10 3 1.25 10 s -------------) 3 Pi\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox[ "A better way to do this transformation is to use the gain, zero, pole \ (GZP) structure. The new ", Evaluatable->False, AspectRatioFixed->False], StyleBox["LpToLp", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[" transformation function is given by", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "LpToLp[{gain_, zeros_, poles_}, fp_] :=\n\t{gain * (2 Pi fp) ^ \ (Length[poles]-Length[zeros]),\n\t\t\tzeros * 2 Pi fp,\n\t\t\tpoles * 2 Pi \ fp}"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"LpToLp"], Cell[CellGroupData[{ Cell[TextData["FilterFromGZP[LpToLp[ButterworthLp[3,1],1000]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (4.874749094324720722*10^11 + 0.*I)/ ((3935.084779169549922 - 6815.766769612616119*I + s)* (3935.084779169549922 + 6815.766769612616119*I + s)* (7870.169558339099851 + s))\ \>", "\<\ 11 (4.87475 10 + 0. I)/ ((3935.08 - 6815.77 I + s) (3935.08 + 6815.77 I + s) (7870.17 + s))\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "First we show the effect of this transformation on a simple 3rd order \ Butterworth filter with a passband error of 1 dB."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToLp[ButterworthLp[3,1],1000]],\n\ \t2000,{PlotRange->All}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238048 0.000476193 0.603319 0.0472849 [ [(500)] 0.2619 0.60332 0 2 Msboxa [(1000)] 0.5 0.60332 0 2 Msboxa [(1500)] 0.73809 0.60332 0 2 Msboxa [(2000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-12)] 0.0113 0.0359 1 0 Msboxa [(-10)] 0.0113 0.13047 1 0 Msboxa [(-8)] 0.0113 0.22504 1 0 Msboxa [(-6)] 0.0113 0.31961 1 0 Msboxa [(-4)] 0.0113 0.41418 1 0 Msboxa [(-2)] 0.0113 0.50875 1 0 Msboxa [(dB)] 0.0238 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(500)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.73809 0.60332 moveto 0.73809 0.60957 lineto stroke grestore [(1500)] 0.73809 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07142 0.60332 moveto 0.07142 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11904 0.60332 moveto 0.11904 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16666 0.60332 moveto 0.16666 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21428 0.60332 moveto 0.21428 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69047 0.60332 moveto 0.69047 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.0238 0.0359 moveto 0.03005 0.0359 lineto stroke grestore [(-12)] 0.0113 0.0359 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.13047 moveto 0.03005 0.13047 lineto stroke grestore [(-10)] 0.0113 0.13047 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.22504 moveto 0.03005 0.22504 lineto stroke grestore [(-8)] 0.0113 0.22504 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.31961 moveto 0.03005 0.31961 lineto stroke grestore [(-6)] 0.0113 0.31961 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.41418 moveto 0.03005 0.41418 lineto stroke grestore [(-4)] 0.0113 0.41418 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.50875 moveto 0.03005 0.50875 lineto stroke grestore [(-2)] 0.0113 0.50875 1 0 Mshowa gsave 0.001 setlinewidth 0.0238 0.05481 moveto 0.02755 0.05481 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.07373 moveto 0.02755 0.07373 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.09264 moveto 0.02755 0.09264 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.11156 moveto 0.02755 0.11156 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.14938 moveto 0.02755 0.14938 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.1683 moveto 0.02755 0.1683 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.18721 moveto 0.02755 0.18721 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.20613 moveto 0.02755 0.20613 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.24395 moveto 0.02755 0.24395 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.26287 moveto 0.02755 0.26287 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.28178 moveto 0.02755 0.28178 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.3007 moveto 0.02755 0.3007 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.33852 moveto 0.02755 0.33852 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.35744 moveto 0.02755 0.35744 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.37635 moveto 0.02755 0.37635 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.39527 moveto 0.02755 0.39527 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.43309 moveto 0.02755 0.43309 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.45201 moveto 0.02755 0.45201 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.47092 moveto 0.02755 0.47092 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.48984 moveto 0.02755 0.48984 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.52766 moveto 0.02755 0.52766 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.54658 moveto 0.02755 0.54658 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.56549 moveto 0.02755 0.56549 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.5844 moveto 0.02755 0.5844 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.01699 moveto 0.02755 0.01699 lineto stroke grestore [(dB)] 0.0238 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.0238 0 moveto 0.0238 0.61803 lineto stroke grestore grestore gsave gsave 0.004 setlinewidth 0.02381 0.60332 moveto 0.02505 0.60332 lineto 0.02629 0.60332 lineto 0.02753 0.60332 lineto 0.02877 0.60332 lineto 0.03001 0.60332 lineto 0.03125 0.60332 lineto 0.03249 0.60332 lineto 0.03373 0.60332 lineto 0.03497 0.60332 lineto 0.03621 0.60332 lineto 0.03745 0.60332 lineto 0.03869 0.60332 lineto 0.03993 0.60332 lineto 0.04117 0.60332 lineto 0.04241 0.60332 lineto 0.04365 0.60332 lineto 0.04489 0.60332 lineto 0.04613 0.60332 lineto 0.04737 0.60332 lineto 0.04861 0.60332 lineto 0.04985 0.60332 lineto 0.05109 0.60332 lineto 0.05233 0.60332 lineto 0.05357 0.60332 lineto 0.05481 0.60332 lineto 0.05605 0.60332 lineto 0.05853 0.60332 lineto 0.05977 0.60332 lineto 0.06101 0.60332 lineto 0.06349 0.60332 lineto 0.06597 0.60332 lineto 0.06845 0.60332 lineto 0.07093 0.60332 lineto 0.07341 0.60332 lineto 0.07589 0.60332 lineto 0.07837 0.60332 lineto 0.08085 0.60332 lineto 0.08333 0.60332 lineto 0.08829 0.60332 lineto 0.09077 0.60332 lineto 0.09325 0.60332 lineto 0.09821 0.60332 lineto 0.10317 0.60332 lineto 0.10813 0.60332 lineto 0.1131 0.60332 lineto 0.11806 0.60332 lineto 0.12302 0.60331 lineto 0.12798 0.60331 lineto 0.13294 0.60331 lineto Mistroke 0.1379 0.60331 lineto 0.14286 0.60331 lineto 0.15278 0.6033 lineto 0.15774 0.60329 lineto 0.1627 0.60329 lineto 0.17262 0.60327 lineto 0.18254 0.60325 lineto 0.19246 0.60321 lineto 0.20238 0.60317 lineto 0.2123 0.60311 lineto 0.22222 0.60304 lineto 0.23214 0.60295 lineto 0.24206 0.60283 lineto 0.25198 0.60268 lineto 0.2619 0.60249 lineto 0.28175 0.60198 lineto 0.29167 0.60164 lineto 0.30159 0.60123 lineto 0.32143 0.60017 lineto 0.34127 0.5987 lineto 0.36111 0.59671 lineto 0.38095 0.59407 lineto 0.40079 0.59063 lineto 0.42063 0.58624 lineto 0.44048 0.58074 lineto 0.46032 0.57397 lineto 0.5 0.55603 lineto 0.53968 0.53152 lineto 0.57937 0.50012 lineto 0.61905 0.46224 lineto 0.65873 0.4189 lineto 0.69841 0.37144 lineto 0.7381 0.32125 lineto 0.77778 0.26957 lineto 0.81746 0.21737 lineto 0.85714 0.16537 lineto 0.89683 0.11407 lineto 0.93651 0.06378 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Now we can compare the Butterworth response with a similar filter designed \ using the Chebychev polynomials. Note that by rearranging the positions of \ the poles we have designed a filter with a much sharper cutoff. The \ Butterworth filter has an attenuation of 12dB at 2kHz while the Chebychev \ filter is already down 20dB. (But in both cases the asymptotic loss for high \ frequencies will be a function of frequency to the sixth power or 36 dB per \ octave.)"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToLp[ChebychevLp[3,1],1000]],\n\t\ 2000,{PlotRange->All}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238048 0.000476193 0.603319 0.0262115 [ [(500)] 0.2619 0.60332 0 2 Msboxa [(1000)] 0.5 0.60332 0 2 Msboxa [(1500)] 0.73809 0.60332 0 2 Msboxa [(2000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-20)] 0.0113 0.07909 1 0 Msboxa [(-15)] 0.0113 0.21015 1 0 Msboxa [(-10)] 0.0113 0.3412 1 0 Msboxa [(-5)] 0.0113 0.47226 1 0 Msboxa [(dB)] 0.0238 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(500)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.73809 0.60332 moveto 0.73809 0.60957 lineto stroke grestore [(1500)] 0.73809 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07142 0.60332 moveto 0.07142 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11904 0.60332 moveto 0.11904 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16666 0.60332 moveto 0.16666 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21428 0.60332 moveto 0.21428 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69047 0.60332 moveto 0.69047 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.0238 0.07909 moveto 0.03005 0.07909 lineto stroke grestore [(-20)] 0.0113 0.07909 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.21015 moveto 0.03005 0.21015 lineto stroke grestore [(-15)] 0.0113 0.21015 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.3412 moveto 0.03005 0.3412 lineto stroke grestore [(-10)] 0.0113 0.3412 1 0 Mshowa gsave 0.002 setlinewidth 0.0238 0.47226 moveto 0.03005 0.47226 lineto stroke grestore [(-5)] 0.0113 0.47226 1 0 Mshowa gsave 0.001 setlinewidth 0.0238 0.1053 moveto 0.02755 0.1053 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.13151 moveto 0.02755 0.13151 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.15772 moveto 0.02755 0.15772 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.18394 moveto 0.02755 0.18394 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.23636 moveto 0.02755 0.23636 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.26257 moveto 0.02755 0.26257 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.28878 moveto 0.02755 0.28878 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.31499 moveto 0.02755 0.31499 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.36742 moveto 0.02755 0.36742 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.39363 moveto 0.02755 0.39363 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.41984 moveto 0.02755 0.41984 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.44605 moveto 0.02755 0.44605 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.49847 moveto 0.02755 0.49847 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.52468 moveto 0.02755 0.52468 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.5509 moveto 0.02755 0.5509 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.57711 moveto 0.02755 0.57711 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.05288 moveto 0.02755 0.05288 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.02667 moveto 0.02755 0.02667 lineto stroke grestore gsave 0.001 setlinewidth 0.0238 0.00045 moveto 0.02755 0.00045 lineto stroke grestore [(dB)] 0.0238 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.0238 0 moveto 0.0238 0.61803 lineto stroke grestore grestore gsave gsave 0.004 setlinewidth 0.02381 0.60332 moveto 0.02505 0.60332 lineto 0.02629 0.60331 lineto 0.02753 0.6033 lineto 0.02877 0.60329 lineto 0.03125 0.60325 lineto 0.03373 0.6032 lineto 0.03621 0.60314 lineto 0.03869 0.60306 lineto 0.04365 0.60286 lineto 0.05357 0.6023 lineto 0.06349 0.60152 lineto 0.08333 0.59941 lineto 0.10317 0.59668 lineto 0.14286 0.59018 lineto 0.18254 0.58372 lineto 0.20238 0.58102 lineto 0.2123 0.57989 lineto 0.22222 0.57893 lineto 0.23214 0.57815 lineto 0.2371 0.57784 lineto 0.24206 0.57758 lineto 0.24702 0.57738 lineto 0.2495 0.57729 lineto 0.25198 0.57723 lineto 0.25446 0.57718 lineto 0.2557 0.57715 lineto 0.25694 0.57714 lineto 0.25818 0.57712 lineto 0.25942 0.57711 lineto 0.26066 0.57711 lineto 0.2619 0.57711 lineto 0.26314 0.57711 lineto 0.26438 0.57712 lineto 0.26563 0.57712 lineto 0.26687 0.57714 lineto 0.26935 0.57718 lineto 0.27183 0.57723 lineto 0.27431 0.5773 lineto 0.27679 0.57739 lineto 0.28175 0.57761 lineto 0.28671 0.57789 lineto 0.29167 0.57824 lineto 0.30159 0.57914 lineto 0.31151 0.5803 lineto 0.32143 0.58171 lineto 0.34127 0.58526 lineto 0.38095 0.59436 lineto 0.40079 0.59891 lineto 0.41071 0.60083 lineto Mistroke 0.41567 0.60164 lineto 0.42063 0.60231 lineto 0.42312 0.60259 lineto 0.4256 0.60283 lineto 0.42808 0.60303 lineto 0.42932 0.60311 lineto 0.43056 0.60318 lineto 0.4318 0.60323 lineto 0.43304 0.60327 lineto 0.43428 0.6033 lineto 0.43552 0.60332 lineto 0.43676 0.60332 lineto 0.438 0.6033 lineto 0.43924 0.60327 lineto 0.44048 0.60323 lineto 0.44172 0.60317 lineto 0.44296 0.60309 lineto 0.44544 0.60289 lineto 0.44792 0.60262 lineto 0.4504 0.60228 lineto 0.45536 0.60137 lineto 0.46032 0.60013 lineto 0.46528 0.59856 lineto 0.47024 0.59663 lineto 0.48016 0.59165 lineto 0.49008 0.58514 lineto 0.5 0.57711 lineto 0.53968 0.53191 lineto 0.57937 0.47431 lineto 0.61905 0.41405 lineto 0.65873 0.35601 lineto 0.69841 0.3018 lineto 0.7381 0.25159 lineto 0.77778 0.20509 lineto 0.81746 0.16189 lineto 0.85714 0.12158 lineto 0.89683 0.08381 lineto 0.93651 0.04828 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 1.3.5 - Other Filter Transforms"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Other Filter Transforms"], Cell[TextData[ "Other filter transforms are also possible. This section describes transforms \ that make a low pass filter into a high pass, bandpass and band-reject. In \ each case we use the gain, zero, pole structure to keep track of the filter \ parameters. "], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "High pass filters are designed by replacing s in the original normalized low \ pass filter transfer function with"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ S = wp / s\ \>", "\<\ wp S = -- s\ \>"], "Input", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "where wp is the desired high pass cutoff in radians per second. This \ transformation is done as follows. Not only is it is necessary to transform \ each pole into a zero and each zero into a pole, but also to adjust the \ overall filter gain."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "LpToHp[{gain_, zeros_, poles_}, fp_] :=\n\tBlock[{RootDiff, ExcessPoles, \ ExcessZeros},\n\t\tRootDiff = Length[zeros]-Length[poles];\n\t\tIf [ RootDiff \ > 0,\n\t\t\t\t\tExcessZeros = Table[0,{RootDiff}];\n\t\t\t\t\tExcessPoles = \ {},\n\t\t\t\tExcessPoles = Table[0,{-RootDiff}];\n\t\t\t\tExcessZeros = {}];\n\ \t\t{gain * Apply[Times,zeros]/Apply[Times,poles],\n\t\t\tJoin[2 Pi fp / \ zeros,ExcessPoles],\n\t\t\tJoin[2 Pi fp / poles,ExcessZeros]}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"LpToHp"], Cell[TextData[ "Below we show the Butterworth and Chebychev high-pass filters that have been \ computed with this transform."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["FilterFromGZP[LpToHp[ButterworthLp[3,3],1000]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ ((-1. + 0.*I)*s^3)/ ((3139.107096399612265 - 5437.092981364141974*I + s)* (3139.107096399612265 + 5437.092981364141974*I + s)* (6278.214192799224537 + s))\ \>", "\<\ 3 ((-1. + 0. I) s )/ ((3139.11 - 5437.09 I + s) (3139.11 + 5437.09 I + s) (6278.21 + s))\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToHp[ButterworthLp[3,3],1000]],\n\ \t2000,{PlotRange->{0,-50}}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.618034 0.0123607 [ [(500)] 0.2619 0.61803 0 2 Msboxa [(1000)] 0.5 0.61803 0 2 Msboxa [(1500)] 0.7381 0.61803 0 2 Msboxa [(2000)] 0.97619 0.61803 0 2 Msboxa [( Hz)] 1.025 0.61803 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0 1 0 Msboxa [(-40)] 0.01131 0.12361 1 0 Msboxa [(-30)] 0.01131 0.24721 1 0 Msboxa [(-20)] 0.01131 0.37082 1 0 Msboxa [(-10)] 0.01131 0.49443 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.62528 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.61803 moveto 0.2619 0.62428 lineto stroke grestore [(500)] 0.2619 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.61803 moveto 0.5 0.62428 lineto stroke grestore [(1000)] 0.5 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.61803 moveto 0.7381 0.62428 lineto stroke grestore [(1500)] 0.7381 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.61803 moveto 0.97619 0.62428 lineto stroke grestore [(2000)] 0.97619 0.61803 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.61803 moveto 0.07143 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.61803 moveto 0.11905 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.61803 moveto 0.16667 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.61803 moveto 0.21429 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.61803 moveto 0.30952 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.61803 moveto 0.35714 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.61803 moveto 0.40476 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.61803 moveto 0.45238 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.61803 moveto 0.54762 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.61803 moveto 0.59524 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.61803 moveto 0.64286 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.61803 moveto 0.69048 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.61803 moveto 0.78571 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.61803 moveto 0.83333 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.61803 moveto 0.88095 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.61803 moveto 0.92857 0.62178 lineto stroke grestore [( Hz)] 1.025 0.61803 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.61803 moveto 1 0.61803 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.03006 0 lineto stroke grestore [(-50)] 0.01131 0 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12361 moveto 0.03006 0.12361 lineto stroke grestore [(-40)] 0.01131 0.12361 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24721 moveto 0.03006 0.24721 lineto stroke grestore [(-30)] 0.01131 0.24721 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.37082 moveto 0.03006 0.37082 lineto stroke grestore [(-20)] 0.01131 0.37082 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49443 moveto 0.03006 0.49443 lineto stroke grestore [(-10)] 0.01131 0.49443 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02472 moveto 0.02756 0.02472 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04944 moveto 0.02756 0.04944 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07416 moveto 0.02756 0.07416 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09889 moveto 0.02756 0.09889 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14833 moveto 0.02756 0.14833 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17305 moveto 0.02756 0.17305 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19777 moveto 0.02756 0.19777 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22249 moveto 0.02756 0.22249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27193 moveto 0.02756 0.27193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29666 moveto 0.02756 0.29666 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32138 moveto 0.02756 0.32138 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3461 moveto 0.02756 0.3461 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39554 moveto 0.02756 0.39554 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42026 moveto 0.02756 0.42026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44498 moveto 0.02756 0.44498 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46971 moveto 0.02756 0.46971 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51915 moveto 0.02756 0.51915 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54387 moveto 0.02756 0.54387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56859 moveto 0.02756 0.56859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59331 moveto 0.02756 0.59331 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.09436 0 moveto 0.10318 0.0412 lineto stroke 0.10318 0.0412 moveto 0.14286 0.17177 lineto 0.18254 0.26437 lineto 0.22223 0.33603 lineto 0.26191 0.3942 lineto 0.30159 0.4426 lineto 0.34127 0.48316 lineto 0.38096 0.5168 lineto 0.42064 0.544 lineto 0.46032 0.56516 lineto 0.5 0.58095 lineto 0.51984 0.58711 lineto 0.53968 0.59228 lineto 0.55953 0.59659 lineto 0.57937 0.60018 lineto 0.59921 0.60314 lineto 0.61905 0.60559 lineto 0.63889 0.60761 lineto 0.65873 0.60928 lineto 0.67857 0.61066 lineto 0.69841 0.6118 lineto 0.71826 0.61275 lineto 0.7381 0.61354 lineto 0.77778 0.61475 lineto 0.81746 0.6156 lineto 0.85714 0.61621 lineto 0.89683 0.61665 lineto 0.93651 0.61697 lineto 0.97619 0.61721 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 176}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToHp[ChebychevLp[3,3],1000]],\n\t\ 2000,{PlotRange->{0,-50}}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.618034 0.0123607 [ [(500)] 0.2619 0.61803 0 2 Msboxa [(1000)] 0.5 0.61803 0 2 Msboxa [(1500)] 0.7381 0.61803 0 2 Msboxa [(2000)] 0.97619 0.61803 0 2 Msboxa [( Hz)] 1.025 0.61803 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0 1 0 Msboxa [(-40)] 0.01131 0.12361 1 0 Msboxa [(-30)] 0.01131 0.24721 1 0 Msboxa [(-20)] 0.01131 0.37082 1 0 Msboxa [(-10)] 0.01131 0.49443 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.62528 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.61803 moveto 0.2619 0.62428 lineto stroke grestore [(500)] 0.2619 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.61803 moveto 0.5 0.62428 lineto stroke grestore [(1000)] 0.5 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.61803 moveto 0.7381 0.62428 lineto stroke grestore [(1500)] 0.7381 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.61803 moveto 0.97619 0.62428 lineto stroke grestore [(2000)] 0.97619 0.61803 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.61803 moveto 0.07143 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.61803 moveto 0.11905 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.61803 moveto 0.16667 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.61803 moveto 0.21429 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.61803 moveto 0.30952 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.61803 moveto 0.35714 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.61803 moveto 0.40476 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.61803 moveto 0.45238 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.61803 moveto 0.54762 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.61803 moveto 0.59524 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.61803 moveto 0.64286 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.61803 moveto 0.69048 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.61803 moveto 0.78571 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.61803 moveto 0.83333 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.61803 moveto 0.88095 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.61803 moveto 0.92857 0.62178 lineto stroke grestore [( Hz)] 1.025 0.61803 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.61803 moveto 1 0.61803 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.03006 0 lineto stroke grestore [(-50)] 0.01131 0 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12361 moveto 0.03006 0.12361 lineto stroke grestore [(-40)] 0.01131 0.12361 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24721 moveto 0.03006 0.24721 lineto stroke grestore [(-30)] 0.01131 0.24721 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.37082 moveto 0.03006 0.37082 lineto stroke grestore [(-20)] 0.01131 0.37082 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49443 moveto 0.03006 0.49443 lineto stroke grestore [(-10)] 0.01131 0.49443 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02472 moveto 0.02756 0.02472 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04944 moveto 0.02756 0.04944 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07416 moveto 0.02756 0.07416 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09889 moveto 0.02756 0.09889 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14833 moveto 0.02756 0.14833 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17305 moveto 0.02756 0.17305 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19777 moveto 0.02756 0.19777 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22249 moveto 0.02756 0.22249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27193 moveto 0.02756 0.27193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29666 moveto 0.02756 0.29666 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32138 moveto 0.02756 0.32138 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3461 moveto 0.02756 0.3461 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39554 moveto 0.02756 0.39554 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42026 moveto 0.02756 0.42026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44498 moveto 0.02756 0.44498 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46971 moveto 0.02756 0.46971 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51915 moveto 0.02756 0.51915 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54387 moveto 0.02756 0.54387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56859 moveto 0.02756 0.56859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59331 moveto 0.02756 0.59331 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.13451 0 moveto 0.14286 0.0281 lineto stroke 0.14286 0.0281 moveto 0.18254 0.12494 lineto 0.22223 0.20243 lineto 0.26191 0.26841 lineto 0.30159 0.32725 lineto 0.34127 0.38173 lineto 0.38096 0.43386 lineto 0.42064 0.48501 lineto 0.46032 0.5353 lineto 0.48016 0.55923 lineto 0.5 0.58095 lineto 0.50992 0.59046 lineto 0.51984 0.59875 lineto 0.52976 0.60562 lineto 0.53968 0.61094 lineto 0.54465 0.613 lineto 0.54961 0.61468 lineto 0.55457 0.616 lineto 0.55705 0.61652 lineto 0.55953 0.61696 lineto 0.56201 0.61732 lineto 0.56449 0.6176 lineto 0.56573 0.61771 lineto 0.56697 0.61781 lineto 0.56821 0.61788 lineto 0.56945 0.61795 lineto 0.57069 0.61799 lineto 0.57193 0.61802 lineto 0.57317 0.61803 lineto 0.57441 0.61803 lineto 0.57565 0.61802 lineto 0.57689 0.61799 lineto 0.57813 0.61794 lineto 0.57937 0.61789 lineto 0.58185 0.61774 lineto 0.58433 0.61754 lineto 0.58929 0.61703 lineto 0.59921 0.61561 lineto 0.61905 0.61179 lineto 0.65873 0.60334 lineto 0.69841 0.59617 lineto 0.7381 0.5908 lineto 0.75794 0.58872 lineto 0.77778 0.58699 lineto 0.79762 0.58555 lineto 0.81746 0.58438 lineto 0.8373 0.58343 lineto 0.85714 0.58267 lineto 0.87698 0.58208 lineto 0.89683 0.58164 lineto Mistroke 0.90675 0.58146 lineto 0.91667 0.58132 lineto 0.92659 0.5812 lineto 0.93651 0.58111 lineto 0.94147 0.58107 lineto 0.94643 0.58104 lineto 0.95139 0.58101 lineto 0.95635 0.58099 lineto 0.95883 0.58098 lineto 0.96131 0.58097 lineto 0.96379 0.58097 lineto 0.96627 0.58096 lineto 0.96875 0.58096 lineto 0.96999 0.58096 lineto 0.97123 0.58095 lineto 0.97247 0.58095 lineto 0.97371 0.58095 lineto 0.97495 0.58095 lineto 0.97619 0.58095 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 176}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Bandpass filters are more difficult to design. A low pass filter is \ transformed into a bandpass by specifying the location of the two corner \ frequencies. We make this transform by subsituting the following expression \ for s into the normalized low pass filter"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ S = (s^2 + w0^2)/(B s)\ \>", "\<\ 2 2 s + w0 S = -------- B s\ \>"], "Input", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox[ "In these expressions B is the difference (in radians) between the two \ edges of the passband and w0 is the geometric mean of the freqencies at the \ edges of the passband. The function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["BpTransform", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " is used to transform a single root of the normalized filter into two new \ roots due to the substitution above.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "BpTransform[roots_,w0_,B_] :=\n\tN[Flatten[Map[{B # / 2 + \ Sqrt[B^2#^2-4w0^2]/2,\n\t\t\t\t\tB # / 2 - Sqrt[B^2#^2-4w0^2]/2}&,\n\t\t\t\t\t\ roots]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"BpTransform"], Cell[CellGroupData[{ Cell[TextData[ "BpTransform[ButterworthPoles[3],\n\t\t\t2Pi Sqrt[1000 2000],\n\t\t\t2Pi \ 1000]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {-1104.803001493814183 - 6450.385250965142045*I, -2036.789652095979052 + 11891.7833436677956*I, -3141.592653589793238 + 8311.87288206608164*I, -3141.592653589793238 - 8311.87288206608164*I, -1104.803001493814183 + 6450.385250965142045*I, -2036.789652095979052 - 11891.7833436677956*I}\ \>", "\<\ {-1104.8 - 6450.39 I, -2036.79 + 11891.8 I, -3141.59 + 8311.87 I, -3141.59 - 8311.87 I, -1104.8 + 6450.39 I, -2036.79 - 11891.8 I}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "LpToBp[{gain_, zeros_, poles_}, fp1_, fp2_] :=\t\n\tBlock[{w0, B, RootDiff, \ ExcessPoles, ExcessZeros},\n\t\tw0 = 2 Pi Sqrt[fp1 fp2];\n\t\tB = 2 Pi (fp2 - \ fp1);\n\t\tRootDiff = Length[zeros] - Length[poles];\n\t\tIf[RootDiff > 0,\n\t\ \t\t\t\tExcessZeros = RootDiff;\n\t\t\t\t\tExcessPoles = 0,\n\t\t\t\t\ ExcessPoles = -RootDiff;\n\t\t\t\tExcessZeros = 0];\n\t\t{gain/B^RootDiff,\n\t\ \t Join[BpTransform[zeros,w0,B],\n\t\t \t\tTable[0,{ExcessPoles}]],\n\t\t \ Join[BpTransform[poles,w0,B],\n\t\t \t\tTable[0,{ExcessZeros}]]}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"LpToBp"], Cell[CellGroupData[{ Cell[TextData["LpToBp[ButterworthLp[3,3],1000,2000]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {2.486399014803490112*10^11 + 0.*I, {0, 0, 0}, {-1105.332060357944807 - 6448.693546679359194*I, -2038.748118495865664 + 11894.40015952440178*I, -3144.080178853810474 + 8310.932260441872962*I, -3144.080178853810474 - 8310.932260441872962*I, -1105.332060357944807 + 6448.693546679359194*I, -2038.748118495865664 - 11894.40015952440178*I}}\ \>", "\<\ 11 {2.4864 10 + 0. I, {0, 0, 0}, {-1105.33 - 6448.69 I, -2038.75 + 11894.4 I, -3144.08 + 8310.93 I, -3144.08 - 8310.93 I, -1105.33 + 6448.69 I, -2038.75 - 11894.4 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\t\ FilterFromGZP[LpToBp[ChebychevLp[3,3],1000,2000]],\n\t4000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238095 0.603319 0.00783756 [ [(1000)] 0.2619 0.60332 0 2 Msboxa [(2000)] 0.5 0.60332 0 2 Msboxa [(3000)] 0.7381 0.60332 0 2 Msboxa [(4000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-70)] 0.01131 0.05469 1 0 Msboxa [(-60)] 0.01131 0.13307 1 0 Msboxa [(-50)] 0.01131 0.21144 1 0 Msboxa [(-40)] 0.01131 0.28982 1 0 Msboxa [(-30)] 0.01131 0.36819 1 0 Msboxa [(-20)] 0.01131 0.44657 1 0 Msboxa [(-10)] 0.01131 0.52494 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(1000)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(2000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(3000)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(4000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.05469 moveto 0.03006 0.05469 lineto stroke grestore [(-70)] 0.01131 0.05469 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.13307 moveto 0.03006 0.13307 lineto stroke grestore [(-60)] 0.01131 0.13307 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.21144 moveto 0.03006 0.21144 lineto stroke grestore [(-50)] 0.01131 0.21144 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.28982 moveto 0.03006 0.28982 lineto stroke grestore [(-40)] 0.01131 0.28982 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36819 moveto 0.03006 0.36819 lineto stroke grestore [(-30)] 0.01131 0.36819 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.44657 moveto 0.03006 0.44657 lineto stroke grestore [(-20)] 0.01131 0.44657 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.52494 moveto 0.03006 0.52494 lineto stroke grestore [(-10)] 0.01131 0.52494 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.07036 moveto 0.02756 0.07036 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08604 moveto 0.02756 0.08604 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10171 moveto 0.02756 0.10171 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.11739 moveto 0.02756 0.11739 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14874 moveto 0.02756 0.14874 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16442 moveto 0.02756 0.16442 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18009 moveto 0.02756 0.18009 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19577 moveto 0.02756 0.19577 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22712 moveto 0.02756 0.22712 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24279 moveto 0.02756 0.24279 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25847 moveto 0.02756 0.25847 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27414 moveto 0.02756 0.27414 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.30549 moveto 0.02756 0.30549 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32117 moveto 0.02756 0.32117 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33684 moveto 0.02756 0.33684 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35252 moveto 0.02756 0.35252 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38387 moveto 0.02756 0.38387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39954 moveto 0.02756 0.39954 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41522 moveto 0.02756 0.41522 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43089 moveto 0.02756 0.43089 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46224 moveto 0.02756 0.46224 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47792 moveto 0.02756 0.47792 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49359 moveto 0.02756 0.49359 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50927 moveto 0.02756 0.50927 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54062 moveto 0.02756 0.54062 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55629 moveto 0.02756 0.55629 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57197 moveto 0.02756 0.57197 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58764 moveto 0.02756 0.58764 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.03901 moveto 0.02756 0.03901 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.02334 moveto 0.02756 0.02334 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.00766 moveto 0.02756 0.00766 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.06269 0 moveto 0.06349 0.00485 lineto stroke 0.06349 0.00485 moveto 0.08334 0.09177 lineto 0.10318 0.15647 lineto 0.14286 0.25756 lineto 0.18254 0.34614 lineto 0.20238 0.39172 lineto 0.22222 0.44195 lineto 0.24207 0.50232 lineto 0.25199 0.53927 lineto 0.25695 0.55962 lineto 0.26191 0.57981 lineto 0.26439 0.58877 lineto 0.26563 0.59266 lineto 0.26687 0.59603 lineto 0.26811 0.5988 lineto 0.26935 0.60091 lineto 0.27059 0.60235 lineto 0.27183 0.60313 lineto 0.27307 0.60331 lineto 0.27431 0.60298 lineto 0.27555 0.60224 lineto 0.27679 0.60118 lineto 0.27927 0.59846 lineto 0.28175 0.5954 lineto 0.28671 0.58957 lineto 0.28919 0.58711 lineto 0.29167 0.58502 lineto 0.29415 0.58331 lineto 0.29663 0.58196 lineto 0.29787 0.58142 lineto 0.29911 0.58096 lineto 0.30035 0.58058 lineto 0.30159 0.58028 lineto 0.30283 0.58006 lineto 0.30407 0.57991 lineto 0.30531 0.57982 lineto 0.30655 0.57981 lineto 0.30779 0.57986 lineto 0.30903 0.57997 lineto 0.31027 0.58014 lineto 0.31151 0.58036 lineto 0.31399 0.58097 lineto 0.31647 0.58178 lineto 0.32143 0.58392 lineto 0.33135 0.58972 lineto 0.34127 0.59625 lineto 0.34623 0.59917 lineto 0.34871 0.60042 lineto 0.35119 0.60147 lineto 0.35367 0.60231 lineto Mistroke 0.35491 0.60264 lineto 0.35615 0.60291 lineto 0.35739 0.60311 lineto 0.35863 0.60324 lineto 0.35987 0.60331 lineto 0.36111 0.60331 lineto 0.36235 0.60325 lineto 0.36359 0.60312 lineto 0.36483 0.60293 lineto 0.36607 0.60268 lineto 0.36855 0.60201 lineto 0.37103 0.60113 lineto 0.38095 0.59625 lineto 0.39087 0.5906 lineto 0.4008 0.58557 lineto 0.40576 0.58355 lineto 0.41072 0.58192 lineto 0.41568 0.58074 lineto 0.41816 0.58032 lineto 0.4194 0.58016 lineto 0.42064 0.58003 lineto 0.42188 0.57993 lineto 0.42312 0.57985 lineto 0.42436 0.57981 lineto 0.4256 0.57981 lineto 0.42684 0.57983 lineto 0.42808 0.57989 lineto 0.42932 0.57998 lineto 0.43056 0.5801 lineto 0.43304 0.58045 lineto 0.43552 0.58093 lineto 0.438 0.58155 lineto 0.44048 0.58231 lineto 0.44544 0.58425 lineto 0.4504 0.58675 lineto 0.46032 0.59318 lineto 0.46528 0.59679 lineto 0.47024 0.60017 lineto 0.47272 0.60156 lineto 0.47396 0.60214 lineto 0.4752 0.60262 lineto 0.47644 0.60299 lineto 0.47768 0.60322 lineto 0.47892 0.60332 lineto 0.48016 0.60325 lineto 0.4814 0.60302 lineto 0.48264 0.60261 lineto 0.48388 0.60202 lineto 0.48512 0.60124 lineto 0.4876 0.59912 lineto Mistroke 0.49008 0.59629 lineto 0.49504 0.58885 lineto 0.5 0.5798 lineto 0.53968 0.50764 lineto 0.55952 0.48053 lineto 0.57937 0.45781 lineto 0.61905 0.42103 lineto 0.65873 0.39172 lineto 0.69841 0.36723 lineto 0.7381 0.34614 lineto 0.77778 0.32756 lineto 0.81746 0.31095 lineto 0.85714 0.29589 lineto 0.89683 0.2821 lineto 0.93651 0.26938 lineto 0.97619 0.25756 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "We transform a low pass filter into a bandreject filter by specifying the \ width and the geometric mean frequency of the rejection band. We make this \ transform by subsituting the following expression for s into the normalized \ low pass filter"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ S = (B s)/(s^2 + w0^2)\ \>", "\<\ B s S = -------- 2 2 s + w0\ \>"], "Input", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "Again in these expressions B is the difference (in radians) between the two \ edges of the passband and w0 is the geometric mean of the freqencies at the \ edges of the passband."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox[ "Two functions are defined here to make the transformation easier. First \ the function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["BrTransform", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " is used to take a single root and apply the above transformation to \ create two new roots. Second the function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["BrExtraRoots", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " is used provide the extra roots for either the numerator or the \ denominator due to the following term. ", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ s^2+w0^2\ \>", "\<\ 2 2 s + w0\ \>"], "Input", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "BrTransform[roots_,w0_,B_] :=\n\tN[Flatten[Map[{(B+Sqrt[B^2 - 4 #^2 \ w0^2])/(2#),\n\t\t\t\t\t(B-Sqrt[B^2 - 4 #^2 w0^2])/(2#)}&,\n\t\t\t\t\t\ roots]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"BrTransform"], Cell[TextData[ "BrExtraRoots[w0_, num_] :=\n\tFlatten[Table[{w0 I,-w0 I},{num}]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"BrExtraRoots"], Cell[TextData[ "LpToBr[{gain_, zeros_, poles_}, fp1_, fp2_] :=\n\tBlock[{w0, B, RootDiff, \ ExcessPoles, ExcessZeros},\n\t\tw0 = 2 Pi Sqrt[fp1 fp2];\n\t\tB = 2 Pi (fp2 - \ fp1);\n\t\tRootDiff = Length[zeros] - Length[poles];\n\t\tIf[RootDiff > 0,\n\t\ \t\t\t\tExcessZeros = RootDiff;\n\t\t\t\t\tExcessPoles = 0,\n\t\t\t\t\ ExcessPoles = -RootDiff;\n\t\t\t\tExcessZeros = 0];\n\t\t\ {gain*Apply[Times,Map[-#&,zeros]]/\n\t\t\t\tApply[Times,Map[-#&,poles]],\n\t\t\ Join[BrTransform[zeros,w0,B],\n\t\t \t\tBrExtraRoots[w0,ExcessPoles]],\n\t\t \ Join[BrTransform[poles,w0,B],\n\t\t \t\tBrExtraRoots[w0,ExcessZeros]]}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"LpToBr"], Cell[CellGroupData[{ Cell[TextData["LpToBr[ButterworthLp[3,3],1000,2000]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1. + 0.*I, {8885.765876316732494*I, -8885.765876316732494*I, 8885.765876316732494*I, -8885.765876316732494*I, 8885.765876316732494*I, -8885.765876316732494*I}, {-2034.833226824389601 - 11889.16899242038357*I, -1104.273869575222665 + 6452.076011056241594*I, -3139.107096399612268 - 8312.81190969989795*I, -3139.107096399612268 + 8312.81190969989795*I, -2034.833226824389601 + 11889.16899242038357*I, -1104.273869575222665 - 6452.076011056241594*I}}\ \>", "\<\ {1. + 0. I, {8885.77 I, -8885.77 I, 8885.77 I, -8885.77 I, 8885.77 I, -8885.77 I}, {-2034.83 - 11889.2 I, -1104.27 + 6452.08 I, -3139.11 - 8312.81 I, -3139.11 + 8312.81 I, -2034.83 + 11889.2 I, -1104.27 - 6452.08 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\t\ FilterFromGZP[LpToBr[ButterworthLp[3,3],1000,2000]],4000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238095 0.603319 0.0118412 [ [(1000)] 0.2619 0.60332 0 2 Msboxa [(2000)] 0.5 0.60332 0 2 Msboxa [(3000)] 0.7381 0.60332 0 2 Msboxa [(4000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0.01126 1 0 Msboxa [(-40)] 0.01131 0.12967 1 0 Msboxa [(-30)] 0.01131 0.24808 1 0 Msboxa [(-20)] 0.01131 0.36649 1 0 Msboxa [(-10)] 0.01131 0.48491 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(1000)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(2000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(3000)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(4000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.01126 moveto 0.03006 0.01126 lineto stroke grestore [(-50)] 0.01131 0.01126 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12967 moveto 0.03006 0.12967 lineto stroke grestore [(-40)] 0.01131 0.12967 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24808 moveto 0.03006 0.24808 lineto stroke grestore [(-30)] 0.01131 0.24808 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36649 moveto 0.03006 0.36649 lineto stroke grestore [(-20)] 0.01131 0.36649 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.48491 moveto 0.03006 0.48491 lineto stroke grestore [(-10)] 0.01131 0.48491 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.03494 moveto 0.02756 0.03494 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05862 moveto 0.02756 0.05862 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08231 moveto 0.02756 0.08231 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10599 moveto 0.02756 0.10599 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15335 moveto 0.02756 0.15335 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17704 moveto 0.02756 0.17704 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.20072 moveto 0.02756 0.20072 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2244 moveto 0.02756 0.2244 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27177 moveto 0.02756 0.27177 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29545 moveto 0.02756 0.29545 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.31913 moveto 0.02756 0.31913 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34281 moveto 0.02756 0.34281 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39018 moveto 0.02756 0.39018 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41386 moveto 0.02756 0.41386 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43754 moveto 0.02756 0.43754 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46122 moveto 0.02756 0.46122 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50859 moveto 0.02756 0.50859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53227 moveto 0.02756 0.53227 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55595 moveto 0.02756 0.55595 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57964 moveto 0.02756 0.57964 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.60332 moveto 0.02505 0.60332 lineto 0.02629 0.60332 lineto 0.02753 0.60332 lineto 0.02877 0.60332 lineto 0.03001 0.60332 lineto 0.03125 0.60332 lineto 0.03249 0.60332 lineto 0.03373 0.60332 lineto 0.03497 0.60332 lineto 0.03621 0.60332 lineto 0.03745 0.60332 lineto 0.03869 0.60332 lineto 0.03993 0.60332 lineto 0.04117 0.60332 lineto 0.04241 0.60332 lineto 0.04365 0.60332 lineto 0.04489 0.60332 lineto 0.04613 0.60332 lineto 0.04737 0.60332 lineto 0.04861 0.60332 lineto 0.04985 0.60332 lineto 0.05109 0.60332 lineto 0.05233 0.60332 lineto 0.05357 0.60332 lineto 0.05481 0.60332 lineto 0.05605 0.60332 lineto 0.05729 0.60332 lineto 0.05853 0.60332 lineto 0.06101 0.60332 lineto 0.06349 0.60332 lineto 0.06597 0.60332 lineto 0.06845 0.60332 lineto 0.07093 0.60332 lineto 0.07341 0.60332 lineto 0.0759 0.60332 lineto 0.07838 0.60332 lineto 0.08086 0.60332 lineto 0.08334 0.60332 lineto 0.0883 0.60332 lineto 0.09078 0.60332 lineto 0.09326 0.60332 lineto 0.09574 0.60332 lineto 0.09822 0.60332 lineto 0.1007 0.60332 lineto 0.10318 0.60332 lineto 0.10566 0.60332 lineto 0.10814 0.60332 lineto 0.1131 0.60332 lineto 0.11806 0.60331 lineto Mistroke 0.12302 0.60331 lineto 0.12798 0.60331 lineto 0.13294 0.6033 lineto 0.1379 0.6033 lineto 0.14286 0.60329 lineto 0.14782 0.60328 lineto 0.15278 0.60327 lineto 0.15774 0.60325 lineto 0.1627 0.60322 lineto 0.16766 0.60319 lineto 0.17262 0.60314 lineto 0.17758 0.60308 lineto 0.18254 0.603 lineto 0.1875 0.60289 lineto 0.19246 0.60275 lineto 0.19742 0.60256 lineto 0.20238 0.6023 lineto 0.20734 0.60195 lineto 0.2123 0.60147 lineto 0.21726 0.60083 lineto 0.22222 0.59997 lineto 0.22718 0.59879 lineto 0.23214 0.5972 lineto 0.23711 0.59505 lineto 0.24207 0.59214 lineto 0.24703 0.58825 lineto 0.25199 0.5831 lineto 0.25695 0.57638 lineto 0.26191 0.56779 lineto 0.27183 0.54402 lineto 0.28175 0.51073 lineto 0.29167 0.4681 lineto 0.30159 0.41637 lineto 0.31151 0.35458 lineto 0.32143 0.27953 lineto 0.33135 0.18397 lineto 0.33631 0.12391 lineto 0.34127 0.05068 lineto Mfstroke 0.34394 0 moveto 0.34127 0.05068 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.37795 0 moveto 0.38095 0.05073 lineto stroke 0.38095 0.05073 moveto 0.39087 0.16879 lineto 0.4008 0.25211 lineto 0.41072 0.31617 lineto 0.42064 0.36788 lineto 0.44048 0.44708 lineto 0.4504 0.47778 lineto 0.46032 0.50367 lineto 0.47024 0.5252 lineto 0.48016 0.54278 lineto 0.49008 0.55682 lineto 0.5 0.5678 lineto 0.50992 0.57623 lineto 0.51984 0.58263 lineto 0.52976 0.58745 lineto 0.53968 0.59107 lineto 0.5496 0.59379 lineto 0.55952 0.59584 lineto 0.56945 0.5974 lineto 0.57937 0.5986 lineto 0.58929 0.59952 lineto 0.59921 0.60023 lineto 0.60913 0.6008 lineto 0.61905 0.60124 lineto 0.62897 0.6016 lineto 0.63889 0.60188 lineto 0.64881 0.60211 lineto 0.65873 0.6023 lineto 0.67857 0.60258 lineto 0.68849 0.60268 lineto 0.69841 0.60277 lineto 0.71825 0.60291 lineto 0.7381 0.603 lineto 0.75794 0.60307 lineto 0.77778 0.60313 lineto 0.79762 0.60317 lineto 0.81746 0.6032 lineto 0.8373 0.60322 lineto 0.85714 0.60324 lineto 0.87698 0.60325 lineto 0.89683 0.60326 lineto 0.91667 0.60327 lineto 0.93651 0.60328 lineto 0.97619 0.60329 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToBr[ChebychevLp[3,3],1000,2000]]\ \n\t,4000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238095 0.603319 0.00778537 [ [(1000)] 0.2619 0.60332 0 2 Msboxa [(2000)] 0.5 0.60332 0 2 Msboxa [(3000)] 0.7381 0.60332 0 2 Msboxa [(4000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-70)] 0.01131 0.05834 1 0 Msboxa [(-60)] 0.01131 0.1362 1 0 Msboxa [(-50)] 0.01131 0.21405 1 0 Msboxa [(-40)] 0.01131 0.2919 1 0 Msboxa [(-30)] 0.01131 0.36976 1 0 Msboxa [(-20)] 0.01131 0.44761 1 0 Msboxa [(-10)] 0.01131 0.52547 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(1000)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(2000)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(3000)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(4000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.05834 moveto 0.03006 0.05834 lineto stroke grestore [(-70)] 0.01131 0.05834 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.1362 moveto 0.03006 0.1362 lineto stroke grestore [(-60)] 0.01131 0.1362 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.21405 moveto 0.03006 0.21405 lineto stroke grestore [(-50)] 0.01131 0.21405 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.2919 moveto 0.03006 0.2919 lineto stroke grestore [(-40)] 0.01131 0.2919 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36976 moveto 0.03006 0.36976 lineto stroke grestore [(-30)] 0.01131 0.36976 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.44761 moveto 0.03006 0.44761 lineto stroke grestore [(-20)] 0.01131 0.44761 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.52547 moveto 0.03006 0.52547 lineto stroke grestore [(-10)] 0.01131 0.52547 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.07391 moveto 0.02756 0.07391 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08948 moveto 0.02756 0.08948 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10506 moveto 0.02756 0.10506 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12063 moveto 0.02756 0.12063 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15177 moveto 0.02756 0.15177 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16734 moveto 0.02756 0.16734 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18291 moveto 0.02756 0.18291 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19848 moveto 0.02756 0.19848 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22962 moveto 0.02756 0.22962 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24519 moveto 0.02756 0.24519 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26076 moveto 0.02756 0.26076 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27633 moveto 0.02756 0.27633 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.30747 moveto 0.02756 0.30747 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32305 moveto 0.02756 0.32305 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33862 moveto 0.02756 0.33862 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35419 moveto 0.02756 0.35419 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38533 moveto 0.02756 0.38533 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4009 moveto 0.02756 0.4009 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41647 moveto 0.02756 0.41647 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43204 moveto 0.02756 0.43204 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46318 moveto 0.02756 0.46318 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47875 moveto 0.02756 0.47875 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49432 moveto 0.02756 0.49432 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50989 moveto 0.02756 0.50989 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54104 moveto 0.02756 0.54104 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55661 moveto 0.02756 0.55661 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57218 moveto 0.02756 0.57218 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58775 moveto 0.02756 0.58775 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04277 moveto 0.02756 0.04277 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.0272 moveto 0.02756 0.0272 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01163 moveto 0.02756 0.01163 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.60332 moveto 0.02505 0.60332 lineto 0.02629 0.60331 lineto 0.02753 0.6033 lineto 0.02877 0.60329 lineto 0.03125 0.60324 lineto 0.03373 0.60319 lineto 0.03621 0.60311 lineto 0.03869 0.60302 lineto 0.04365 0.6028 lineto 0.05357 0.60215 lineto 0.06349 0.60126 lineto 0.08334 0.59881 lineto 0.10318 0.5956 lineto 0.14286 0.58784 lineto 0.1627 0.58397 lineto 0.17262 0.5823 lineto 0.17758 0.58157 lineto 0.18254 0.58095 lineto 0.18502 0.58068 lineto 0.1875 0.58045 lineto 0.18998 0.58026 lineto 0.19122 0.58018 lineto 0.19246 0.58011 lineto 0.1937 0.58005 lineto 0.19494 0.58001 lineto 0.19618 0.57998 lineto 0.19742 0.57997 lineto 0.19866 0.57996 lineto 0.1999 0.57998 lineto 0.20114 0.58001 lineto 0.20238 0.58006 lineto 0.20362 0.58013 lineto 0.20486 0.58021 lineto 0.20734 0.58045 lineto 0.20982 0.58078 lineto 0.2123 0.58121 lineto 0.21726 0.58242 lineto 0.21974 0.58322 lineto 0.22222 0.58418 lineto 0.22718 0.58661 lineto 0.23214 0.58983 lineto 0.23711 0.59386 lineto 0.24207 0.59842 lineto 0.24455 0.6006 lineto 0.24579 0.60156 lineto 0.24703 0.60237 lineto 0.24827 0.60296 lineto 0.24951 0.60328 lineto 0.25075 0.60326 lineto Mistroke 0.25199 0.6028 lineto 0.25323 0.60186 lineto 0.25447 0.60037 lineto 0.25571 0.59831 lineto 0.25695 0.59566 lineto 0.25943 0.58872 lineto 0.26191 0.57996 lineto 0.30159 0.4047 lineto 0.31151 0.35725 lineto 0.32143 0.30326 lineto 0.33135 0.2373 lineto 0.33631 0.19668 lineto 0.34127 0.14765 lineto 0.34623 0.08495 lineto 0.34871 0.04525 lineto Mfstroke 0.35101 0 moveto 0.34871 0.04525 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.37037 0 moveto 0.37103 0.01455 lineto stroke 0.37103 0.01455 moveto 0.37599 0.09203 lineto 0.38095 0.14768 lineto 0.39087 0.22699 lineto 0.4008 0.2841 lineto 0.42064 0.36715 lineto 0.46032 0.48437 lineto 0.48016 0.53481 lineto 0.49008 0.5587 lineto 0.5 0.57997 lineto 0.50496 0.58864 lineto 0.50744 0.59229 lineto 0.50992 0.59542 lineto 0.5124 0.59801 lineto 0.51488 0.60004 lineto 0.51736 0.60155 lineto 0.5186 0.60211 lineto 0.51984 0.60256 lineto 0.52108 0.60289 lineto 0.52232 0.60313 lineto 0.52356 0.60327 lineto 0.5248 0.60332 lineto 0.52604 0.60329 lineto 0.52728 0.60319 lineto 0.52852 0.60303 lineto 0.52976 0.60281 lineto 0.53968 0.59979 lineto 0.5496 0.59598 lineto 0.55952 0.59243 lineto 0.56945 0.58944 lineto 0.57937 0.58702 lineto 0.58929 0.58511 lineto 0.59921 0.58363 lineto 0.60913 0.58249 lineto 0.61905 0.58163 lineto 0.62897 0.581 lineto 0.63393 0.58075 lineto 0.63889 0.58055 lineto 0.64385 0.58038 lineto 0.64881 0.58024 lineto 0.65377 0.58014 lineto 0.65625 0.5801 lineto 0.65873 0.58006 lineto 0.66121 0.58003 lineto 0.66369 0.58001 lineto 0.66617 0.57999 lineto 0.66741 0.57998 lineto 0.66865 0.57997 lineto 0.66989 0.57997 lineto 0.67113 0.57997 lineto Mistroke 0.67237 0.57996 lineto 0.67361 0.57996 lineto 0.67485 0.57996 lineto 0.67609 0.57996 lineto 0.67733 0.57997 lineto 0.67857 0.57997 lineto 0.68105 0.57998 lineto 0.68353 0.57999 lineto 0.68849 0.58003 lineto 0.69345 0.58008 lineto 0.69841 0.58014 lineto 0.71825 0.58049 lineto 0.7381 0.58095 lineto 0.77778 0.58206 lineto 0.81746 0.58327 lineto 0.85714 0.5845 lineto 0.89683 0.58568 lineto 0.93651 0.58679 lineto 0.97619 0.58784 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[ " 1.3.6 - DeCarlo\[CloseCurlyQuote]s Test Cases"], "Subsubsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"DeCarlo s Test Cases"], Cell[TextData[ "Most of the above sections came from the EE445 course at Purdue University \ taught by Prof. Ray DeCarlo. It seems only right to check the results of this \ notebook using his test cases."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "Design an 8th order Butterworth filter with Amax is 1 dB, whose DC gain is 1 \ (absolute) and whose cutoff frequency is 1500 Hz."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["ButterworthLp[8,1]"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ {1.965226728360271937 - 2.710505431213761085*10^-20*I, {}, {-0.2122815785088832999 + 1.067211563088522723*I, -0.604526789535973542 + 0.9047382769052052496*I, -0.9047382769052052489 + 0.604526789535973543*I, -1.067211563088522723 + 0.2122815785088833009*I, -1.067211563088522723 - 0.2122815785088833009*I, -0.9047382769052052489 - 0.604526789535973543*I, -0.604526789535973542 - 0.9047382769052052496*I, -0.2122815785088832999 - 1.067211563088522723*I}}\ \>", "\<\ -20 {1.96523 - 2.71051 10 I, {}, {-0.212282 + 1.06721 I, -0.604527 + 0.904738 I, -0.904738 + 0.604527 I, -1.06721 + 0.212282 I, -1.06721 - 0.212282 I, -0.904738 - 0.604527 I, -0.604527 - 0.904738 I, -0.212282 - 1.06721 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData["Now check the gain constant"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["dB[Abs[First[ButterworthLp[8,1]]]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 5.868253243801155087\ \>", "\<\ 5.86825\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["LpToLp[ButterworthLp[8,1],1500]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1.223437199774778144*10^32 - 1.687404881524981362*10^12*I, {}, {-2000.706742607858129 + 10058.23201927494942*I, -5697.530762713312714 + 8526.957372440642723*I, -8526.957372440642717 + 5697.530762713312724*I, -10058.23201927494942 + 2000.706742607858139*I, -10058.23201927494942 - 2000.706742607858139*I, -8526.957372440642717 - 5697.530762713312724*I, -5697.530762713312714 - 8526.957372440642723*I, -2000.706742607858129 - 10058.23201927494942*I}}\ \>", "\<\ 32 12 {1.22344 10 - 1.6874 10 I, {}, {-2000.71 + 10058.2 I, -5697.53 + 8526.96 I, -8526.96 + 5697.53 I, -10058.2 + 2000.71 I, -10058.2 - 2000.71 I, -8526.96 - 5697.53 I, -5697.53 - 8526.96 I, -2000.71 - 10058.2 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["dB[Abs[First[LpToLp[ButterworthLp[8,1],1500]]]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 641.7516336300085617\ \>", "\<\ 641.752\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToLp[ButterworthLp[8,1],1500]],\n\ \t3000,{PlotRange->All}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238063 0.000317461 0.603319 0.013916 [ [(500)] 0.18254 0.60332 0 2 Msboxa [(1000)] 0.34127 0.60332 0 2 Msboxa [(1500)] 0.5 0.60332 0 2 Msboxa [(2000)] 0.65873 0.60332 0 2 Msboxa [(2500)] 0.81746 0.60332 0 2 Msboxa [(3000)] 0.97619 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-40)] 0.01131 0.04668 1 0 Msboxa [(-30)] 0.01131 0.18584 1 0 Msboxa [(-20)] 0.01131 0.325 1 0 Msboxa [(-10)] 0.01131 0.46416 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.18254 0.60332 moveto 0.18254 0.60957 lineto stroke grestore [(500)] 0.18254 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.34127 0.60332 moveto 0.34127 0.60957 lineto stroke grestore [(1000)] 0.34127 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1500)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.65873 0.60332 moveto 0.65873 0.60957 lineto stroke grestore [(2000)] 0.65873 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.81746 0.60332 moveto 0.81746 0.60957 lineto stroke grestore [(2500)] 0.81746 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(3000)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.05555 0.60332 moveto 0.05555 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.0873 0.60332 moveto 0.0873 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11904 0.60332 moveto 0.11904 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.15079 0.60332 moveto 0.15079 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21428 0.60332 moveto 0.21428 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.24603 0.60332 moveto 0.24603 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.27778 0.60332 moveto 0.27778 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.37301 0.60332 moveto 0.37301 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.43651 0.60332 moveto 0.43651 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.46825 0.60332 moveto 0.46825 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.53174 0.60332 moveto 0.53174 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.56349 0.60332 moveto 0.56349 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.62698 0.60332 moveto 0.62698 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.72222 0.60332 moveto 0.72222 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.75397 0.60332 moveto 0.75397 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.84921 0.60332 moveto 0.84921 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.9127 0.60332 moveto 0.9127 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.94444 0.60332 moveto 0.94444 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.04668 moveto 0.03006 0.04668 lineto stroke grestore [(-40)] 0.01131 0.04668 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.18584 moveto 0.03006 0.18584 lineto stroke grestore [(-30)] 0.01131 0.18584 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.325 moveto 0.03006 0.325 lineto stroke grestore [(-20)] 0.01131 0.325 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.46416 moveto 0.03006 0.46416 lineto stroke grestore [(-10)] 0.01131 0.46416 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.07451 moveto 0.02756 0.07451 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10234 moveto 0.02756 0.10234 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.13017 moveto 0.02756 0.13017 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15801 moveto 0.02756 0.15801 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21367 moveto 0.02756 0.21367 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2415 moveto 0.02756 0.2415 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26933 moveto 0.02756 0.26933 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29717 moveto 0.02756 0.29717 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35283 moveto 0.02756 0.35283 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38066 moveto 0.02756 0.38066 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40849 moveto 0.02756 0.40849 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43633 moveto 0.02756 0.43633 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49199 moveto 0.02756 0.49199 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51982 moveto 0.02756 0.51982 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54765 moveto 0.02756 0.54765 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57549 moveto 0.02756 0.57549 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01885 moveto 0.02756 0.01885 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore gsave gsave 0.004 setlinewidth 0.02381 0.60332 moveto 0.04365 0.60332 lineto 0.04489 0.60332 lineto 0.04613 0.60332 lineto 0.04737 0.60332 lineto 0.04861 0.60332 lineto 0.04985 0.60332 lineto 0.05109 0.60332 lineto 0.05233 0.60332 lineto 0.05357 0.60332 lineto 0.05481 0.60332 lineto 0.05605 0.60332 lineto 0.05729 0.60332 lineto 0.05853 0.60332 lineto 0.05977 0.60332 lineto 0.06101 0.60332 lineto 0.06225 0.60332 lineto 0.06349 0.60332 lineto 0.06473 0.60332 lineto 0.06597 0.60332 lineto 0.06721 0.60332 lineto 0.06845 0.60332 lineto 0.06969 0.60332 lineto 0.07093 0.60332 lineto 0.07217 0.60332 lineto 0.07341 0.60332 lineto 0.07465 0.60332 lineto 0.07589 0.60332 lineto 0.07713 0.60332 lineto 0.07837 0.60332 lineto 0.07961 0.60332 lineto 0.08085 0.60332 lineto 0.08209 0.60332 lineto 0.08333 0.60332 lineto 0.08457 0.60332 lineto 0.08581 0.60332 lineto 0.08705 0.60332 lineto 0.08829 0.60332 lineto 0.08953 0.60332 lineto 0.09077 0.60332 lineto 0.09201 0.60332 lineto 0.09325 0.60332 lineto 0.09449 0.60332 lineto 0.09573 0.60332 lineto 0.09697 0.60332 lineto 0.09821 0.60332 lineto 0.09945 0.60332 lineto 0.10069 0.60332 lineto 0.10193 0.60332 lineto 0.10317 0.60332 lineto Mistroke 0.10441 0.60332 lineto 0.10565 0.60332 lineto 0.10689 0.60332 lineto 0.10813 0.60332 lineto 0.10937 0.60332 lineto 0.11062 0.60332 lineto 0.11186 0.60332 lineto 0.1131 0.60332 lineto 0.11434 0.60332 lineto 0.11558 0.60332 lineto 0.11806 0.60332 lineto 0.1193 0.60332 lineto 0.12054 0.60332 lineto 0.12178 0.60332 lineto 0.12302 0.60332 lineto 0.1255 0.60332 lineto 0.12674 0.60332 lineto 0.12798 0.60332 lineto 0.13046 0.60332 lineto 0.13294 0.60332 lineto 0.13542 0.60332 lineto 0.1379 0.60332 lineto 0.14038 0.60332 lineto 0.14286 0.60332 lineto 0.14534 0.60332 lineto 0.14782 0.60332 lineto 0.1503 0.60332 lineto 0.15278 0.60332 lineto 0.15526 0.60332 lineto 0.15774 0.60332 lineto 0.16022 0.60332 lineto 0.1627 0.60332 lineto 0.16518 0.60332 lineto 0.16766 0.60332 lineto 0.17014 0.60332 lineto 0.17262 0.60332 lineto 0.1751 0.60332 lineto 0.17758 0.60332 lineto 0.18006 0.60332 lineto 0.18254 0.60332 lineto 0.18502 0.60332 lineto 0.1875 0.60332 lineto 0.18998 0.60332 lineto 0.19246 0.60332 lineto 0.19494 0.60332 lineto 0.19742 0.60332 lineto 0.1999 0.60332 lineto 0.20238 0.60332 lineto 0.20486 0.60332 lineto 0.20734 0.60332 lineto Mistroke 0.2123 0.60332 lineto 0.21478 0.60332 lineto 0.21726 0.60332 lineto 0.21974 0.60332 lineto 0.22222 0.60332 lineto 0.22718 0.60332 lineto 0.22966 0.60332 lineto 0.23214 0.60332 lineto 0.2371 0.60332 lineto 0.24206 0.60332 lineto 0.24702 0.60332 lineto 0.25198 0.60332 lineto 0.25694 0.60332 lineto 0.2619 0.60332 lineto 0.26687 0.60332 lineto 0.27183 0.60332 lineto 0.27679 0.60332 lineto 0.28175 0.60332 lineto 0.28671 0.60332 lineto 0.29167 0.60332 lineto 0.29663 0.60332 lineto 0.30159 0.60332 lineto 0.30655 0.60332 lineto 0.31151 0.60331 lineto 0.31647 0.60331 lineto 0.32143 0.60331 lineto 0.32639 0.60331 lineto 0.33135 0.6033 lineto 0.33631 0.6033 lineto 0.34127 0.6033 lineto 0.34623 0.60329 lineto 0.35119 0.60328 lineto 0.36111 0.60326 lineto 0.36607 0.60324 lineto 0.37103 0.60322 lineto 0.37599 0.60319 lineto 0.38095 0.60316 lineto 0.39087 0.60308 lineto 0.39583 0.60302 lineto 0.40079 0.60295 lineto 0.40575 0.60286 lineto 0.41071 0.60276 lineto 0.41567 0.60263 lineto 0.42063 0.60248 lineto 0.4256 0.6023 lineto 0.43056 0.60208 lineto 0.44048 0.6015 lineto 0.4504 0.60068 lineto 0.46032 0.59955 lineto 0.47024 0.59799 lineto Mistroke 0.48016 0.59588 lineto 0.49008 0.59307 lineto 0.5 0.5894 lineto 0.50992 0.58473 lineto 0.51984 0.57891 lineto 0.53968 0.56352 lineto 0.55952 0.54319 lineto 0.57937 0.51878 lineto 0.61905 0.46297 lineto 0.65873 0.4045 lineto 0.69841 0.34729 lineto 0.7381 0.29255 lineto 0.77778 0.24047 lineto 0.81746 0.19095 lineto 0.85714 0.14381 lineto 0.89683 0.09884 lineto 0.93651 0.05587 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Design a sixth-order Chebychev filter whose Amax is 2 dB and whose DC gain \ is 1.588656 (absolute), that is the peak bandpass gain is 2 (absolute)."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["ChebychevLp[6,2]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ {0.02052405273182399596 + 0.03533278512359548854*I, {}, {-0.04697321546023343601 - 0.9817051722039066734*I, -0.1283332112322376309 - 0.7186580641064136301*I, -0.1753064266924710669 - 0.2630471080974930432*I, -0.1753064266924710669 + 0.2630471080974930432*I, -0.1283332112322376309 + 0.7186580641064136301*I, -0.04697321546023343601 + 0.9817051722039066734*I}}\ \>", "\<\ {0.0205241 + 0.0353328 I, {}, {-0.0469732 - 0.981705 I, -0.128333 - 0.718658 I, -0.175306 - 0.263047 I, -0.175306 + 0.263047 I, -0.128333 + 0.718658 I, -0.0469732 + 0.981705 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "Our filter design functions always normalize the filters so that the maximum \ gain is unity. We can get a DC gain of 1.5 by adjusting the gain of the \ filter at DC so that it is 1 (using the ContinuousAdjustGain function) and \ then multiplying by the appropriate gain constant."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\t1.588656 *\n\t\ ContinuousAdjustGain[FilterFromGZP[ChebychevLp[6,2]],\n\t\t\t\t\t\t0],2];\n\t\ "], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.47619 -0.113731 0.1191 [ [(0.5)] 0.2619 0.00537 0 2 Msboxa [(1)] 0.5 0.00537 0 2 Msboxa [(1.5)] 0.7381 0.00537 0 2 Msboxa [(2)] 0.97619 0.00537 0 2 Msboxa [( RPS)] 1.025 0.00537 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(2)] 0.01131 0.12447 1 0 Msboxa [(3)] 0.01131 0.24357 1 0 Msboxa [(4)] 0.01131 0.36267 1 0 Msboxa [(5)] 0.01131 0.48177 1 0 Msboxa [(6)] 0.01131 0.60087 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.00537 moveto 0.2619 0.01162 lineto stroke grestore [(0.5)] 0.2619 0.00537 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.00537 moveto 0.5 0.01162 lineto stroke grestore [(1)] 0.5 0.00537 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.00537 moveto 0.7381 0.01162 lineto stroke grestore [(1.5)] 0.7381 0.00537 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.00537 moveto 0.97619 0.01162 lineto stroke grestore [(2)] 0.97619 0.00537 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.00537 moveto 0.07143 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.00537 moveto 0.11905 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.00537 moveto 0.16667 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.00537 moveto 0.21429 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.00537 moveto 0.30952 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.00537 moveto 0.35714 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.00537 moveto 0.40476 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.00537 moveto 0.45238 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.00537 moveto 0.54762 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.00537 moveto 0.59524 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.00537 moveto 0.64286 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.00537 moveto 0.69048 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.00537 moveto 0.78571 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.00537 moveto 0.83333 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.00537 moveto 0.88095 0.00912 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.00537 moveto 0.92857 0.00912 lineto stroke grestore [( RPS)] 1.025 0.00537 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.00537 moveto 1 0.00537 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.12447 moveto 0.03006 0.12447 lineto stroke grestore [(2)] 0.01131 0.12447 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24357 moveto 0.03006 0.24357 lineto stroke grestore [(3)] 0.01131 0.24357 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36267 moveto 0.03006 0.36267 lineto stroke grestore [(4)] 0.01131 0.36267 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.48177 moveto 0.03006 0.48177 lineto stroke grestore [(5)] 0.01131 0.48177 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.60087 moveto 0.03006 0.60087 lineto stroke grestore [(6)] 0.01131 0.60087 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02919 moveto 0.02756 0.02919 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05301 moveto 0.02756 0.05301 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07683 moveto 0.02756 0.07683 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10065 moveto 0.02756 0.10065 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14829 moveto 0.02756 0.14829 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17211 moveto 0.02756 0.17211 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19593 moveto 0.02756 0.19593 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21975 moveto 0.02756 0.21975 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26739 moveto 0.02756 0.26739 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29121 moveto 0.02756 0.29121 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.31503 moveto 0.02756 0.31503 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33885 moveto 0.02756 0.33885 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38649 moveto 0.02756 0.38649 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41031 moveto 0.02756 0.41031 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43413 moveto 0.02756 0.43413 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45795 moveto 0.02756 0.45795 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50559 moveto 0.02756 0.50559 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52941 moveto 0.02756 0.52941 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55323 moveto 0.02756 0.55323 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57705 moveto 0.02756 0.57705 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02857 0.36581 moveto 0.03104 0.3667 lineto 0.03351 0.36796 lineto 0.03597 0.36959 lineto 0.03844 0.37158 lineto 0.04338 0.37662 lineto 0.04831 0.38307 lineto 0.05818 0.39995 lineto 0.06806 0.42167 lineto 0.0878 0.47611 lineto 0.10754 0.53576 lineto 0.11741 0.56257 lineto 0.12235 0.57418 lineto 0.12728 0.5842 lineto 0.13222 0.59233 lineto 0.13469 0.59562 lineto 0.13715 0.59835 lineto 0.13962 0.6005 lineto 0.14085 0.60135 lineto 0.14209 0.60206 lineto 0.14332 0.6026 lineto 0.14456 0.603 lineto 0.14579 0.60324 lineto 0.14702 0.60332 lineto 0.14826 0.60324 lineto 0.14949 0.60301 lineto 0.15073 0.60263 lineto 0.15196 0.60208 lineto 0.15443 0.60053 lineto 0.15689 0.59836 lineto 0.16183 0.59224 lineto 0.16677 0.58389 lineto 0.17664 0.56143 lineto 0.18651 0.53325 lineto 0.20625 0.46996 lineto 0.21612 0.43964 lineto 0.22599 0.41284 lineto 0.23586 0.39104 lineto 0.2408 0.38238 lineto 0.24573 0.37537 lineto 0.25067 0.37012 lineto 0.25314 0.36818 lineto 0.25437 0.36739 lineto 0.25561 0.36671 lineto 0.25684 0.36615 lineto 0.25807 0.36571 lineto 0.25931 0.36539 lineto 0.26054 0.36519 lineto 0.26177 0.36512 lineto 0.26301 0.36517 lineto Mistroke 0.26424 0.36534 lineto 0.26548 0.36564 lineto 0.26794 0.3666 lineto 0.26918 0.36728 lineto 0.27041 0.36807 lineto 0.27288 0.37004 lineto 0.27535 0.37252 lineto 0.28028 0.37898 lineto 0.28522 0.38744 lineto 0.29509 0.41012 lineto 0.30496 0.43978 lineto 0.3247 0.51284 lineto 0.33457 0.54982 lineto 0.33951 0.56638 lineto 0.34444 0.58069 lineto 0.34691 0.58678 lineto 0.34938 0.59203 lineto 0.35185 0.59636 lineto 0.35308 0.59816 lineto 0.35432 0.59971 lineto 0.35555 0.60098 lineto 0.35678 0.60199 lineto 0.35802 0.60272 lineto 0.35925 0.60316 lineto 0.36048 0.60332 lineto 0.36172 0.60318 lineto 0.36295 0.60275 lineto 0.36419 0.60202 lineto 0.36665 0.59967 lineto 0.36789 0.59805 lineto 0.36912 0.59614 lineto 0.37406 0.58565 lineto 0.37899 0.57094 lineto 0.38393 0.55263 lineto 0.40367 0.46064 lineto 0.41354 0.41656 lineto 0.41848 0.39809 lineto 0.42341 0.38305 lineto 0.42588 0.37704 lineto 0.42835 0.37216 lineto 0.42958 0.37017 lineto 0.43082 0.3685 lineto 0.43205 0.36715 lineto 0.43328 0.36613 lineto 0.43452 0.36546 lineto 0.43575 0.36514 lineto 0.43699 0.36519 lineto 0.43822 0.36562 lineto 0.43945 0.36643 lineto 0.44069 0.36764 lineto Mistroke 0.44192 0.36925 lineto 0.44315 0.37127 lineto 0.44562 0.37658 lineto 0.44809 0.38365 lineto 0.45303 0.40322 lineto 0.45796 0.43017 lineto 0.4629 0.46412 lineto 0.47277 0.54512 lineto 0.47524 0.56468 lineto 0.4777 0.58185 lineto 0.47894 0.58906 lineto 0.48017 0.59505 lineto 0.48141 0.59959 lineto 0.48264 0.60243 lineto 0.48387 0.60331 lineto 0.48511 0.602 lineto 0.48634 0.59824 lineto 0.48757 0.59184 lineto 0.48881 0.58262 lineto 0.49004 0.57043 lineto 0.49251 0.5369 lineto 0.49498 0.49125 lineto 0.49745 0.43431 lineto 0.50238 0.29308 lineto Mfstroke 0.51122 0 moveto 0.50238 0.29308 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The following is a third-order Chebychev filter whose Amax is .5 dB and \ whose DC gain is 1 (absolute)."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["ChebychevLp[3,.5]"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ {-0.5071676120655950488 + 0.5049738753253652789*I, {}, {-0.3132282431701372397 - 1.021927491047359915*I, -0.6264564863402744794, -0.3132282431701372397 + 1.021927491047359915*I}}\ \>", "\<\ {-0.507168 + 0.504974 I, {}, {-0.313228 - 1.02193 I, -0.626456, -0.313228 + 1.02193 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["dB[Abs[First[ChebychevLp[3,.5]]]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ -2.905455018176221013\ \>", "\<\ -2.90546\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "The next example is a third-order Butterworth filter whose Amax is 3 dB and \ whose DC gain is 1.0 (absolute.)"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["ButterworthLp[3,3]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1.002377293007600598 + 0.*I, {}, {-0.5003959019418343146 + 0.8667111260625108591*I, -1.00079180388366863, -0.5003959019418343146 - 0.8667111260625108591*I}}\ \>", "\<\ {1.00238 + 0. I, {}, {-0.500396 + 0.866711 I, -1.00079, -0.500396 - 0.866711 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["dB[Abs[First[ButterworthLp[3,3]]]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 0.02062439928300408287\ \>", "\<\ 0.0206244\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "The following is the third order Butterworth filter transformed into a \ highpass filter with a corner frequency of 1000Hz."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["LpToHp[ButterworthLp[3,3],1000]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {-1. + 0.*I, {0, 0, 0}, {-3139.107096399612265 - 5437.092981364141974*I, -6278.214192799224537, -3139.107096399612265 + 5437.092981364141974*I}}\ \>", "\<\ {-1. + 0. I, {0, 0, 0}, {-3139.11 - 5437.09 I, -6278.21, -3139.11 + 5437.09 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["dB[Abs[First[LpToHp[ButterworthLp[3,3],1000]]]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 0.\ \>", "\<\ 0.\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\tFilterFromGZP[LpToHp[ButterworthLp[3,3],1000]],\n\ \t2000,{PlotRange->{-50,0}}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.618034 0.0123607 [ [(500)] 0.2619 0.61803 0 2 Msboxa [(1000)] 0.5 0.61803 0 2 Msboxa [(1500)] 0.7381 0.61803 0 2 Msboxa [(2000)] 0.97619 0.61803 0 2 Msboxa [( Hz)] 1.025 0.61803 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0 1 0 Msboxa [(-40)] 0.01131 0.12361 1 0 Msboxa [(-30)] 0.01131 0.24721 1 0 Msboxa [(-20)] 0.01131 0.37082 1 0 Msboxa [(-10)] 0.01131 0.49443 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.62528 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.61803 moveto 0.2619 0.62428 lineto stroke grestore [(500)] 0.2619 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.61803 moveto 0.5 0.62428 lineto stroke grestore [(1000)] 0.5 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.61803 moveto 0.7381 0.62428 lineto stroke grestore [(1500)] 0.7381 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.61803 moveto 0.97619 0.62428 lineto stroke grestore [(2000)] 0.97619 0.61803 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.61803 moveto 0.07143 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.61803 moveto 0.11905 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.61803 moveto 0.16667 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.61803 moveto 0.21429 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.61803 moveto 0.30952 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.61803 moveto 0.35714 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.61803 moveto 0.40476 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.61803 moveto 0.45238 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.61803 moveto 0.54762 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.61803 moveto 0.59524 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.61803 moveto 0.64286 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.61803 moveto 0.69048 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.61803 moveto 0.78571 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.61803 moveto 0.83333 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.61803 moveto 0.88095 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.61803 moveto 0.92857 0.62178 lineto stroke grestore [( Hz)] 1.025 0.61803 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.61803 moveto 1 0.61803 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.03006 0 lineto stroke grestore [(-50)] 0.01131 0 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12361 moveto 0.03006 0.12361 lineto stroke grestore [(-40)] 0.01131 0.12361 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24721 moveto 0.03006 0.24721 lineto stroke grestore [(-30)] 0.01131 0.24721 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.37082 moveto 0.03006 0.37082 lineto stroke grestore [(-20)] 0.01131 0.37082 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49443 moveto 0.03006 0.49443 lineto stroke grestore [(-10)] 0.01131 0.49443 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02472 moveto 0.02756 0.02472 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04944 moveto 0.02756 0.04944 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07416 moveto 0.02756 0.07416 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09889 moveto 0.02756 0.09889 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14833 moveto 0.02756 0.14833 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17305 moveto 0.02756 0.17305 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19777 moveto 0.02756 0.19777 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22249 moveto 0.02756 0.22249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27193 moveto 0.02756 0.27193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29666 moveto 0.02756 0.29666 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32138 moveto 0.02756 0.32138 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3461 moveto 0.02756 0.3461 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39554 moveto 0.02756 0.39554 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42026 moveto 0.02756 0.42026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44498 moveto 0.02756 0.44498 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46971 moveto 0.02756 0.46971 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51915 moveto 0.02756 0.51915 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54387 moveto 0.02756 0.54387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56859 moveto 0.02756 0.56859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59331 moveto 0.02756 0.59331 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.09436 0 moveto 0.10318 0.0412 lineto stroke 0.10318 0.0412 moveto 0.14286 0.17177 lineto 0.18254 0.26437 lineto 0.22223 0.33603 lineto 0.26191 0.3942 lineto 0.30159 0.4426 lineto 0.34127 0.48316 lineto 0.38096 0.5168 lineto 0.42064 0.544 lineto 0.46032 0.56516 lineto 0.5 0.58095 lineto 0.51984 0.58711 lineto 0.53968 0.59228 lineto 0.55953 0.59659 lineto 0.57937 0.60018 lineto 0.59921 0.60314 lineto 0.61905 0.60559 lineto 0.63889 0.60761 lineto 0.65873 0.60928 lineto 0.67857 0.61066 lineto 0.69841 0.6118 lineto 0.71826 0.61275 lineto 0.7381 0.61354 lineto 0.77778 0.61475 lineto 0.81746 0.6156 lineto 0.85714 0.61621 lineto 0.89683 0.61665 lineto 0.93651 0.61697 lineto 0.97619 0.61721 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 176}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The next example is the normalized third order Butterworth above transformed \ into a bandpass filter with corner frequencies of 1000 and 2000 Hz."], "Text",\ Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["LpToBp[ButterworthLp[3,3],1000,2000]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {2.486399014803490112*10^11 + 0.*I, {0, 0, 0}, {-1105.332060357944807 - 6448.693546679359194*I, -2038.748118495865664 + 11894.40015952440178*I, -3144.080178853810474 + 8310.932260441872962*I, -3144.080178853810474 - 8310.932260441872962*I, -1105.332060357944807 + 6448.693546679359194*I, -2038.748118495865664 - 11894.40015952440178*I}}\ \>", "\<\ 11 {2.4864 10 + 0. I, {0, 0, 0}, {-1105.33 - 6448.69 I, -2038.75 + 11894.4 I, -3144.08 + 8310.93 I, -3144.08 - 8310.93 I, -1105.33 + 6448.69 I, -2038.75 - 11894.4 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "dB[Abs[First[LpToBp[ButterworthLp[3,3],1000,2000]]]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 227.911416500769907\ \>", "\<\ 227.911\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\t\ FilterFromGZP[LpToBp[ButterworthLp[3,3],1000,2000]],\n\t\ 4000,{PlotRange->{-50,0}}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000367183 0.618034 0.0123607 [ [(500)] 0.2074 0.61803 0 2 Msboxa [(1000)] 0.39099 0.61803 0 2 Msboxa [(1500)] 0.57458 0.61803 0 2 Msboxa [(2000)] 0.75817 0.61803 0 2 Msboxa [(2500)] 0.94177 0.61803 0 2 Msboxa [( Hz)] 1.025 0.61803 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0 1 0 Msboxa [(-40)] 0.01131 0.12361 1 0 Msboxa [(-30)] 0.01131 0.24721 1 0 Msboxa [(-20)] 0.01131 0.37082 1 0 Msboxa [(-10)] 0.01131 0.49443 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.62528 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2074 0.61803 moveto 0.2074 0.62428 lineto stroke grestore [(500)] 0.2074 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.39099 0.61803 moveto 0.39099 0.62428 lineto stroke grestore [(1000)] 0.39099 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.57458 0.61803 moveto 0.57458 0.62428 lineto stroke grestore [(1500)] 0.57458 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.75817 0.61803 moveto 0.75817 0.62428 lineto stroke grestore [(2000)] 0.75817 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.94177 0.61803 moveto 0.94177 0.62428 lineto stroke grestore [(2500)] 0.94177 0.61803 0 2 Mshowa gsave 0.001 setlinewidth 0.06053 0.61803 moveto 0.06053 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.09725 0.61803 moveto 0.09725 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.13396 0.61803 moveto 0.13396 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.17068 0.61803 moveto 0.17068 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.24412 0.61803 moveto 0.24412 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.28084 0.61803 moveto 0.28084 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.31756 0.61803 moveto 0.31756 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.35427 0.61803 moveto 0.35427 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.42771 0.61803 moveto 0.42771 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.46443 0.61803 moveto 0.46443 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.50115 0.61803 moveto 0.50115 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.53787 0.61803 moveto 0.53787 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.6113 0.61803 moveto 0.6113 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.64802 0.61803 moveto 0.64802 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.68474 0.61803 moveto 0.68474 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.72146 0.61803 moveto 0.72146 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.79489 0.61803 moveto 0.79489 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.83161 0.61803 moveto 0.83161 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.86833 0.61803 moveto 0.86833 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.90505 0.61803 moveto 0.90505 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.97848 0.61803 moveto 0.97848 0.62178 lineto stroke grestore [( Hz)] 1.025 0.61803 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.61803 moveto 1 0.61803 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.03006 0 lineto stroke grestore [(-50)] 0.01131 0 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12361 moveto 0.03006 0.12361 lineto stroke grestore [(-40)] 0.01131 0.12361 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24721 moveto 0.03006 0.24721 lineto stroke grestore [(-30)] 0.01131 0.24721 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.37082 moveto 0.03006 0.37082 lineto stroke grestore [(-20)] 0.01131 0.37082 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49443 moveto 0.03006 0.49443 lineto stroke grestore [(-10)] 0.01131 0.49443 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02472 moveto 0.02756 0.02472 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04944 moveto 0.02756 0.04944 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07416 moveto 0.02756 0.07416 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09889 moveto 0.02756 0.09889 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14833 moveto 0.02756 0.14833 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17305 moveto 0.02756 0.17305 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19777 moveto 0.02756 0.19777 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22249 moveto 0.02756 0.22249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27193 moveto 0.02756 0.27193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29666 moveto 0.02756 0.29666 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32138 moveto 0.02756 0.32138 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3461 moveto 0.02756 0.3461 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39554 moveto 0.02756 0.39554 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42026 moveto 0.02756 0.42026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44498 moveto 0.02756 0.44498 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46971 moveto 0.02756 0.46971 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51915 moveto 0.02756 0.51915 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54387 moveto 0.02756 0.54387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56859 moveto 0.02756 0.56859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59331 moveto 0.02756 0.59331 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.12812 0 moveto 0.14621 0.0596 lineto stroke 0.14621 0.0596 moveto 0.2074 0.21476 lineto 0.2686 0.34506 lineto 0.3298 0.47016 lineto 0.3604 0.53078 lineto 0.3757 0.55805 lineto 0.39099 0.58096 lineto 0.39864 0.59021 lineto 0.40629 0.59783 lineto 0.41394 0.60386 lineto 0.42159 0.60842 lineto 0.42542 0.61022 lineto 0.42924 0.61174 lineto 0.43307 0.613 lineto 0.43689 0.61405 lineto 0.44454 0.61561 lineto 0.44837 0.61617 lineto 0.45219 0.61661 lineto 0.45602 0.61696 lineto 0.45984 0.61724 lineto 0.46367 0.61745 lineto 0.46749 0.61761 lineto 0.47132 0.61773 lineto 0.47514 0.61782 lineto 0.47897 0.61789 lineto 0.48279 0.61794 lineto 0.4847 0.61795 lineto 0.48662 0.61797 lineto 0.48853 0.61798 lineto 0.49044 0.61799 lineto 0.49235 0.618 lineto 0.49426 0.61801 lineto 0.49618 0.61801 lineto 0.49809 0.61802 lineto 0.5 0.61802 lineto 0.50191 0.61803 lineto 0.50383 0.61803 lineto 0.50574 0.61803 lineto 0.50765 0.61803 lineto 0.50956 0.61803 lineto 0.51148 0.61803 lineto 0.51339 0.61803 lineto 0.5153 0.61803 lineto 0.51721 0.61803 lineto 0.51913 0.61803 lineto 0.52104 0.61803 lineto 0.52295 0.61803 lineto 0.52486 0.61803 lineto 0.52678 0.61803 lineto 0.52869 0.61803 lineto Mistroke 0.5306 0.61803 lineto 0.53251 0.61803 lineto 0.53443 0.61803 lineto 0.53634 0.61803 lineto 0.53825 0.61803 lineto 0.54016 0.61803 lineto 0.54207 0.61803 lineto 0.54399 0.61803 lineto 0.5459 0.61803 lineto 0.54781 0.61803 lineto 0.54972 0.61803 lineto 0.55164 0.61803 lineto 0.55355 0.61803 lineto 0.55546 0.61803 lineto 0.55737 0.61803 lineto 0.55929 0.61803 lineto 0.5612 0.61803 lineto 0.56311 0.61803 lineto 0.56502 0.61803 lineto 0.56694 0.61803 lineto 0.56885 0.61803 lineto 0.57076 0.61803 lineto 0.57267 0.61803 lineto 0.57459 0.61803 lineto 0.5765 0.61803 lineto 0.57841 0.61803 lineto 0.58032 0.61803 lineto 0.58224 0.61803 lineto 0.58415 0.61803 lineto 0.58606 0.61803 lineto 0.58797 0.61803 lineto 0.58988 0.61802 lineto 0.5918 0.61802 lineto 0.59371 0.61802 lineto 0.59753 0.61801 lineto 0.60136 0.61799 lineto 0.60518 0.61798 lineto 0.60901 0.61795 lineto 0.61283 0.61792 lineto 0.61666 0.61788 lineto 0.62048 0.61783 lineto 0.62813 0.61769 lineto 0.63196 0.6176 lineto 0.63578 0.61748 lineto 0.64343 0.61718 lineto 0.65108 0.61676 lineto 0.65873 0.61618 lineto 0.66638 0.61542 lineto 0.67403 0.61444 lineto 0.68168 0.61319 lineto Mistroke 0.68933 0.61164 lineto 0.69698 0.60976 lineto 0.71228 0.60488 lineto 0.72758 0.59842 lineto 0.75818 0.58095 lineto 0.81937 0.53517 lineto 0.88057 0.48787 lineto 0.94177 0.44519 lineto Mfstroke 1 0.40948 moveto 0.94177 0.44519 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 176}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The following example is the normalized third order Butterworth above \ transformed into a bandreject filter with corner frequencies of 1000 and 2000 \ Hz."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["LpToBr[ButterworthLp[3,3],1000,2000]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1. + 0.*I, {8885.765876316732494*I, -8885.765876316732494*I, 8885.765876316732494*I, -8885.765876316732494*I, 8885.765876316732494*I, -8885.765876316732494*I}, {-2034.833226824389601 - 11889.16899242038357*I, -1104.273869575222665 + 6452.076011056241594*I, -3139.107096399612268 - 8312.81190969989795*I, -3139.107096399612268 + 8312.81190969989795*I, -2034.833226824389601 + 11889.16899242038357*I, -1104.273869575222665 - 6452.076011056241594*I}}\ \>", "\<\ {1. + 0. I, {8885.77 I, -8885.77 I, 8885.77 I, -8885.77 I, 8885.77 I, -8885.77 I}, {-2034.83 - 11889.2 I, -1104.27 + 6452.08 I, -3139.11 - 8312.81 I, -3139.11 + 8312.81 I, -2034.83 + 11889.2 I, -1104.27 - 6452.08 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "dB[Abs[First[LpToBr[ButterworthLp[3,3],1000,2000]]]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 0.\ \>", "\<\ 0.\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[\n\t\ FilterFromGZP[LpToBr[ButterworthLp[3,3],1000,2000]],\n\t\ 4000,{PlotRange->{-50,0}}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238095 0.618034 0.0123607 [ [(1000)] 0.2619 0.61803 0 2 Msboxa [(2000)] 0.5 0.61803 0 2 Msboxa [(3000)] 0.7381 0.61803 0 2 Msboxa [(4000)] 0.97619 0.61803 0 2 Msboxa [( Hz)] 1.025 0.61803 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0 1 0 Msboxa [(-40)] 0.01131 0.12361 1 0 Msboxa [(-30)] 0.01131 0.24721 1 0 Msboxa [(-20)] 0.01131 0.37082 1 0 Msboxa [(-10)] 0.01131 0.49443 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.62528 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.61803 moveto 0.2619 0.62428 lineto stroke grestore [(1000)] 0.2619 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.61803 moveto 0.5 0.62428 lineto stroke grestore [(2000)] 0.5 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.61803 moveto 0.7381 0.62428 lineto stroke grestore [(3000)] 0.7381 0.61803 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.61803 moveto 0.97619 0.62428 lineto stroke grestore [(4000)] 0.97619 0.61803 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.61803 moveto 0.07143 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.61803 moveto 0.11905 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.61803 moveto 0.16667 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.61803 moveto 0.21429 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.61803 moveto 0.30952 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.61803 moveto 0.35714 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.61803 moveto 0.40476 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.61803 moveto 0.45238 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.61803 moveto 0.54762 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.61803 moveto 0.59524 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.61803 moveto 0.64286 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.61803 moveto 0.69048 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.61803 moveto 0.78571 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.61803 moveto 0.83333 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.61803 moveto 0.88095 0.62178 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.61803 moveto 0.92857 0.62178 lineto stroke grestore [( Hz)] 1.025 0.61803 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.61803 moveto 1 0.61803 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.03006 0 lineto stroke grestore [(-50)] 0.01131 0 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.12361 moveto 0.03006 0.12361 lineto stroke grestore [(-40)] 0.01131 0.12361 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.24721 moveto 0.03006 0.24721 lineto stroke grestore [(-30)] 0.01131 0.24721 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.37082 moveto 0.03006 0.37082 lineto stroke grestore [(-20)] 0.01131 0.37082 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49443 moveto 0.03006 0.49443 lineto stroke grestore [(-10)] 0.01131 0.49443 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.02472 moveto 0.02756 0.02472 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04944 moveto 0.02756 0.04944 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07416 moveto 0.02756 0.07416 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09889 moveto 0.02756 0.09889 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14833 moveto 0.02756 0.14833 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17305 moveto 0.02756 0.17305 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19777 moveto 0.02756 0.19777 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22249 moveto 0.02756 0.22249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27193 moveto 0.02756 0.27193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29666 moveto 0.02756 0.29666 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32138 moveto 0.02756 0.32138 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3461 moveto 0.02756 0.3461 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39554 moveto 0.02756 0.39554 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42026 moveto 0.02756 0.42026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44498 moveto 0.02756 0.44498 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46971 moveto 0.02756 0.46971 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51915 moveto 0.02756 0.51915 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54387 moveto 0.02756 0.54387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56859 moveto 0.02756 0.56859 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59331 moveto 0.02756 0.59331 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.61803 moveto 0.02505 0.61803 lineto 0.02629 0.61803 lineto 0.02753 0.61803 lineto 0.02877 0.61803 lineto 0.03001 0.61803 lineto 0.03125 0.61803 lineto 0.03249 0.61803 lineto 0.03373 0.61803 lineto 0.03497 0.61803 lineto 0.03621 0.61803 lineto 0.03745 0.61803 lineto 0.03869 0.61803 lineto 0.03993 0.61803 lineto 0.04117 0.61803 lineto 0.04241 0.61803 lineto 0.04365 0.61803 lineto 0.04489 0.61803 lineto 0.04613 0.61803 lineto 0.04737 0.61803 lineto 0.04861 0.61803 lineto 0.04985 0.61803 lineto 0.05109 0.61803 lineto 0.05233 0.61803 lineto 0.05357 0.61803 lineto 0.05481 0.61803 lineto 0.05605 0.61803 lineto 0.05729 0.61803 lineto 0.05853 0.61803 lineto 0.06101 0.61803 lineto 0.06349 0.61803 lineto 0.06597 0.61803 lineto 0.06845 0.61803 lineto 0.07093 0.61803 lineto 0.07341 0.61803 lineto 0.0759 0.61803 lineto 0.07838 0.61803 lineto 0.08086 0.61803 lineto 0.08334 0.61803 lineto 0.0883 0.61803 lineto 0.09078 0.61803 lineto 0.09326 0.61803 lineto 0.09574 0.61803 lineto 0.09822 0.61803 lineto 0.1007 0.61803 lineto 0.10318 0.61803 lineto 0.10566 0.61803 lineto 0.10814 0.61803 lineto 0.1131 0.61803 lineto 0.11806 0.61803 lineto Mistroke 0.12302 0.61803 lineto 0.12798 0.61802 lineto 0.13294 0.61802 lineto 0.1379 0.61801 lineto 0.14286 0.618 lineto 0.14782 0.61799 lineto 0.15278 0.61798 lineto 0.15774 0.61796 lineto 0.1627 0.61793 lineto 0.16766 0.6179 lineto 0.17262 0.61785 lineto 0.17758 0.61779 lineto 0.18254 0.6177 lineto 0.1875 0.61759 lineto 0.19246 0.61744 lineto 0.19742 0.61724 lineto 0.20238 0.61697 lineto 0.20734 0.6166 lineto 0.2123 0.61611 lineto 0.21726 0.61544 lineto 0.22222 0.61454 lineto 0.22718 0.61331 lineto 0.23214 0.61165 lineto 0.23711 0.6094 lineto 0.24207 0.60637 lineto 0.24703 0.60231 lineto 0.25199 0.59693 lineto 0.25695 0.58992 lineto 0.26191 0.58095 lineto 0.27183 0.55613 lineto 0.28175 0.52139 lineto 0.29167 0.47688 lineto 0.30159 0.42289 lineto 0.31151 0.35839 lineto 0.32143 0.28004 lineto 0.33135 0.18029 lineto 0.33631 0.11759 lineto 0.34127 0.04115 lineto Mfstroke 0.34334 0 moveto 0.34127 0.04115 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke 0.37862 0 moveto 0.38095 0.0412 lineto stroke 0.38095 0.0412 moveto 0.39087 0.16444 lineto 0.4008 0.25142 lineto 0.41072 0.31829 lineto 0.42064 0.37226 lineto 0.44048 0.45494 lineto 0.4504 0.48699 lineto 0.46032 0.51401 lineto 0.47024 0.53649 lineto 0.48016 0.55484 lineto 0.49008 0.56949 lineto 0.5 0.58095 lineto 0.50992 0.58976 lineto 0.51984 0.59644 lineto 0.52976 0.60147 lineto 0.53968 0.60524 lineto 0.5496 0.60808 lineto 0.55952 0.61023 lineto 0.56945 0.61186 lineto 0.57937 0.6131 lineto 0.58929 0.61407 lineto 0.59921 0.61481 lineto 0.60913 0.6154 lineto 0.61905 0.61586 lineto 0.62897 0.61623 lineto 0.63889 0.61653 lineto 0.64881 0.61677 lineto 0.65873 0.61697 lineto 0.67857 0.61726 lineto 0.68849 0.61737 lineto 0.69841 0.61746 lineto 0.71825 0.6176 lineto 0.7381 0.6177 lineto 0.75794 0.61778 lineto 0.77778 0.61783 lineto 0.79762 0.61787 lineto 0.81746 0.61791 lineto 0.8373 0.61793 lineto 0.85714 0.61795 lineto 0.87698 0.61796 lineto 0.89683 0.61798 lineto 0.91667 0.61799 lineto 0.93651 0.61799 lineto 0.97619 0.618 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 176}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ " 2. - Discrete Time Filter Design"], "Section", Evaluatable->False, PageBreakAbove->True, AspectRatioFixed->False, CellTags->{ "Discrete Time Filters", "Discrete Time Filter Design", "Continuous Time Filter Design"}], Cell[TextData[ "This section of the notebook describes how to calculate first and second \ order digital filters. Discrete time filters are defined by their response in \ the z-domain. This section first presents some simple routines for describing \ polynomials in the z-domain and describes how to design first and second \ order filters. The frequency response and impulse response of these filters \ are then shown.\n"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[" 2.1 - Polynomial Evaluation Utilities"], "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Polynomial Evaluation Utilities"], Cell[TextData[{ StyleBox["This section of the report defines some ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " functions to make it easier to work with filter functions in the \ Z-domain. These functions allow us to define a new polynomial given a list of \ its coefficients (", Evaluatable->False, AspectRatioFixed->False], StyleBox["MakePoly", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox["), evaluate a polynomial (", Evaluatable->False, AspectRatioFixed->False], StyleBox["FilterEval", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox["), and find the zeros and roots of ratios of polynomials (", Evaluatable->False, AspectRatioFixed->False], StyleBox["RationalZeros", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[" and ", Evaluatable->False, AspectRatioFixed->False], StyleBox["RationalPoles", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox["). ", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox[ "In this notebook polynomials in z will be represented as lists of \ polynomial coefficients. The coefficients of a polynomial are listed from the \ initial constant to the coefficient multiplying the highest power. All \ coefficients past the end of the list are defined to be zero. The ", Evaluatable->False, AspectRatioFixed->False], StyleBox["PolyCoeff", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " function is used to pick out the n\[CloseCurlyQuote]th coefficient of a \ polynomial. ", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "PolyCoeff[coeffs_, n_] :=\n\tIf [ n < Length[coeffs],\n\t\tcoeffs[[n+1]],\n\t\ \t0]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"PolyCoeff"], Cell[TextData[{ StyleBox["Given a list of coefficients, ", Evaluatable->False, AspectRatioFixed->False], StyleBox["MakePoly", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[" returns a ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[ " expression that represents the polynomial. The use of z for the \ polynomial variable is arbitrary and was chosen to make the polynomials look \ good when printed. ", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "MakePoly[coeffs_List] := \n\tBlock[{i},\n\t\tPolyCoeff[coeffs,0] + \n\t\t\ Sum[PolyCoeff[coeffs,i] z^i,\n\t\t\t{ i, 1, Length[coeffs]}]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"MakePoly"], Cell[TextData[{ StyleBox["FilterEval", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " will return the value of a polynomial at a given point by substituting \ the desired value into the polynomial. Note, this function will work on all \ z-transforms.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData["FilterEval[poly_, x_] := (poly)/. z->x"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterEval"], Cell[TextData[ "For example the following is a third order polynomial and the result of \ evaluating it at z=1."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["zPoly = MakePoly[{1,4,2,1}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 1 + 4*z + 2*z^2 + z^3\ \>", "\<\ 2 3 1 + 4 z + 2 z + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FilterEval[zPoly,1]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 8\ \>", "\<\ 8\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox[ "Likewise we can define a rational function by writing the ratio of two ", Evaluatable->False, AspectRatioFixed->False], StyleBox["MakePoly", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox["\[CloseCurlyQuote]s and then evaluate it using ", Evaluatable->False, AspectRatioFixed->False], StyleBox["FilterEval", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[".", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["ratPoly = MakePoly[{1,-1,-1,1}] / MakePoly[{3,2,1}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (1 - z - z^2 + z^3)/(3 + 2*z + z^2)\ \>", "\<\ 2 3 1 - z - z + z --------------- 2 3 + 2 z + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FilterEval[ratPoly,2]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 3/11\ \>", "\<\ 3 -- 11\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox["Finally we define two functions, ", Evaluatable->False, AspectRatioFixed->False], StyleBox["RationalPoles", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[" and ", Evaluatable->False, AspectRatioFixed->False], StyleBox["RationalZeros", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ ", that return a list of the poles and zeros of a rational function. The \ function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["GetSolution", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[" is used to pick apart the stylized expression that ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" uses to show the roots of an equation.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "GetSolution[x_] :=\n\tIf [ x == {},\n\t\t{},\n\t\tx[[1]][[2]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"GetSolution"], Cell[TextData[ "RationalPoles[rat_] :=\n\tBlock[{roots},\n\t\troots = \ Solve[FilterEval[Denominator[rat],x] == 0,x];\n\t\tMap[GetSolution, roots]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"RationalPoles"], Cell[TextData[ "RationalZeros[rat_] :=\n\tBlock[{roots},\n\t\troots = \ Solve[FilterEval[Numerator[rat],x] == 0,x];\n\t\tMap[GetSolution, roots]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"RationalZeros"], Cell[TextData[ "Using the previously defined rational polynomial (rat), we can find the \ poles and zeros of this filter:"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["RationalPoles[ratPoly]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {(-2 + I*2^(3/2))/2, (-2 - I*2^(3/2))/2}\ \>", "\<\ 3/2 3/2 -2 + I 2 -2 - I 2 {-----------, -----------} 2 2\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["RationalZeros[ratPoly]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1, 1, -1}\ \>", "\<\ {1, 1, -1}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[" 2.2 - Digital Filter Design Equations", "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Digital Filter Design Equations"], Cell[TextData[ "This section describes some general first and second order filter design \ functions."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "Using the impulse-invariant technique, a one pole (first-order lowpass) \ filter is defined by the following transfer function (in the z domain):"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["1 / MakePoly[{-epsilon,1}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (-epsilon + z)^(-1)\ \>", "\<\ 1 ------------ -epsilon + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "This filter has a time constant of tau if epsilon is given by"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData["EpsilonFromTauFS[tau_, fs_] := E^(-1 / tau / fs)"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"EpsilonFromTauFS"], Cell[TextData[ "Note that epsilon is a function of not only the time constant (tau) but also \ the sampling frequency (fs) of the digital filter. A first-order filter with \ time constant tau is given by (high pass in this case):"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FirstOrderFromTau[tau_, fs_] :=\n\tMakePoly[{-EpsilonFromTauFS[tau, \ fs],1}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FirstOrderFromTau"], Cell[TextData[ "A first order filter with a time constant (tau) of 1 ms is given by"], "Text",\ Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["FirstOrderFromTau[0.001, 16000]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ -0.9394130628134757862 + z\ \>", "\<\ -0.939413 + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "Likewise, a first-order filter with a corner frequency of f is described by \ :"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FirstOrderFromCorner[f_, fs_] :=\n\tMakePoly[{1,-E^(-2 Pi f / fs)}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FirstOrderFromCorner"], Cell[TextData[ "A second order filter is defined by its center frequency (f), quality factor \ (q) and sampling frequency (fs):"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "SecondOrderFromCenterQ[f_, q_, fs_] :=\n\tBlock[{cft, rho, theta},\n\t\tcft \ := f/fs;\n\t\trho := E^(-Pi cft / q);\n\t\ttheta := 2 Pi cft Sqrt[1 - 1/(4 q \ ^ 2)];\n\t\tMakePoly[{rho^2, -2 rho Cos[theta], 1}]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"SecondOrderFromCenterQ"], Cell[TextData[{ StyleBox["The function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["FilterGain", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " evaluates the filter transfer function (z transform) at the frequency f \ by making the substitution\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tz -> E ^ \ ( I 2 Pi f / fs )\nwhere fs is the sampling interval.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FilterGain[filter_,f_,fs_] :=\n\tFilterEval[filter,E^(I 2 Pi f / fs)]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterGain"], Cell[TextData[{ StyleBox["Likewise the functions ", Evaluatable->False, AspectRatioFixed->False], StyleBox["FilterMag", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[", ", Evaluatable->False, AspectRatioFixed->False], StyleBox["FilterPhase", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[" and ", Evaluatable->False, AspectRatioFixed->False], StyleBox["FilterDb", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " compute the magnitude, phase and gain in dB of a digital filter.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FilterMag[filter_,f_,fs_] := \n\tAbs[FilterGain[filter,f,fs]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterMag"], Cell[TextData[ "FilterPhase[filter_,f_,fs_] := \n\tArg[FilterGain[filter,f,fs]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterPhase"], Cell[TextData[ "FilterDb[filter_,f_,fs_] :=\n\tDb[FilterMag[filter,f,fs]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FilterDb"], Cell[TextData[{ StyleBox["The function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["AdjustGain", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " adjusts the gain of a filter so that it has unit gain at any desired \ frequency.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "AdjustGain[filter_,f_,fs_] :=\n\tfilter/FilterGain[filter,f,fs]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"AdjustGain"], Cell[TextData[{ StyleBox["We define the ", Evaluatable->False, AspectRatioFixed->False], StyleBox["MakeFilter", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " function to design a filter with a given feedback (poles) and feedforward \ (zeros) response. The resulting filter is just the ratio of the two \ polynomials. In addition a frequency and gain are specified so that the \ resulting filter can be normalized to have any desired gain at a specified \ frequency. ", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "MakeFilter[forward_, feedback_, fs_, f_, gain_] :=\n\tgain \ AdjustGain[forward/feedback,f,fs]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"MakeFilter"], Cell[TextData[{ StyleBox["The frequency response of a filter is plotted in ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" using the following function.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FreqResponse[coeffs_, fs_, opts_:{}] :=\n\tBlock[{func,f},\n\tfunc = \ N[dB[Abs[FilterGain[coeffs,f,fs]]]];\n\tPlot[func,\n\t\t\t{f,1,fs/2-fs/1000},\ \n\t\t\tAxesLabel->{\" Hz\",\"dB\"},\n\t\t\tPlotLabel->\"Response\",\n\t\t\t\ opts]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FreqResponse"], Cell[TextData[ "Likewise we define a similar function to plot the phase of the filter."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "PhaseResponse[coeffs_, fs_] :=\n\tBlock[{theFunction,f},\n\ttheFunction = \ N[180/Pi FilterPhase[coeffs,f,fs]];\n\tPlot[theFunction,\n\t\t\t\ {f,1,fs/2-fs/1000},\n\t\t\tAxesLabel->{\" f\",\"Phase (Degrees)\"}]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"PhaseResponse"], Cell[TextData[ "For example we define a first order low pass filter with a 3 dB point at \ 1000 Hz (the frequency response would look better with a logarithmic \ frequency scale):"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "firstFilt = MakeFilter[1,FirstOrderFromCorner[1000,16000],\n\t\t\t\t\t\ 16000,0,1]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ 0.3247680933442227829/(1. - 0.6752319066557772171*z)\ \>", "\<\ 0.324768 --------------- 1. - 0.675232 z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FreqResponse[firstFilt,16000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000119286 0.603319 0.0413056 [ [(2000)] 0.26238 0.60332 0 2 Msboxa [(4000)] 0.50095 0.60332 0 2 Msboxa [(6000)] 0.73953 0.60332 0 2 Msboxa [(8000)] 0.9781 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-14)] 0.01131 0.02504 1 0 Msboxa [(-12)] 0.01131 0.10765 1 0 Msboxa [(-10)] 0.01131 0.19026 1 0 Msboxa [(-8)] 0.01131 0.27287 1 0 Msboxa [(-6)] 0.01131 0.35549 1 0 Msboxa [(-4)] 0.01131 0.4381 1 0 Msboxa [(-2)] 0.01131 0.52071 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.60332 moveto 0.26238 0.60957 lineto stroke grestore [(2000)] 0.26238 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.60332 moveto 0.50095 0.60957 lineto stroke grestore [(4000)] 0.50095 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.60332 moveto 0.73953 0.60957 lineto stroke grestore [(6000)] 0.73953 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.60332 moveto 0.9781 0.60957 lineto stroke grestore [(8000)] 0.9781 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.60332 moveto 0.07152 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.60332 moveto 0.11924 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.60332 moveto 0.16695 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.60332 moveto 0.21467 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.60332 moveto 0.3101 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.60332 moveto 0.35781 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.60332 moveto 0.40553 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.60332 moveto 0.45324 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.60332 moveto 0.54867 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.60332 moveto 0.59638 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.60332 moveto 0.6441 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.60332 moveto 0.69181 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.60332 moveto 0.78724 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.60332 moveto 0.83496 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.60332 moveto 0.88267 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.60332 moveto 0.93038 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.02504 moveto 0.03006 0.02504 lineto stroke grestore [(-14)] 0.01131 0.02504 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.10765 moveto 0.03006 0.10765 lineto stroke grestore [(-12)] 0.01131 0.10765 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.19026 moveto 0.03006 0.19026 lineto stroke grestore [(-10)] 0.01131 0.19026 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.27287 moveto 0.03006 0.27287 lineto stroke grestore [(-8)] 0.01131 0.27287 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.35549 moveto 0.03006 0.35549 lineto stroke grestore [(-6)] 0.01131 0.35549 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.4381 moveto 0.03006 0.4381 lineto stroke grestore [(-4)] 0.01131 0.4381 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.52071 moveto 0.03006 0.52071 lineto stroke grestore [(-2)] 0.01131 0.52071 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.04156 moveto 0.02756 0.04156 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05809 moveto 0.02756 0.05809 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07461 moveto 0.02756 0.07461 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09113 moveto 0.02756 0.09113 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12417 moveto 0.02756 0.12417 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1407 moveto 0.02756 0.1407 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15722 moveto 0.02756 0.15722 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17374 moveto 0.02756 0.17374 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.20679 moveto 0.02756 0.20679 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22331 moveto 0.02756 0.22331 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.23983 moveto 0.02756 0.23983 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25635 moveto 0.02756 0.25635 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2894 moveto 0.02756 0.2894 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.30592 moveto 0.02756 0.30592 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32244 moveto 0.02756 0.32244 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33896 moveto 0.02756 0.33896 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37201 moveto 0.02756 0.37201 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38853 moveto 0.02756 0.38853 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40505 moveto 0.02756 0.40505 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42157 moveto 0.02756 0.42157 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45462 moveto 0.02756 0.45462 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47114 moveto 0.02756 0.47114 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48766 moveto 0.02756 0.48766 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50419 moveto 0.02756 0.50419 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53723 moveto 0.02756 0.53723 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55375 moveto 0.02756 0.55375 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57027 moveto 0.02756 0.57027 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.5868 moveto 0.02756 0.5868 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.00852 moveto 0.02756 0.00852 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02393 0.60332 moveto 0.02517 0.6033 lineto 0.02641 0.60323 lineto 0.02765 0.60314 lineto 0.02889 0.603 lineto 0.03137 0.60261 lineto 0.03385 0.60207 lineto 0.03881 0.60054 lineto 0.04377 0.59843 lineto 0.05369 0.59255 lineto 0.06361 0.58464 lineto 0.08345 0.56387 lineto 0.10328 0.53844 lineto 0.14296 0.48146 lineto 0.18264 0.42443 lineto 0.22232 0.37165 lineto 0.26199 0.32424 lineto 0.30167 0.28209 lineto 0.34135 0.24473 lineto 0.38103 0.21159 lineto 0.4207 0.18219 lineto 0.46038 0.15609 lineto 0.50006 0.13293 lineto 0.53974 0.11241 lineto 0.57941 0.09429 lineto 0.61909 0.07837 lineto 0.65877 0.06449 lineto 0.69845 0.0525 lineto 0.73813 0.04229 lineto 0.7778 0.03379 lineto 0.81748 0.02691 lineto 0.85716 0.0216 lineto 0.877 0.01951 lineto 0.89684 0.01781 lineto 0.91667 0.01648 lineto 0.92659 0.01596 lineto 0.93651 0.01552 lineto 0.94643 0.01518 lineto 0.95139 0.01505 lineto 0.95635 0.01493 lineto 0.96131 0.01485 lineto 0.96379 0.01481 lineto 0.96627 0.01478 lineto 0.96875 0.01475 lineto 0.96999 0.01474 lineto 0.97123 0.01474 lineto 0.97247 0.01473 lineto 0.97371 0.01472 lineto 0.97495 0.01472 lineto 0.97619 0.01472 lineto Mistroke Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V0003o`000:d0000D00;oCP000ol0002^000050000ol0001;00;o/@0001@000?o0000 BP000ol0002a000050000ol000190003o`000;80000D00;oB@000ol0002c000050000ol000170003 o`000;@0000D0003o`0004H000?o0000]@0001@000?o0000A@000ol0002f00005002odD000?o0000 ]`0001@000?o0000@`000ol0002h00003P02o`@000?o0000@P000ol0002i00003@001?l00?l30003 o`00044000?o0000^P0000L01Ol01@3o003o00<00om00003o`000;/0000>00;o10000ol0000o0003 o`000;`0000=0004o`00o`<000?o0000?P000ol0002m00003P02o`@000?o0000?@000ol0002n0000 5002ocd000?o0000_`0001@000?o0000>`000ol00030000050000ol0000j0003o`000<40000D00;o >P000ol00032000050000ol0000h0003o`000<<0000D0003o`0003L000?o0000a00001@000?o0000 =P000ol0003500005002ocH000?o0000aP0001@000?o0000=0000ol00037000050000ol0000d0003 o`00000?o0`000ol0000R0003 o`000=T0000?0003o`00008000?o00008@000ol0003J00001`05o`030?oo00;o0`03ob0000?o0000 f`0000d000?o0?l010000ol0000P0003o`000=/0000=0003o`3o00@000?o00007`000ol0003L0000 3P02o`@000?o00007P000ol0003M00005002oah000?o0000gP0001@000?o00007@000ol0003N0000 50000ol0000L0003o`000=l0000D0003o`0001/000?o0000h00001@00_lL0003o`000>00000D0003 o`0001X000?o0000h@0001@000?o00006@000ol0003R00005002oaX000?o0000hP0001@000?o0000 60000ol0003S000050000ol0000G0003o`000>@0000D0003o`0001L000?o0000i00001@00_lG0003 o`000>D0000D0003o`0001D000?o0000iP0000d01?l30003o`0001@000?o0000i`0000h000?o0000 0`000ol0000D0003o`000>L0000700Go0`000ol0000200?o4`000ol0003X000040001Ol0003o01@0 00?o0000j@0000d000Co003o0`000ol0000B0003o`000>T0000>00;o10000ol0000A0003o`000>X0 000D00;o4@000ol0003[000050000ol0000@0003o`000>/0000D0003o`0000l000?o0000k00001@0 00?o00003P000ol0000H00Co0`02o`@00_l400;o9003o`<00_l400;o1002ob<00_l400;o1002o`@0 0_lS00;o1002o`@00_l400;o6P0001@00_l>0003o`0001X000?o00000P001?l00?l20004o`00o`80 00Co003o90001Ol0003o008000Co003o0P001?l00?l20003o`0001l000Co003o0P001?l00?l20004 o`00o`8000Co003o8@001?l00?l20004o`00o`8000Co003o0P001?l00?lI000050000ol0000<0003 o`0001`000Go0000o`020004o`00o`8000Co003o0P000ol0000P00Co0P001?l00?l20004o`00o`80 00Co003o8@001?l00?l20004o`00o`8000Co003o0P001?l00?lQ0004o`00o`8000Co003o0P001?l0 0?l20004o`00oaT0000D0003o`0000/000?o00007P001?l00?l20004o`00o`8000Co003o0P000ol0 000P0003o`3o00<000Co003o0P001?l00?l20004o`00ob400ol30004o`00o`8000Co003o0P001?l0 0?lR00;o0`001?l00?l20004o`00o`8000Co003o6@0001@00_l<0003o`0001/000Co003o0P001?l0 0?l20004o`00o`8000Co003o8P000ol0o`030004o`00o`8000Co003o0P001?l00?lQ0003o`0000<0 00Co003o0P001?l00?l20004o`00ob4000Co003o0P001?l00?l20004o`00o`8000Co003o6@0001@0 00?o00002P000ol0000M00;o1002o`@00_l400;o9002o`@00_l400;o1002ob<00ol300;o1002o`@0 0_lS00;o1002o`@00_l400;o6P0001@000?o00002@000ol0003b000050000ol000080003o`000?<0 000D00;o1`02ooH0000D0003o`0000D000?o0000mP0001@000?o00000`02on`00_l200;o00<0ool0 0_l2000050001?l00002onl000Co003o0`000ol0000200003`3Xoa8000Co003o0`02o`<0000D0003 o`0000P000?o000020000ol000080003o`0000P000?o000020000ol000080003o`0000P000?o0000 2@000ol000080003o`0000P000?o000020000ol000080003o`0000P000?o000020000ol000080003 o`0000P000?o000020000ol000080003o`0000P000?o000020000ol0000E00Co10000ol000010000 50000ol0003b0004o`00o`801?l2000050000ol0003a00;o0P02o`L0003o01H0003o01H0003o01H0 003o01H0003o01H0001l00CoU@0007d000?o0000U@0006X00_l200;o0P04o`030?oo00;o0P04o`<0 0ol200;o00@0ool01?l300CoN`0006/000Co0?oo0P000ol000060004o`00o`<000?o0?l00`000ol0 o`020003o`0000<000Co003oO`0006/00ol300Go00<0ool00_l20007o`000?l0o`030003o`3o0080 00?o00001?l200GoN`0006/000Co003o0P001ol0003o0?l01@001ol0003o0?l00`000ol0o`020004 o`00o`D000Go0000o`1k0000J`001?l00?l300?o0P04o`030?oo00?o0`03o`030?oo00?o0P04o`<0 0oml0000JP04ojL0003o01H0003o01H0003o01H0003o01H0000@00Soo@0000l000Oo0000o`3o0080 00?o0000nP0000l000Oo0000o`3o008000?o0000nP0000l000Ko0000o`03ood0000@00Co00D0o`00 o`3l00004`05ood0000B00;oo`020000o`0F0000o`0F0000\ \>"], ImageRangeCache->{{{0, 276}, {170, 0}} -> {-758.526, -14.7408, 36.3165, 0.104878}}] }, Open ]], Cell[TextData[{ StyleBox["The gain at the corner frequency is given by the following ", Evaluatable->False, AspectRatioFixed->False], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->False, FontSlant->"Italic"], StyleBox[" expression:", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "20 Log[ 10, Abs[N[FilterGain[firstFilt,1000,16000]]]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ -2.954847001152013182\ \>", "\<\ -2.95485\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "A second order bandpass filter with center frequency 3000 and a q of 10 is \ given by "], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "secondFilt = MakeFilter[1,\n\t\t\t\tSecondOrderFromCenterQ[3000,10,16000],\n\ \t\t\t\t16000,3000,1]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ (-0.09536235419083530121 + 0.03807813519778732139*I)/ (0.888865165780364874 - 0.7241513881904152719*z + z^2)\ \>", "\<\ -0.0953624 + 0.0380781 I -------------------------- 2 0.888865 - 0.724151 z + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FreqResponse[secondFilt,16000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000119286 0.603193 0.0209328 [ [(2000)] 0.26238 0.60319 0 2 Msboxa [(4000)] 0.50095 0.60319 0 2 Msboxa [(6000)] 0.73953 0.60319 0 2 Msboxa [(8000)] 0.9781 0.60319 0 2 Msboxa [( Hz)] 1.025 0.60319 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-25)] 0.01131 0.07987 1 0 Msboxa [(-20)] 0.01131 0.18454 1 0 Msboxa [(-15)] 0.01131 0.2892 1 0 Msboxa [(-10)] 0.01131 0.39386 1 0 Msboxa [(-5)] 0.01131 0.49853 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.60319 moveto 0.26238 0.60944 lineto stroke grestore [(2000)] 0.26238 0.60319 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.60319 moveto 0.50095 0.60944 lineto stroke grestore [(4000)] 0.50095 0.60319 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.60319 moveto 0.73953 0.60944 lineto stroke grestore [(6000)] 0.73953 0.60319 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.60319 moveto 0.9781 0.60944 lineto stroke grestore [(8000)] 0.9781 0.60319 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.60319 moveto 0.07152 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.60319 moveto 0.11924 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.60319 moveto 0.16695 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.60319 moveto 0.21467 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.60319 moveto 0.3101 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.60319 moveto 0.35781 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.60319 moveto 0.40553 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.60319 moveto 0.45324 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.60319 moveto 0.54867 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.60319 moveto 0.59638 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.60319 moveto 0.6441 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.60319 moveto 0.69181 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.60319 moveto 0.78724 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.60319 moveto 0.83496 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.60319 moveto 0.88267 0.60694 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.60319 moveto 0.93038 0.60694 lineto stroke grestore [( Hz)] 1.025 0.60319 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60319 moveto 1 0.60319 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.07987 moveto 0.03006 0.07987 lineto stroke grestore [(-25)] 0.01131 0.07987 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.18454 moveto 0.03006 0.18454 lineto stroke grestore [(-20)] 0.01131 0.18454 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.2892 moveto 0.03006 0.2892 lineto stroke grestore [(-15)] 0.01131 0.2892 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.39386 moveto 0.03006 0.39386 lineto stroke grestore [(-10)] 0.01131 0.39386 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49853 moveto 0.03006 0.49853 lineto stroke grestore [(-5)] 0.01131 0.49853 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.10081 moveto 0.02756 0.10081 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12174 moveto 0.02756 0.12174 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14267 moveto 0.02756 0.14267 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1636 moveto 0.02756 0.1636 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.20547 moveto 0.02756 0.20547 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2264 moveto 0.02756 0.2264 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24734 moveto 0.02756 0.24734 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26827 moveto 0.02756 0.26827 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.31013 moveto 0.02756 0.31013 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33107 moveto 0.02756 0.33107 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.352 moveto 0.02756 0.352 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37293 moveto 0.02756 0.37293 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4148 moveto 0.02756 0.4148 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43573 moveto 0.02756 0.43573 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45666 moveto 0.02756 0.45666 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4776 moveto 0.02756 0.4776 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51946 moveto 0.02756 0.51946 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54039 moveto 0.02756 0.54039 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56133 moveto 0.02756 0.56133 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58226 moveto 0.02756 0.58226 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05894 moveto 0.02756 0.05894 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.03801 moveto 0.02756 0.03801 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01707 moveto 0.02756 0.01707 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02393 0.16163 moveto 0.02517 0.16163 lineto 0.02641 0.16164 lineto 0.02765 0.16165 lineto 0.02889 0.16167 lineto 0.03137 0.16172 lineto 0.03385 0.16179 lineto 0.03633 0.16188 lineto 0.03881 0.16199 lineto 0.04377 0.16226 lineto 0.04873 0.16262 lineto 0.05369 0.16305 lineto 0.06361 0.16416 lineto 0.07353 0.16559 lineto 0.08345 0.16735 lineto 0.10328 0.17189 lineto 0.12312 0.17786 lineto 0.14296 0.18537 lineto 0.1628 0.19458 lineto 0.18264 0.2057 lineto 0.20248 0.219 lineto 0.22232 0.23488 lineto 0.24216 0.25389 lineto 0.26199 0.2768 lineto 0.28183 0.30482 lineto 0.30167 0.33986 lineto 0.32151 0.38516 lineto 0.34135 0.4465 lineto 0.36119 0.53209 lineto 0.36615 0.55651 lineto 0.37111 0.5794 lineto 0.37359 0.58908 lineto 0.37483 0.59319 lineto 0.37607 0.59671 lineto 0.37731 0.59955 lineto 0.37855 0.60163 lineto 0.37979 0.6029 lineto 0.38103 0.60332 lineto 0.38227 0.60287 lineto 0.38351 0.60155 lineto 0.38475 0.59941 lineto 0.38599 0.59649 lineto 0.38847 0.58862 lineto 0.39095 0.5786 lineto 0.40087 0.5291 lineto 0.4207 0.43808 lineto 0.44054 0.37136 lineto 0.46038 0.32081 lineto 0.50006 0.24729 lineto 0.53974 0.19471 lineto Mistroke 0.57941 0.15448 lineto 0.61909 0.12254 lineto 0.65877 0.09668 lineto 0.69845 0.07558 lineto 0.73813 0.05838 lineto 0.7778 0.04451 lineto 0.81748 0.03356 lineto 0.83732 0.0291 lineto 0.85716 0.02527 lineto 0.877 0.02205 lineto 0.89684 0.01944 lineto 0.91667 0.0174 lineto 0.92659 0.0166 lineto 0.93651 0.01594 lineto 0.94643 0.01543 lineto 0.95139 0.01522 lineto 0.95635 0.01505 lineto 0.96131 0.01491 lineto 0.96379 0.01486 lineto 0.96627 0.01481 lineto 0.96875 0.01477 lineto 0.96999 0.01476 lineto 0.97123 0.01475 lineto 0.97247 0.01474 lineto 0.97371 0.01473 lineto 0.97495 0.01472 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V000050000ol0 000^0003o`0003/000?o0000S`0001@00_l`0003o`0003T000?o0000T00001@000?o0000<0000ol0 000h0003o`000900000D0003o`00030000?o0000=`000ol0002A000050000ol0000a0003o`0003H0 00?o0000T@0001@000?o0000P000ol0000V0003o`0009P0000D0003o`0003/0 00?o00009@000ol0002H000050000ol0000k0003o`0002@000?o0000V@0001@000?o0000?0000ol0 000S0003o`0009T0000D00;o?@000ol0000R0003o`0009X0000D0003o`0003d000?o00008@000ol0 002J000050000ol0000n0003o`00020000?o0000VP0001@000?o0000?P000ol0000O0003o`0009/0 000D0003o`0003l000?o00007P000ol0002K00005002od0000?o00007P000ol0002K000050000ol0 000o0003o`0001d000?o0000W00001@000?o0000@0000ol0000L0003o`0009`0000D0003o`000400 00?o000070000ol0002L000050000ol000100003o`0001/000?o0000W@0001@00_m20003o`0001X0 00?o0000W@0001@000?o0000@@000ol0000J0003o`0009d0000D0003o`00044000?o00006@000ol0 002N00001`03o`@00_l40003o`00048000?o000060000ol0002N000020000ol000020004o`00o`<0 00?o0000@P000ol0000H0003o`0009h000000`3oo`03o`8000?o00000P001?l00?l300?o@`000ol0 000F0003o`0009l000080003o`00008000Co003o0`000ol000130003o`0001H000?o0000W`0000P0 00?o00000P001?l00?l30003o`0004<000?o00005P000ol0002O00001`02o`D00_l40003o`0004@0 00?o000050000ol0002P000050000ol000140003o`0001@000?o0000X00001@00_m50003o`0001@0 00?o0000X00001@000?o0000A@000ol0000B0003o`000:40000D0003o`0004D000?o00004P000ol0 002Q000050000ol000150003o`00018000?o0000X@0001@00_m70003o`00010000?o0000XP0001@0 00?o0000AP000ol0000@0003o`000:80000D0003o`0004H000?o000040000ol0002R000050000ol0 00170003o`0000l000?o0000XP0001@000?o0000A`000ol0000>0003o`000:<0000D00;oB0000ol0 000>0003o`000:<0000D0003o`0004P000?o00003@000ol0002S000050000ol000180003o`0000d0 00?o0000X`0001@000?o0000B0000ol0000<0003o`000:@0000D0003o`0004P000?o000030000ol0 002T00005002odT000?o000030000ol0002T000050000ol000190003o`0000/000?o0000Y00001@0 00?o0000B@000ol0000:0003o`000:D0000=00?o10000ol000190003o`0000X000?o0000Y@000100 00Go0000o`1;0003o`0000X000?o0000Y@0000L01Ol40004o`0000?oB@000ol0000:0003o`000:D0 000=00?o10000ol0001:0003o`0000T000?o0000Y@0000d000?o000010000ol0001:0003o`0000P0 00?o0000YP0000d01?l30003o`0004X000?o000020000ol0002V000050000ol0001:0003o`0000P0 00?o0000YP0001@00_m;0003o`0000P000?o0000YP0001@000?o0000B`000ol000060003o`000:L0 000D0003o`0004/000?o00001P000ol0002W000050000ol0001;0003o`0000H000?o0000Y`0001@0 00?o0000B`000ol000060003o`000:L0000D00;oC0000ol000060003o`000:L0000D0003o`0004`0 00?o000010000ol0002X000050000ol0000Y00Co0`02o`@00_l400;o3P000ol000040003o`0000`0 0ol300;o1002o`@00_lS00;o1002o`@00_l400;o8`02o`@00_l400;o1002oaX0000D0003o`0002X0 00?o00000P001?l00?l20004o`00o`8000Co003o3@000ol000040003o`0000d000Go0000o`020004 o`00o`8000Co003o0P000ol0000O0004o`00o`8000Co003o0P001?l00?l20004o`00ob4000Co003o 0P001?l00?l20004o`00o`8000Co003o6@0001@00_l/0005o`000?l00P001?l00?l20004o`00o`80 00?o00002`000ol000040003o`0000/01?l20004o`00o`8000Co003o0P001?l00?lQ0004o`00o`80 00Co003o0P001?l00?l20004o`00ob4000Co003o0P001?l00?l20004o`00o`8000Co003o6@0001@0 00?o0000;0001?l00?l20004o`00o`8000Co003o0P000ol0000<0003o`0000<000?o00002`000ol0 o`030004o`00o`8000Co003o0P001?l00?lQ00?o0`001?l00?l20004o`00o`8000Co003o8P02o`<0 00Co003o0P001?l00?l20004o`00oaT0000D0003o`0002T000Co003o0P001?l00?l20004o`00o`80 00Co003o3P000ol000020003o`0000`000?o0?l00`001?l00?l20004o`00o`8000Co003o8@000ol0 00030004o`00o`8000Co003o0P001?l00?lQ0004o`00o`8000Co003o0P001?l00?l20004o`00oaT0 000D0003o`0002X00_l400;o1002o`@00_l?0003o`00008000?o00003@02o`@00_l400;o1002ob<0 0ol300;o1002o`@00_lS00;o1002o`@00_l400;o6P0001@000?o0000CP001Ol0003o0:/0000D00;o C`001Ol0003o0:/0000D0003o`0004h000Go0000o`2[000050000ol0001>0005o`000?l0Z`0001@0 00?o0000CP001?l00?nO00;o0P02o`030?oo00;o0P0001@000?o0000C`000ol0o`2P0004o`00o`<0 00?o00000P0000l0j?lB0004o`00o`<00_l3000050000ol000080003o`0000P000?o000020000ol0 00080003o`0000P000?o000020000ol000080003o`0000T000?o000020000ol000080003o`0000P0 00?o000020000ol000080003o`0000P000?o000020000ol000080003o`0000P000?o000020000ol0 00080003o`0000P000?o00005@04o`@000?o00000@0001@000?o0000lP001?l00?l200Co0P0001@0 00?o0000l@02o`800_l70000o`0F0000o`0F0000o`0F0000o`0F0000o`0F0000O004oiD0001m0003 o`0009D0001Z00;o0P02o`801?l00`3oo`02o`801?l300?o0P02o`040?oo00Co0`04og/0001[0004 o`3oo`8000?o00001P001?l00?l30003o`3o00<000?o0?l00P000ol000030004o`00ogl0001[00?o 0`05o`030?oo00;o0P001ol0003o0?l00`000ol0o`020003o`0000Co0P05og/0001[0004o`00o`80 00Oo0000o`3o00D000Oo0000o`3o00<000?o0?l00P001?l00?l50005o`000?l0N`0006/000Co003o 0`03o`801?l00`3oo`03o`<00ol00`3oo`03o`801?l300?oO00006X01?nW0000o`0F0000o`0F0000 o`0F0000o`0F00004008ood0000?0007o`000?l0o`020003o`000?X0000?0007o`000?l0o`020003 o`000?X0000?0006o`000?l00oom00004004o`050?l00?l0o00001<01Oom00004P02ool00P000?l0 5P000?l05P000001\ \>"], ImageRangeCache->{{{0, 276}, {170, 0}} -> {-758.526, -29.0812, 36.3165, 0.20695}}] }, Open ]], Cell[TextData["A less peaky response is possible using a lower q."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "secondFilt = MakeFilter[1,\n\t\t\t\tSecondOrderFromCenterQ[3000,2,16000],\n\t\ \t\t\t16000,3000,1]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (-0.3899707380427475814 + 0.133202668404425043*I)/ (0.5548549101598534088 - 0.6211893353910957735*z + z^2)\ \>", "\<\ -0.389971 + 0.133203 I -------------------------- 2 0.554855 - 0.621189 z + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FreqResponse[secondFilt,16000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000119286 0.596906 0.0402807 [ [(2000)] 0.26238 0.59691 0 2 Msboxa [(4000)] 0.50095 0.59691 0 2 Msboxa [(6000)] 0.73953 0.59691 0 2 Msboxa [(8000)] 0.9781 0.59691 0 2 Msboxa [( Hz)] 1.025 0.59691 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-14)] 0.01131 0.03298 1 0 Msboxa [(-12)] 0.01131 0.11354 1 0 Msboxa [(-10)] 0.01131 0.1941 1 0 Msboxa [(-8)] 0.01131 0.27466 1 0 Msboxa [(-6)] 0.01131 0.35522 1 0 Msboxa [(-4)] 0.01131 0.43578 1 0 Msboxa [(-2)] 0.01131 0.51634 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.59691 moveto 0.26238 0.60316 lineto stroke grestore [(2000)] 0.26238 0.59691 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.59691 moveto 0.50095 0.60316 lineto stroke grestore [(4000)] 0.50095 0.59691 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.59691 moveto 0.73953 0.60316 lineto stroke grestore [(6000)] 0.73953 0.59691 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.59691 moveto 0.9781 0.60316 lineto stroke grestore [(8000)] 0.9781 0.59691 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.59691 moveto 0.07152 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.59691 moveto 0.11924 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.59691 moveto 0.16695 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.59691 moveto 0.21467 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.59691 moveto 0.3101 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.59691 moveto 0.35781 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.59691 moveto 0.40553 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.59691 moveto 0.45324 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.59691 moveto 0.54867 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.59691 moveto 0.59638 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.59691 moveto 0.6441 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.59691 moveto 0.69181 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.59691 moveto 0.78724 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.59691 moveto 0.83496 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.59691 moveto 0.88267 0.60066 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.59691 moveto 0.93038 0.60066 lineto stroke grestore [( Hz)] 1.025 0.59691 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.59691 moveto 1 0.59691 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.03298 moveto 0.03006 0.03298 lineto stroke grestore [(-14)] 0.01131 0.03298 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.11354 moveto 0.03006 0.11354 lineto stroke grestore [(-12)] 0.01131 0.11354 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.1941 moveto 0.03006 0.1941 lineto stroke grestore [(-10)] 0.01131 0.1941 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.27466 moveto 0.03006 0.27466 lineto stroke grestore [(-8)] 0.01131 0.27466 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.35522 moveto 0.03006 0.35522 lineto stroke grestore [(-6)] 0.01131 0.35522 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.43578 moveto 0.03006 0.43578 lineto stroke grestore [(-4)] 0.01131 0.43578 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.51634 moveto 0.03006 0.51634 lineto stroke grestore [(-2)] 0.01131 0.51634 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.04909 moveto 0.02756 0.04909 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.0652 moveto 0.02756 0.0652 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08131 moveto 0.02756 0.08131 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09743 moveto 0.02756 0.09743 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12965 moveto 0.02756 0.12965 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14576 moveto 0.02756 0.14576 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16187 moveto 0.02756 0.16187 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17799 moveto 0.02756 0.17799 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21021 moveto 0.02756 0.21021 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22632 moveto 0.02756 0.22632 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24244 moveto 0.02756 0.24244 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25855 moveto 0.02756 0.25855 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29077 moveto 0.02756 0.29077 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.30689 moveto 0.02756 0.30689 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.323 moveto 0.02756 0.323 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33911 moveto 0.02756 0.33911 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37133 moveto 0.02756 0.37133 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38745 moveto 0.02756 0.38745 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40356 moveto 0.02756 0.40356 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41967 moveto 0.02756 0.41967 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4519 moveto 0.02756 0.4519 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46801 moveto 0.02756 0.46801 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48412 moveto 0.02756 0.48412 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50023 moveto 0.02756 0.50023 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53246 moveto 0.02756 0.53246 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54857 moveto 0.02756 0.54857 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56468 moveto 0.02756 0.56468 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58079 moveto 0.02756 0.58079 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01686 moveto 0.02756 0.01686 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.00075 moveto 0.02756 0.00075 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.61302 moveto 0.02756 0.61302 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02393 0.31075 moveto 0.02517 0.31076 lineto 0.02641 0.31077 lineto 0.02765 0.31079 lineto 0.02889 0.31082 lineto 0.03137 0.31091 lineto 0.03385 0.31103 lineto 0.03633 0.31118 lineto 0.03881 0.31137 lineto 0.04377 0.31184 lineto 0.04873 0.31245 lineto 0.05369 0.31319 lineto 0.06361 0.31509 lineto 0.07353 0.31753 lineto 0.08345 0.32052 lineto 0.10328 0.3282 lineto 0.12312 0.3382 lineto 0.14296 0.35061 lineto 0.18264 0.38313 lineto 0.22232 0.42667 lineto 0.26199 0.48127 lineto 0.30167 0.54269 lineto 0.32151 0.57127 lineto 0.33143 0.58338 lineto 0.33639 0.58861 lineto 0.34135 0.59317 lineto 0.34631 0.59698 lineto 0.34879 0.59857 lineto 0.35127 0.59995 lineto 0.35375 0.60111 lineto 0.35623 0.60203 lineto 0.35747 0.6024 lineto 0.35871 0.60271 lineto 0.35995 0.60295 lineto 0.36119 0.60314 lineto 0.36243 0.60326 lineto 0.36367 0.60332 lineto 0.36491 0.60331 lineto 0.36615 0.60324 lineto 0.36739 0.60311 lineto 0.36863 0.60291 lineto 0.36987 0.60265 lineto 0.37111 0.60232 lineto 0.37359 0.60147 lineto 0.37607 0.60036 lineto 0.38103 0.59737 lineto 0.38599 0.59338 lineto 0.39095 0.58845 lineto 0.40087 0.57602 lineto 0.4207 0.54312 lineto Mistroke 0.46038 0.4625 lineto 0.50006 0.38253 lineto 0.53974 0.31191 lineto 0.57941 0.25163 lineto 0.61909 0.20067 lineto 0.65877 0.15777 lineto 0.69845 0.12185 lineto 0.73813 0.09206 lineto 0.7778 0.06773 lineto 0.81748 0.04836 lineto 0.85716 0.0336 lineto 0.877 0.02786 lineto 0.89684 0.02318 lineto 0.91667 0.01954 lineto 0.92659 0.0181 lineto 0.93651 0.01692 lineto 0.94643 0.01599 lineto 0.95139 0.01562 lineto 0.95635 0.01531 lineto 0.96131 0.01507 lineto 0.96379 0.01497 lineto 0.96627 0.01489 lineto 0.96875 0.01482 lineto 0.96999 0.01479 lineto 0.97123 0.01477 lineto 0.97247 0.01475 lineto 0.97371 0.01474 lineto 0.97495 0.01472 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V0003o`0006d0000D0003o`0008d000?o0000KP0001@00_n=0003 o`0006l0000D0003o`0008/000?o0000L00000L00ol400;o10000ol0002:0003o`00074000080003 o`00008000Co003o0`000ol000290003o`00078000000`3oo`03o`8000?o00000P001?l00?l300?o R0000ol0001c000020000ol000020004o`00o`<000?o0000Q`000ol0001d000020000ol000020004 o`00o`<000?o0000Q`000ol0001d00001`02o`D00_l400;oQ`000ol0001e000050000ol000250003 o`0007H0000D0003o`0008@000?o0000M`0001@000?o0000Q0000ol0001g00005002oh@000?o0000 N00001@000?o0000PP000ol0001i000050000ol000210003o`0007X0000D0003o`00084000?o0000 NP0001@00_n10003o`0007/0000D0003o`0007l000?o0000O00001@000?o0000OP000ol0001m0000 5002ogl000?o0000O@0001@000?o0000O@000ol0001n00003P02o`@000?o0000O0000ol0001o0000 3@001?l00?l30003o`0007/000?o0000P00000L01Ol01@3o003o00<00omk0003o`000800000>00;o 10000ol0001j0003o`000840000=0004o`00o`<000?o0000N@000ol0002200003P02o`@000?o0000 N@000ol0002200005002ogT000?o0000P`0001@000?o0000M`000ol00024000050000ol0001f0003 o`0008D0000D0003o`0007H000?o0000Q@0001@00_mf0003o`0008H0000D00[oK@000ol000270000 50000ol0000700CoJ@000ol0002700005002o``00_mV0003o`0008P0000D0003o`0000d00omS0003 o`0008P0000D0003o`0001000_mP0003o`0008T0000D0003o`0001800_mM0003o`0008X0000D00;o 5@02oe/000?o0000RP0001@000?o00005P02oeP000?o0000R`0000h00_l40003o`0001P000?o0000 E@000ol0002;00003@001?l00?l30003o`0001T00_mD0003o`0008`0000700Go00D0o`00o`0300?o 6`000ol0001A0003o`0008`0000=00?o10000ol0000L0003o`0004l000?o0000S@0000d000?o0000 10000ol0000M00;oC`000ol0002=00003P03o`<00_lP0003o`0004/000?o0000SP0001@000?o0000 80000ol000190003o`0008l0000D0003o`00024000?o0000B0000ol0002?000050000ol0000R0003 o`0004H000?o0000T00001@00_lS0003o`0004H000?o0000T00001@000?o00008`000ol000140003 o`000940000D0003o`0002@000?o0000@`000ol0002A000050000ol0000U0003o`00044000?o0000 TP0001@00_lW0003o`00040000?o0000TP0001@000?o00009`000ol0000n0003o`0009<0000D0003 o`0002P000?o0000?@000ol0002C000050000ol0000Y0003o`0003/000?o0000U00001@00_l[0003 o`0003X000?o0000U00000h00ol30003o`0002/000?o0000>0000ol0002E00003`000ol000020003 o`0002/000?o0000>0000ol0002E00001`05o`030?oo00;o0`03ob`000?o0000=`000ol0002E0000 3@000ol0o`040003o`0002d000?o0000=@000ol0002F00003@000ol0o`040003o`0002d000?o0000 =@000ol0002F00003P02o`@000?o0000;P000ol0000c0003o`0009L0000D00;o<0000ol0000b0003 o`0009L0000D0003o`00030000?o0000<0000ol0002H000050000ol0000`0003o`00030000?o0000 V00001@000?o0000<@000ol0000^0003o`0009T0000D00;o<`000ol0000]0003o`0009T0000D0003 o`00038000?o0000;0000ol0002J000050000ol0000c0003o`0002/000?o0000VP0001@000?o0000 =0000ol0000Y0003o`0009/0000D00;o=@000ol0000Y0003o`0009/0000D0003o`0003D000?o0000 9`000ol0002L000050000ol0000f0003o`0002H000?o0000W00001@00_lh0003o`0002@000?o0000 W@0001@000?o0000=`000ol0000T0003o`0009d0000=00Co0`000ol0000h0003o`00028000?o0000 WP0000h000?o00000`000ol0000i0003o`00024000?o0000WP0000L01Ol30003o`0000800oli0003 o`00020000?o0000W`00010000Go0000o`0l0003o`0001l000?o0000W`0000d000Co003o0`000ol0 000k0003o`0001d000?o0000X00000h00_l40003o`0003`000?o000070000ol0002P00005002ocd0 00?o00006`000ol0002Q000050000ol0000m0003o`0001X000?o0000X@0001@000?o0000?P000ol0 000H0003o`000:80000D00;o:P04o`<00_l400;o1003oaX000?o00001P03o`<00_l400;o1002ob<0 0_l400;o1002o`@00_lS00;o1002o`@00_l400;o6P0001@000?o0000:P000ol000020004o`00o`80 00Co003o0P000ol00002oaP000?o000020001Ol0003o008000Co003o0P001?l00?l20003o`0001l0 00Co003o0P001?l00?l20004o`00o`8000Co003o8@001?l00?l20004o`00o`8000Co003o0P001?l0 0?lI000050000ol0000[0005o`000?l00P001?l00?l20004o`00o`800_lG0003o`0000L01?l20004 o`00o`8000Co003o0P001?l00?lQ0004o`00o`8000Co003o0P001?l00?l20004o`00ob4000Co003o 0P001?l00?l20004o`00o`8000Co003o6@0001@000?o0000;0001?l00?l20004o`00o`8000Co003o 0P000ol0o`0F0003o`0000L000?o0?l00`001?l00?l20004o`00o`8000Co003o8@03o`<000Co003o 0P001?l00?l20004o`00ob800_l30004o`00o`8000Co003o0P001?l00?lI00005002obX000Co003o 0P001?l00?l20004o`00o`8000Co003o0P000ol0000B0003o`0000P000?o0?l00`001?l00?l20004 o`00o`8000Co003o8@000ol000030004o`00o`8000Co003o0P001?l00?lQ0004o`00o`8000Co003o 0P001?l00?l20004o`00oaT0000D0003o`0002X00_l400;o1002o`@00_l30003o`00018000?o0000 2@02o`@00_l400;o1002ob<00ol300;o1002o`@00_lS00;o1002o`@00_l400;o6P0001@000?o0000 @P000ol0000@0003o`000:H0000D0003o`0004<000?o00003P000ol0002W00005002odD000?o0000 3@000ol0002W000050000ol000150003o`0000/000?o0000Z00001@000?o0000AP000ol000090003 o`0009`00_l200;o00<0ool00_l2000050000ol000170003o`0000L000?o0000WP001?l00?l30003 o`000080000?0>So4P001?l00?l300;o0`0001@000?o0000=0000ol0000C00Go7@000ol0000d0003 o`0003@000?o00005@04o`@000?o00000@0001@000?o0000lP001?l00?l200Co0P0001@00_ob00;o 0P02o`L0000D0003o`000?h0003o01H0003o01H0003o01H0003o01H0003o01H0001l00CoU@0007d0 00?o0000U@0006X00_l200;o0P04o`030?oo00;o0P04o`<00ol200;o00@0ool01?l300CoN`0006/0 00Co0?oo0P000ol000060004o`00o`<000?o0?l00`000ol0o`020003o`0000<000Co003oO`0006/0 0ol300Go00<0ool00_l20007o`000?l0o`030003o`3o008000?o00001?l200GoN`0006/000Co003o 0P001ol0003o0?l01@001ol0003o0?l00`000ol0o`020004o`00o`D000Go0000o`1k0000J`001?l0 0?l300?o0P04o`030?oo00?o0`03o`030?oo00?o0P04o`<00oml0000JP04ojL0003o01H0003o01H0 003o01H0003o01H0000@00Soo@0000l000Oo0000o`3o008000?o0000nP0000l000Oo0000o`3o0080 00?o0000nP0000l000Ko0000o`03ood0000@00Co00D0o`00o`3l00004`05ood0000B00;oo`020000 o`0F0000o`0F0000\ \>"], ImageRangeCache->{{{0, 276}, {170, 0}} -> {-758.526, -14.9567, 36.3165, 0.107547}}] }, Open ]], Cell[TextData[ "The poles and zeros in the complex z-plane of a stable discrete time filter \ are inside the unit circle. In general the resonant frequency of the root is \ proportional to the angle of the root from the positive real axis. Roots that \ are close to the unit circle will have a high q. The plot below shows the \ roots of a second order section with resonant frequency of 1000 Hz and a \ sampling frequency of 16000 Hz as the q varies from 0.5 to 2.2."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ListPlot[Map[{Re[#],Im[#]}&,\n\tFlatten[Table[\n\t\tRationalZeros[\n\t\t\t\ N[SecondOrderFromCenterQ[1000,q,16000]]],\n\t\t{q,.501,2.2,.1}]]],\n\t\t\ PlotRange->{{-1,1},{-1,1}},\n\t\tAspectRatio->1,\n\t\tPlotLabel->\"Location \ of Roots vs. Q (Complex Z-Plane)\"];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.5 0.5 0.5 0.5 [ [(-1)] 0 0.5 0 2 Msboxa [(-0.75)] 0.125 0.5 0 2 Msboxa [(-0.5)] 0.25 0.5 0 2 Msboxa [(-0.25)] 0.375 0.5 0 2 Msboxa [(0.25)] 0.625 0.5 0 2 Msboxa [(0.5)] 0.75 0.5 0 2 Msboxa [(0.75)] 0.875 0.5 0 2 Msboxa [(1)] 1 0.5 0 2 Msboxa [(Location of Roots vs. Q \\(Complex Z-Plane\\))] 0.5 1 0 -2 Msboxa [(-1)] 0.4875 0 1 0 Msboxa [(-0.75)] 0.4875 0.125 1 0 Msboxa [(-0.5)] 0.4875 0.25 1 0 Msboxa [(-0.25)] 0.4875 0.375 1 0 Msboxa [(0.25)] 0.4875 0.625 1 0 Msboxa [(0.5)] 0.4875 0.75 1 0 Msboxa [(0.75)] 0.4875 0.875 1 0 Msboxa [(1)] 0.4875 1 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 1.001 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0 0.5 moveto 0 0.50625 lineto stroke grestore [(-1)] 0 0.5 0 2 Mshowa gsave 0.002 setlinewidth 0.125 0.5 moveto 0.125 0.50625 lineto stroke grestore [(-0.75)] 0.125 0.5 0 2 Mshowa gsave 0.002 setlinewidth 0.25 0.5 moveto 0.25 0.50625 lineto stroke grestore [(-0.5)] 0.25 0.5 0 2 Mshowa gsave 0.002 setlinewidth 0.375 0.5 moveto 0.375 0.50625 lineto stroke grestore [(-0.25)] 0.375 0.5 0 2 Mshowa gsave 0.002 setlinewidth 0.625 0.5 moveto 0.625 0.50625 lineto stroke grestore [(0.25)] 0.625 0.5 0 2 Mshowa gsave 0.002 setlinewidth 0.75 0.5 moveto 0.75 0.50625 lineto stroke grestore [(0.5)] 0.75 0.5 0 2 Mshowa gsave 0.002 setlinewidth 0.875 0.5 moveto 0.875 0.50625 lineto stroke grestore [(0.75)] 0.875 0.5 0 2 Mshowa gsave 0.002 setlinewidth 1 0.5 moveto 1 0.50625 lineto stroke grestore [(1)] 1 0.5 0 2 Mshowa gsave 0.001 setlinewidth 0.025 0.5 moveto 0.025 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.05 0.5 moveto 0.05 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.075 0.5 moveto 0.075 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.1 0.5 moveto 0.1 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.15 0.5 moveto 0.15 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.175 0.5 moveto 0.175 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.2 0.5 moveto 0.2 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.225 0.5 moveto 0.225 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.275 0.5 moveto 0.275 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.3 0.5 moveto 0.3 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.325 0.5 moveto 0.325 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.35 0.5 moveto 0.35 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.4 0.5 moveto 0.4 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.425 0.5 moveto 0.425 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.45 0.5 moveto 0.45 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.475 0.5 moveto 0.475 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.525 0.5 moveto 0.525 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.55 0.5 moveto 0.55 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.575 0.5 moveto 0.575 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.6 0.5 moveto 0.6 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.65 0.5 moveto 0.65 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.675 0.5 moveto 0.675 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.7 0.5 moveto 0.7 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.725 0.5 moveto 0.725 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.775 0.5 moveto 0.775 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.8 0.5 moveto 0.8 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.825 0.5 moveto 0.825 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.85 0.5 moveto 0.85 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.9 0.5 moveto 0.9 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.925 0.5 moveto 0.925 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.95 0.5 moveto 0.95 0.50375 lineto stroke grestore gsave 0.001 setlinewidth 0.975 0.5 moveto 0.975 0.50375 lineto stroke grestore gsave 0.002 setlinewidth 0 0.5 moveto 1 0.5 lineto stroke grestore [(Location of Roots vs. Q \\(Complex Z-Plane\\))] 0.5 1 0 -2 Mshowa gsave 0.002 setlinewidth 0.5 0 moveto 0.50625 0 lineto stroke grestore [(-1)] 0.4875 0 1 0 Mshowa gsave 0.002 setlinewidth 0.5 0.125 moveto 0.50625 0.125 lineto stroke grestore [(-0.75)] 0.4875 0.125 1 0 Mshowa gsave 0.002 setlinewidth 0.5 0.25 moveto 0.50625 0.25 lineto stroke grestore [(-0.5)] 0.4875 0.25 1 0 Mshowa gsave 0.002 setlinewidth 0.5 0.375 moveto 0.50625 0.375 lineto stroke grestore [(-0.25)] 0.4875 0.375 1 0 Mshowa gsave 0.002 setlinewidth 0.5 0.625 moveto 0.50625 0.625 lineto stroke grestore [(0.25)] 0.4875 0.625 1 0 Mshowa gsave 0.002 setlinewidth 0.5 0.75 moveto 0.50625 0.75 lineto stroke grestore [(0.5)] 0.4875 0.75 1 0 Mshowa gsave 0.002 setlinewidth 0.5 0.875 moveto 0.50625 0.875 lineto stroke grestore [(0.75)] 0.4875 0.875 1 0 Mshowa gsave 0.002 setlinewidth 0.5 1 moveto 0.50625 1 lineto stroke grestore [(1)] 0.4875 1 1 0 Mshowa gsave 0.001 setlinewidth 0.5 0.025 moveto 0.50375 0.025 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.05 moveto 0.50375 0.05 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.075 moveto 0.50375 0.075 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.1 moveto 0.50375 0.1 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.15 moveto 0.50375 0.15 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.175 moveto 0.50375 0.175 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.2 moveto 0.50375 0.2 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.225 moveto 0.50375 0.225 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.275 moveto 0.50375 0.275 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.3 moveto 0.50375 0.3 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.325 moveto 0.50375 0.325 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.35 moveto 0.50375 0.35 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.4 moveto 0.50375 0.4 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.425 moveto 0.50375 0.425 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.45 moveto 0.50375 0.45 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.475 moveto 0.50375 0.475 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.525 moveto 0.50375 0.525 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.55 moveto 0.50375 0.55 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.575 moveto 0.50375 0.575 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.6 moveto 0.50375 0.6 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.65 moveto 0.50375 0.65 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.675 moveto 0.50375 0.675 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.7 moveto 0.50375 0.7 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.725 moveto 0.50375 0.725 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.775 moveto 0.50375 0.775 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.8 moveto 0.50375 0.8 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.825 moveto 0.50375 0.825 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.85 moveto 0.50375 0.85 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.9 moveto 0.50375 0.9 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.925 moveto 0.50375 0.925 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.95 moveto 0.50375 0.95 lineto stroke grestore gsave 0.001 setlinewidth 0.5 0.975 moveto 0.50375 0.975 lineto stroke grestore gsave 0.002 setlinewidth 0.5 0 moveto 0.5 1 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto closepath clip newpath gsave 0.008 setlinewidth 0.83778 0.49162 Mdot 0.83778 0.50838 Mdot 0.85212 0.42204 Mdot 0.85212 0.57796 Mdot 0.86363 0.39731 Mdot 0.86363 0.60269 Mdot 0.87303 0.38182 Mdot 0.87303 0.61818 Mdot 0.88083 0.37097 Mdot 0.88083 0.62903 Mdot 0.88739 0.36288 Mdot 0.88739 0.63712 Mdot 0.89299 0.35661 Mdot 0.89299 0.64339 Mdot 0.89781 0.3516 Mdot 0.89781 0.6484 Mdot 0.90201 0.34752 Mdot 0.90201 0.65248 Mdot 0.9057 0.34412 Mdot 0.9057 0.65588 Mdot 0.90896 0.34125 Mdot 0.90896 0.65875 Mdot 0.91187 0.3388 Mdot 0.91187 0.6612 Mdot 0.91448 0.33668 Mdot 0.91448 0.66332 Mdot 0.91683 0.33484 Mdot 0.91683 0.66516 Mdot 0.91895 0.33321 Mdot 0.91895 0.66679 Mdot 0.92089 0.33177 Mdot 0.92089 0.66823 Mdot 0.92266 0.33049 Mdot 0.92266 0.66951 Mdot grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{279, 279}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V00;o2P02o`<01?lB0003o`0001<00_l:00;o0`04o`l00_l900Co 3P02o`T01?l200Co4`02o`X0002<00;oR@0008`000?o0000R00008`000?o0000R00008`000?o0000 R00008`000?o0000E002oc80002<0003o`0005@00_lb00002`3oo`Co2@0000/000?o00000`000ol0 00040003o`0000<000?o000010000ol000030003o`0000@000?o00000`000ol000040003o`0000<0 00?o000010000ol000030003o`0000<000?o000010000ol000030003o`0000@000?o00000`000ol0 00040003o`0000<000?o000010000ol000030003o`0000<000?o000010000ol000030003o`0000@0 00?o00000`000ol000040003o`0000<000?o000010000ol000030003o`0000@000?o00000`000ol0 00030003o`0000@000?o00000`000ol000040003o`0000<000?o000010000ol000030003o`0000@0 00?o00000`000ol0000700002`000ol0000M0003o`0001h000?o00007@000ol0000M0003o`0001d0 00?o00007P000ol0000C00;o20000ol0000M0003o`0000L0002<0003o`0005@00_lb0000S0000ol0 00280000S0000ol000280000S0000ol000280000S002ohT0002<0003o`0008P0002<0003o`0008P0 002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0002<00;oR@0008`000?o0000R00008`0 00?o0000R00008`000?o0000R00008`000?o0000R00008`000?o0000R00008`000?o0000R00008`0 0_mH00;o;`0008`000?o0000E`02obl0002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0 002<0003o`0008P0002<00;oF`02ob`0002<0003o`0005X00_l/0000S0000ol000280000S0000ol0 00280000S0000ol0001M00;o:@0007<00_l400;o0`04o`800ol50003o`0005d00_lY0000LP001?l0 0?l300;o10000ol000050003o`00008000?o0000R000078000Co003o2P000ol000040003o`000080 0omO00;o9`00078000Co003o2`000ol00003o`D000?o0000G`02obL0001b0004o`00o`P000Co003o 0P000ol000050003o`0006000_lV0000L`02o`X00_l300Co10000ol0001P00;o9P0008`000?o0000 HP02ob@0002<0003o`0006800olS0000S002of@00olR0000S0000ol0001T00?o8@0008`000?o0000 I@03ob00002<0003o`0006H00olO0000S0000ol0001W00Co7@0008`000?o0000J004oa`0002<0003 o`0006X00_lL0000S002ohT0002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0002<0003 o`0008P0002<0003o`0008P0002<00;oR@0008`000?o0000R00008`000?o0000R00008`000?o0000 R00008`000?o0000R00008`000?o0000R00008`000?o0000R00008`00_n90000S0000ol000280000 S0000ol000280000S0000ol000280000N@02o`@00_l300?o1@000ol000280000N0001?l00?l300;o 1P000ol000020003o`0008P0001h0004o`00o`/000?o00000P03ohP0001h0004o`00o`P00ol50003 o`0008P0001h0004o`00o`P000?o00001@000ol000280000N@02o`T01?l40003o`0008P0002<0003 o`0008P0002<0003o`0008P0002<00;oR@0008`000?o0000R00008`000?o0000R00008`000?o0000 R00008`000?o0000R00008`000?o0000R00008`000?o0000R00008`00_n90000S0000ol000280000 S0000ol000280000S0000ol000280000S0000ol000280000S0000ol000280000S002ohT0002<0003 o`0008P0002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0002<0003 o`0008P0002<00;oR@0008`000?o0000R00008`000?o0000R00008`000?o0000R00007<00_l400;o 10000ol0000200?o1@000ol000280000LP001?l00?l300;o10000ol000050003o`00008000?o0000 R000078000Co003o2P000ol000040003o`0000800on80000LP001?l00?l:0004o`0000?o1@000ol0 00280000LP001?l00?l;0004o`00o`L000?o0000R00007<00_l900Co0P04o`@000?o0000R00008`0 00?o0000R00008`000?o0000R00008`000?o0000R00008`00_n90000S0000ol000280000S0000ol0 00280000S0000ol000280000S0000ol000280000S0000ol000280000S002ohT0002<0003o`0008P0 002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0002<0003o`0008P0 002<00;oR@0008`000?o0000R00008`000?o0000R00008`000?o0000R00008`000?o0000R00008`0 00?o0000R00008`00_n90000S0000ol000280000S0000ol000280000S0000ol000280000Q003o`D0 00?o0000R00008D000?o000010000ol000280000Q@000ol0000400?oR00008D000?o0000S`0008D0 00?o0000S`0008@00_nA0000o`0H0000o`0H0000UP04o`X000?o00004P04odH000?o00004@0009H0 00?o00002P000ol0000D0003o`0004L000?o0000400001401Ol300?o0`03o`801Ol200?o0P05o`80 0ol200;o00<0ool02003o`801?l700;o0P02o`800ol300?o0`03o`801?l900;o0`04o`<00_l900?o 2P000ol0000200Co0`03o`8000Ko0?l0o`04o`801Ol200Ko00<0ool02004o`L00ol400Go00<0ool0 0ol0103oo`02o`801?l30003o`000100000B0004o`00o`8000Oo0000o`3o00<000?o0?l00P001Ol0 003o008000Go0000o`030007o`000?l0o`020003o`0000H000Go0000o`020003o`0000P000Co0?oo 0P001ol0003o0?l00`001?l00?l20003o`00008000?o00001`02o`H000Co00000_l80005o`000?l0 2@001Ol0003o00H000go0000o`3o0?l0o`3o00<000Go0000o`030003o`0000<000?o0?l02P000ol0 o`080003o`0000D000Go0000o`020004o`00o`8000Co003o1`000ol0000@00004P001?l00?l20007 o`000?l0o`0500Co0`000ol000040005o`000?l00`000ol0o`020003o`0000H000Go0000o`020003 o`0000P00ol30007o`000?l0o`030004o`00o`@01?l80004o`3oo`801?l=0005o`000?l02@001Ol0 003o00H000go0000o`3o0?l0o`3o00<000Go0000o`0300Go0P000ol000090003o`0000801Ol0103o ool50004o`0000Co0P001?l00?l200Go0`000ol0000@00004P000ol000030007o`000?l0o`030003 o`00008000Go0000o`060005o`000?l00`000ol0o`020003o`0000H000Go0000o`020003o`0000P0 00Co003o0P001ol0003o0?l00`001?l00?l40003o`0000T000Co003o0P000ol0000>0005o`000?l0 2@001Ol0003o00H000go0000o`3o0?l0o`3o00<000Go0000o`030009o`000?l0o`3o00/000?o0000 1`001?l00?l40003o`0000@000Co003o0P001?l00?l30005o`000?l04P00018000?o00001003o`<0 1?l200?o0P04o`<00_l400?o00<0ool00ol900?o0P04o`P000Co003o0`03o`<00ol200Co0P04o`L0 0_l200;o00<0ool00_l=0005o`000?l02@001Ol0003o00<000Co00000ol00`3oo`09o`@000?o0000 0P03o`040?oo00;o20000ol0o`090004o`00o`@000?o00000P03o`030?oo00?o0`03o`@000?o0000 400001400olG0003o`00024000?o00001`04oa0000?o00009P03o`/000Co00001?lF0003o`0001<0 1?l700Co1@000ol0000D0003o`000140000[0003o`0000@000?o00006P03oa/000?o0000D003obL0 0olZ0000o`0H0000\ \>"], ImageRangeCache->{{{0, 278}, {278, 0}} -> {-1.08916, -1.03877, 0.00775202, 0.00775202}}] }, Open ]], Cell[TextData[ "The following plot shows the frequency response of a number of second order \ discrete bandpass filters with a center frequency of 1000 Hz and a sampling \ frequency of 16000. The flattest curve is the frequency response of a second \ order bandpass filter with a q of 0.7 while the sharpest (narrowest) curve is \ the frequency response when the q is 10."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "Show[Table[\n\tFreqResponse[\n\t\tMakeFilter[1,\n\t\t\t\t\t\ SecondOrderFromCenterQ[1000,q,16000],\n\t\t\t\t\t16000,1000,1]//N,\n\t\t\ 16000],\n\t{q,.7,10,1}]];"], "Input", CellOpen->False, AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000119286 0.568778 0.0115664 [ [(2000)] 0.26238 0.56878 0 2 Msboxa [(4000)] 0.50095 0.56878 0 2 Msboxa [(6000)] 0.73953 0.56878 0 2 Msboxa [(8000)] 0.9781 0.56878 0 2 Msboxa [( Hz)] 1.025 0.56878 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-40)] 0.01131 0.10612 1 0 Msboxa [(-30)] 0.01131 0.22179 1 0 Msboxa [(-20)] 0.01131 0.33745 1 0 Msboxa [(-10)] 0.01131 0.45311 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.56878 moveto 0.26238 0.57503 lineto stroke grestore [(2000)] 0.26238 0.56878 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.56878 moveto 0.50095 0.57503 lineto stroke grestore [(4000)] 0.50095 0.56878 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.56878 moveto 0.73953 0.57503 lineto stroke grestore [(6000)] 0.73953 0.56878 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.56878 moveto 0.9781 0.57503 lineto stroke grestore [(8000)] 0.9781 0.56878 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.56878 moveto 0.07152 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.56878 moveto 0.11924 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.56878 moveto 0.16695 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.56878 moveto 0.21467 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.56878 moveto 0.3101 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.56878 moveto 0.35781 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.56878 moveto 0.40553 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.56878 moveto 0.45324 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.56878 moveto 0.54867 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.56878 moveto 0.59638 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.56878 moveto 0.6441 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.56878 moveto 0.69181 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.56878 moveto 0.78724 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.56878 moveto 0.83496 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.56878 moveto 0.88267 0.57253 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.56878 moveto 0.93038 0.57253 lineto stroke grestore [( Hz)] 1.025 0.56878 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.56878 moveto 1 0.56878 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.10612 moveto 0.03006 0.10612 lineto stroke grestore [(-40)] 0.01131 0.10612 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.22179 moveto 0.03006 0.22179 lineto stroke grestore [(-30)] 0.01131 0.22179 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.33745 moveto 0.03006 0.33745 lineto stroke grestore [(-20)] 0.01131 0.33745 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.45311 moveto 0.03006 0.45311 lineto stroke grestore [(-10)] 0.01131 0.45311 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.12925 moveto 0.02756 0.12925 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15239 moveto 0.02756 0.15239 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17552 moveto 0.02756 0.17552 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19865 moveto 0.02756 0.19865 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24492 moveto 0.02756 0.24492 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26805 moveto 0.02756 0.26805 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29118 moveto 0.02756 0.29118 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.31432 moveto 0.02756 0.31432 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36058 moveto 0.02756 0.36058 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38372 moveto 0.02756 0.38372 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40685 moveto 0.02756 0.40685 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42998 moveto 0.02756 0.42998 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47625 moveto 0.02756 0.47625 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49938 moveto 0.02756 0.49938 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52251 moveto 0.02756 0.52251 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54565 moveto 0.02756 0.54565 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08299 moveto 0.02756 0.08299 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05986 moveto 0.02756 0.05986 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.03672 moveto 0.02756 0.03672 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01359 moveto 0.02756 0.01359 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.59191 moveto 0.02756 0.59191 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.61504 moveto 0.02756 0.61504 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave gsave gsave 0.004 setlinewidth 0.02393 0.60332 moveto 0.02517 0.60332 lineto 0.02641 0.60332 lineto 0.02765 0.60332 lineto 0.02889 0.60332 lineto 0.03013 0.60332 lineto 0.03137 0.60332 lineto 0.03261 0.60331 lineto 0.03385 0.60331 lineto 0.03509 0.60331 lineto 0.03633 0.6033 lineto 0.03757 0.6033 lineto 0.03881 0.60329 lineto 0.04129 0.60328 lineto 0.04377 0.60326 lineto 0.04625 0.60323 lineto 0.04873 0.60319 lineto 0.05121 0.60314 lineto 0.05369 0.60307 lineto 0.05617 0.60299 lineto 0.05865 0.60289 lineto 0.06361 0.60262 lineto 0.06857 0.60223 lineto 0.07353 0.60171 lineto 0.07849 0.60101 lineto 0.08345 0.60012 lineto 0.0884 0.599 lineto 0.09336 0.59764 lineto 0.10328 0.5941 lineto 0.1132 0.58941 lineto 0.12312 0.58355 lineto 0.14296 0.56889 lineto 0.18264 0.53334 lineto 0.22232 0.49777 lineto 0.26199 0.466 lineto 0.30167 0.43842 lineto 0.34135 0.41455 lineto 0.38103 0.3938 lineto 0.4207 0.37568 lineto 0.46038 0.35979 lineto 0.50006 0.34584 lineto 0.53974 0.33357 lineto 0.57941 0.32281 lineto 0.61909 0.3134 lineto 0.65877 0.30523 lineto 0.69845 0.2982 lineto 0.73813 0.29223 lineto 0.7778 0.28726 lineto 0.81748 0.28325 lineto 0.85716 0.28016 lineto Mistroke 0.877 0.27895 lineto 0.89684 0.27796 lineto 0.91667 0.27719 lineto 0.92659 0.27688 lineto 0.93651 0.27663 lineto 0.94643 0.27643 lineto 0.95139 0.27635 lineto 0.95635 0.27629 lineto 0.96131 0.27624 lineto 0.96379 0.27621 lineto 0.96627 0.2762 lineto 0.96875 0.27618 lineto 0.96999 0.27618 lineto 0.97123 0.27617 lineto 0.97247 0.27617 lineto 0.97371 0.27616 lineto 0.97495 0.27616 lineto 0.97619 0.27616 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.51417 moveto 0.02517 0.51418 lineto 0.02641 0.51421 lineto 0.02765 0.51426 lineto 0.02889 0.51432 lineto 0.03137 0.51451 lineto 0.03385 0.51477 lineto 0.03633 0.5151 lineto 0.03881 0.51551 lineto 0.04377 0.51654 lineto 0.04873 0.51788 lineto 0.05369 0.51953 lineto 0.06361 0.52378 lineto 0.07353 0.52932 lineto 0.08345 0.5362 lineto 0.10328 0.55344 lineto 0.1132 0.56265 lineto 0.11816 0.56677 lineto 0.12064 0.56858 lineto 0.12312 0.57015 lineto 0.1256 0.57144 lineto 0.12684 0.57196 lineto 0.12808 0.57239 lineto 0.12932 0.57272 lineto 0.13056 0.57296 lineto 0.1318 0.57308 lineto 0.13304 0.57309 lineto 0.13428 0.57299 lineto 0.13552 0.57277 lineto 0.13676 0.57242 lineto 0.138 0.57196 lineto 0.14048 0.57066 lineto 0.14296 0.56889 lineto 0.14792 0.564 lineto 0.15288 0.55759 lineto 0.1628 0.54179 lineto 0.18264 0.50687 lineto 0.22232 0.44704 lineto 0.26199 0.40222 lineto 0.30167 0.36723 lineto 0.34135 0.3388 lineto 0.38103 0.31506 lineto 0.4207 0.29487 lineto 0.46038 0.2775 lineto 0.50006 0.26244 lineto 0.53974 0.24935 lineto 0.57941 0.23794 lineto 0.61909 0.22803 lineto 0.65877 0.21946 lineto 0.69845 0.21211 lineto Mistroke 0.73813 0.20589 lineto 0.7778 0.20073 lineto 0.81748 0.19657 lineto 0.85716 0.19337 lineto 0.877 0.19211 lineto 0.89684 0.19109 lineto 0.91667 0.19029 lineto 0.92659 0.18997 lineto 0.93651 0.18971 lineto 0.94643 0.18951 lineto 0.95139 0.18943 lineto 0.95635 0.18936 lineto 0.96131 0.18931 lineto 0.96379 0.18928 lineto 0.96627 0.18927 lineto 0.96875 0.18925 lineto 0.96999 0.18925 lineto 0.97123 0.18924 lineto 0.97247 0.18924 lineto 0.97371 0.18923 lineto 0.97495 0.18923 lineto 0.97619 0.18923 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.46769 moveto 0.02517 0.4677 lineto 0.02641 0.46773 lineto 0.02765 0.46779 lineto 0.02889 0.46786 lineto 0.03137 0.46807 lineto 0.03385 0.46836 lineto 0.03633 0.46874 lineto 0.03881 0.4692 lineto 0.04377 0.47037 lineto 0.04873 0.4719 lineto 0.05369 0.47379 lineto 0.06361 0.47873 lineto 0.07353 0.48536 lineto 0.08345 0.49394 lineto 0.10328 0.51819 lineto 0.1132 0.53434 lineto 0.12312 0.55222 lineto 0.12808 0.5606 lineto 0.13056 0.5642 lineto 0.13304 0.56715 lineto 0.13428 0.56833 lineto 0.13552 0.56926 lineto 0.13676 0.56994 lineto 0.138 0.57034 lineto 0.13924 0.57044 lineto 0.14048 0.57023 lineto 0.14172 0.56972 lineto 0.14296 0.56889 lineto 0.1442 0.56775 lineto 0.14544 0.56632 lineto 0.14792 0.56265 lineto 0.15288 0.5527 lineto 0.1628 0.52762 lineto 0.18264 0.47873 lineto 0.20248 0.43961 lineto 0.22232 0.40823 lineto 0.26199 0.35998 lineto 0.30167 0.32348 lineto 0.34135 0.29425 lineto 0.38103 0.27002 lineto 0.4207 0.24952 lineto 0.46038 0.23193 lineto 0.50006 0.21672 lineto 0.53974 0.20351 lineto 0.57941 0.19201 lineto 0.61909 0.18203 lineto 0.65877 0.17341 lineto 0.69845 0.16602 lineto 0.73813 0.15977 lineto Mistroke 0.7778 0.15458 lineto 0.81748 0.1504 lineto 0.85716 0.14719 lineto 0.877 0.14593 lineto 0.89684 0.1449 lineto 0.91667 0.14409 lineto 0.92659 0.14378 lineto 0.93651 0.14352 lineto 0.94643 0.14331 lineto 0.95139 0.14323 lineto 0.95635 0.14316 lineto 0.96131 0.14311 lineto 0.96379 0.14308 lineto 0.96627 0.14307 lineto 0.96875 0.14305 lineto 0.96999 0.14305 lineto 0.97123 0.14304 lineto 0.97247 0.14304 lineto 0.97371 0.14303 lineto 0.97495 0.14303 lineto 0.97619 0.14303 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.43603 moveto 0.02517 0.43605 lineto 0.02641 0.43608 lineto 0.02765 0.43614 lineto 0.02889 0.43621 lineto 0.03137 0.43643 lineto 0.03385 0.43673 lineto 0.03633 0.43712 lineto 0.03881 0.4376 lineto 0.04377 0.43881 lineto 0.04873 0.4404 lineto 0.05369 0.44236 lineto 0.06361 0.44752 lineto 0.07353 0.4545 lineto 0.08345 0.46365 lineto 0.09336 0.47544 lineto 0.10328 0.49056 lineto 0.12312 0.53401 lineto 0.12808 0.54725 lineto 0.13056 0.55368 lineto 0.13304 0.5596 lineto 0.13552 0.56457 lineto 0.13676 0.56653 lineto 0.138 0.56807 lineto 0.13924 0.56911 lineto 0.14048 0.56961 lineto 0.14172 0.56954 lineto 0.14296 0.56888 lineto 0.1442 0.56764 lineto 0.14544 0.56584 lineto 0.14792 0.56075 lineto 0.15288 0.54634 lineto 0.1628 0.51227 lineto 0.18264 0.45437 lineto 0.20248 0.41201 lineto 0.22232 0.37918 lineto 0.26199 0.3297 lineto 0.30167 0.2927 lineto 0.34135 0.2632 lineto 0.38103 0.23882 lineto 0.4207 0.21822 lineto 0.46038 0.20056 lineto 0.50006 0.1853 lineto 0.53974 0.17205 lineto 0.57941 0.16053 lineto 0.61909 0.15053 lineto 0.65877 0.14189 lineto 0.69845 0.13449 lineto 0.73813 0.12822 lineto 0.7778 0.12303 lineto Mistroke 0.81748 0.11884 lineto 0.85716 0.11562 lineto 0.877 0.11436 lineto 0.89684 0.11333 lineto 0.91667 0.11253 lineto 0.92659 0.11221 lineto 0.93651 0.11195 lineto 0.94643 0.11174 lineto 0.95139 0.11166 lineto 0.95635 0.11159 lineto 0.96131 0.11154 lineto 0.96379 0.11152 lineto 0.96627 0.1115 lineto 0.96875 0.11148 lineto 0.96999 0.11148 lineto 0.97123 0.11147 lineto 0.97247 0.11147 lineto 0.97371 0.11146 lineto 0.97495 0.11146 lineto 0.97619 0.11146 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.412 moveto 0.02517 0.41201 lineto 0.02641 0.41205 lineto 0.02765 0.4121 lineto 0.02889 0.41218 lineto 0.03137 0.4124 lineto 0.03385 0.41271 lineto 0.03633 0.4131 lineto 0.03881 0.41358 lineto 0.04377 0.41482 lineto 0.04873 0.41643 lineto 0.05369 0.41843 lineto 0.06361 0.42368 lineto 0.07353 0.43082 lineto 0.08345 0.44022 lineto 0.09336 0.45244 lineto 0.10328 0.46837 lineto 0.1132 0.48934 lineto 0.12312 0.51715 lineto 0.12808 0.53382 lineto 0.13304 0.55115 lineto 0.13552 0.559 lineto 0.13676 0.56238 lineto 0.138 0.56524 lineto 0.13924 0.56742 lineto 0.14048 0.56881 lineto 0.14172 0.56932 lineto 0.14296 0.56888 lineto 0.1442 0.5675 lineto 0.14544 0.56522 lineto 0.14792 0.55836 lineto 0.15288 0.53905 lineto 0.1628 0.49736 lineto 0.17272 0.46233 lineto 0.18264 0.43386 lineto 0.20248 0.38984 lineto 0.22232 0.35632 lineto 0.26199 0.30627 lineto 0.30167 0.26904 lineto 0.34135 0.23943 lineto 0.38103 0.21498 lineto 0.4207 0.19434 lineto 0.46038 0.17665 lineto 0.50006 0.16137 lineto 0.53974 0.1481 lineto 0.57941 0.13657 lineto 0.61909 0.12656 lineto 0.65877 0.11791 lineto 0.69845 0.1105 lineto 0.73813 0.10424 lineto Mistroke 0.7778 0.09904 lineto 0.81748 0.09485 lineto 0.85716 0.09163 lineto 0.877 0.09037 lineto 0.89684 0.08933 lineto 0.91667 0.08853 lineto 0.92659 0.08821 lineto 0.93651 0.08795 lineto 0.94643 0.08774 lineto 0.95139 0.08766 lineto 0.95635 0.08759 lineto 0.96131 0.08754 lineto 0.96379 0.08752 lineto 0.96627 0.0875 lineto 0.96875 0.08749 lineto 0.96999 0.08748 lineto 0.97123 0.08747 lineto 0.97247 0.08747 lineto 0.97371 0.08747 lineto 0.97495 0.08746 lineto 0.97619 0.08746 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.39262 moveto 0.02517 0.39263 lineto 0.02641 0.39267 lineto 0.02765 0.39272 lineto 0.02889 0.3928 lineto 0.03137 0.39302 lineto 0.03385 0.39333 lineto 0.03633 0.39373 lineto 0.03881 0.39422 lineto 0.04377 0.39546 lineto 0.04873 0.39709 lineto 0.05369 0.3991 lineto 0.06361 0.4044 lineto 0.07353 0.41162 lineto 0.08345 0.42116 lineto 0.09336 0.43361 lineto 0.10328 0.44998 lineto 0.1132 0.47187 lineto 0.12312 0.50195 lineto 0.12808 0.52102 lineto 0.13304 0.54234 lineto 0.13552 0.55287 lineto 0.13676 0.55768 lineto 0.138 0.56194 lineto 0.13924 0.5654 lineto 0.14048 0.56784 lineto 0.14172 0.56904 lineto 0.14296 0.56888 lineto 0.1442 0.56732 lineto 0.14544 0.56446 lineto 0.14792 0.55556 lineto 0.15288 0.53129 lineto 0.1628 0.48349 lineto 0.17272 0.44601 lineto 0.18264 0.41642 lineto 0.20248 0.37146 lineto 0.22232 0.33756 lineto 0.26199 0.28721 lineto 0.30167 0.24986 lineto 0.34135 0.22019 lineto 0.38103 0.19571 lineto 0.4207 0.17504 lineto 0.46038 0.15733 lineto 0.50006 0.14204 lineto 0.53974 0.12877 lineto 0.57941 0.11723 lineto 0.61909 0.10721 lineto 0.65877 0.09856 lineto 0.69845 0.09115 lineto 0.73813 0.08488 lineto Mistroke 0.7778 0.07968 lineto 0.81748 0.07549 lineto 0.85716 0.07227 lineto 0.877 0.07101 lineto 0.89684 0.06997 lineto 0.91667 0.06917 lineto 0.92659 0.06885 lineto 0.93651 0.06859 lineto 0.94643 0.06838 lineto 0.95139 0.0683 lineto 0.95635 0.06823 lineto 0.96131 0.06818 lineto 0.96379 0.06816 lineto 0.96627 0.06814 lineto 0.96875 0.06812 lineto 0.96999 0.06812 lineto 0.97123 0.06811 lineto 0.97247 0.06811 lineto 0.97371 0.06811 lineto 0.97495 0.0681 lineto 0.97619 0.0681 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.37638 moveto 0.02517 0.37639 lineto 0.02641 0.37643 lineto 0.02765 0.37649 lineto 0.02889 0.37656 lineto 0.03137 0.37679 lineto 0.03385 0.3771 lineto 0.03633 0.3775 lineto 0.03881 0.37798 lineto 0.04377 0.37924 lineto 0.04873 0.38087 lineto 0.05369 0.38289 lineto 0.06361 0.38822 lineto 0.07353 0.39549 lineto 0.08345 0.40511 lineto 0.09336 0.4177 lineto 0.10328 0.43433 lineto 0.1132 0.45679 lineto 0.12312 0.48835 lineto 0.13304 0.53353 lineto 0.13552 0.54642 lineto 0.138 0.55827 lineto 0.13924 0.5631 lineto 0.14048 0.5667 lineto 0.14172 0.56872 lineto 0.14296 0.56888 lineto 0.1442 0.56711 lineto 0.14544 0.56356 lineto 0.14792 0.5524 lineto 0.15288 0.52337 lineto 0.1628 0.47078 lineto 0.17272 0.43165 lineto 0.18264 0.40136 lineto 0.20248 0.35582 lineto 0.22232 0.32169 lineto 0.26199 0.27116 lineto 0.30167 0.23374 lineto 0.34135 0.20403 lineto 0.38103 0.17953 lineto 0.4207 0.15884 lineto 0.46038 0.14113 lineto 0.50006 0.12583 lineto 0.53974 0.11255 lineto 0.57941 0.10101 lineto 0.61909 0.09099 lineto 0.65877 0.08234 lineto 0.69845 0.07493 lineto 0.73813 0.06866 lineto 0.7778 0.06346 lineto 0.81748 0.05927 lineto Mistroke 0.85716 0.05604 lineto 0.877 0.05478 lineto 0.89684 0.05375 lineto 0.91667 0.05294 lineto 0.92659 0.05262 lineto 0.93651 0.05236 lineto 0.94643 0.05216 lineto 0.95139 0.05207 lineto 0.95635 0.05201 lineto 0.96131 0.05195 lineto 0.96379 0.05193 lineto 0.96627 0.05191 lineto 0.96875 0.0519 lineto 0.96999 0.05189 lineto 0.97123 0.05189 lineto 0.97247 0.05188 lineto 0.97371 0.05188 lineto 0.97495 0.05188 lineto 0.97619 0.05187 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.36241 moveto 0.02517 0.36242 lineto 0.02641 0.36245 lineto 0.02765 0.36251 lineto 0.02889 0.36259 lineto 0.03137 0.36281 lineto 0.03385 0.36312 lineto 0.03633 0.36352 lineto 0.03881 0.36401 lineto 0.04377 0.36527 lineto 0.04873 0.3669 lineto 0.05369 0.36894 lineto 0.06361 0.37429 lineto 0.07353 0.38159 lineto 0.08345 0.39125 lineto 0.09336 0.40393 lineto 0.10328 0.42073 lineto 0.10824 0.43122 lineto 0.1132 0.44357 lineto 0.11816 0.45829 lineto 0.12312 0.47612 lineto 0.13304 0.52492 lineto 0.13552 0.53984 lineto 0.138 0.55432 lineto 0.13924 0.56055 lineto 0.14048 0.56541 lineto 0.14172 0.56834 lineto 0.14296 0.56887 lineto 0.1442 0.56687 lineto 0.14544 0.56255 lineto 0.14792 0.54897 lineto 0.15288 0.51551 lineto 0.1628 0.4592 lineto 0.17272 0.41892 lineto 0.18264 0.38814 lineto 0.20248 0.34223 lineto 0.22232 0.30795 lineto 0.26199 0.25731 lineto 0.30167 0.21984 lineto 0.34135 0.19011 lineto 0.38103 0.16559 lineto 0.4207 0.1449 lineto 0.46038 0.12718 lineto 0.50006 0.11188 lineto 0.53974 0.09859 lineto 0.57941 0.08705 lineto 0.61909 0.07703 lineto 0.65877 0.06838 lineto 0.69845 0.06096 lineto 0.73813 0.05469 lineto Mistroke 0.7778 0.04949 lineto 0.81748 0.0453 lineto 0.85716 0.04207 lineto 0.877 0.04081 lineto 0.89684 0.03978 lineto 0.91667 0.03897 lineto 0.92659 0.03866 lineto 0.93651 0.03839 lineto 0.94643 0.03819 lineto 0.95139 0.03811 lineto 0.95635 0.03804 lineto 0.96131 0.03798 lineto 0.96379 0.03796 lineto 0.96627 0.03794 lineto 0.96875 0.03793 lineto 0.96999 0.03792 lineto 0.97123 0.03792 lineto 0.97247 0.03791 lineto 0.97371 0.03791 lineto 0.97495 0.03791 lineto 0.97619 0.0379 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.35014 moveto 0.02517 0.35015 lineto 0.02641 0.35019 lineto 0.02765 0.35024 lineto 0.02889 0.35032 lineto 0.03137 0.35054 lineto 0.03385 0.35086 lineto 0.03633 0.35126 lineto 0.03881 0.35175 lineto 0.04377 0.35301 lineto 0.04873 0.35465 lineto 0.05369 0.35668 lineto 0.06361 0.36204 lineto 0.07353 0.36936 lineto 0.08345 0.37906 lineto 0.09336 0.39181 lineto 0.10328 0.40872 lineto 0.10824 0.41931 lineto 0.1132 0.43181 lineto 0.11816 0.44679 lineto 0.12312 0.46507 lineto 0.13304 0.51664 lineto 0.13552 0.53327 lineto 0.138 0.55017 lineto 0.13924 0.5578 lineto 0.14048 0.56399 lineto 0.14172 0.56791 lineto 0.14296 0.56887 lineto 0.1442 0.5666 lineto 0.14544 0.56141 lineto 0.14792 0.54533 lineto 0.15288 0.50784 lineto 0.15784 0.47527 lineto 0.1628 0.44861 lineto 0.17272 0.4075 lineto 0.18264 0.3764 lineto 0.20248 0.33022 lineto 0.22232 0.29585 lineto 0.26199 0.24512 lineto 0.30167 0.20762 lineto 0.34135 0.17788 lineto 0.38103 0.15335 lineto 0.4207 0.13265 lineto 0.46038 0.11493 lineto 0.50006 0.09962 lineto 0.53974 0.08634 lineto 0.57941 0.07479 lineto 0.61909 0.06477 lineto 0.65877 0.05612 lineto 0.69845 0.0487 lineto Mistroke 0.73813 0.04243 lineto 0.7778 0.03723 lineto 0.81748 0.03304 lineto 0.85716 0.02981 lineto 0.877 0.02855 lineto 0.89684 0.02752 lineto 0.91667 0.02671 lineto 0.92659 0.02639 lineto 0.93651 0.02613 lineto 0.94643 0.02593 lineto 0.95139 0.02584 lineto 0.95635 0.02578 lineto 0.96131 0.02572 lineto 0.96379 0.0257 lineto 0.96627 0.02568 lineto 0.96875 0.02567 lineto 0.96999 0.02566 lineto 0.97123 0.02565 lineto 0.97247 0.02565 lineto 0.97371 0.02565 lineto 0.97495 0.02564 lineto 0.97619 0.02564 lineto Mfstroke grestore grestore grestore gsave gsave gsave 0.004 setlinewidth 0.02393 0.33921 moveto 0.02517 0.33922 lineto 0.02641 0.33926 lineto 0.02765 0.33931 lineto 0.02889 0.33939 lineto 0.03137 0.33961 lineto 0.03385 0.33993 lineto 0.03633 0.34033 lineto 0.03881 0.34082 lineto 0.04377 0.34208 lineto 0.04873 0.34372 lineto 0.05369 0.34576 lineto 0.06361 0.35113 lineto 0.07353 0.35847 lineto 0.08345 0.36819 lineto 0.09336 0.38098 lineto 0.10328 0.39798 lineto 0.10824 0.40864 lineto 0.1132 0.42125 lineto 0.11816 0.43641 lineto 0.12312 0.45502 lineto 0.12808 0.47847 lineto 0.13304 0.50873 lineto 0.13552 0.52679 lineto 0.138 0.54589 lineto 0.13924 0.55487 lineto 0.14048 0.56243 lineto 0.14172 0.56744 lineto 0.14296 0.56886 lineto 0.1442 0.56629 lineto 0.14544 0.56017 lineto 0.14792 0.54154 lineto 0.15288 0.50044 lineto 0.15784 0.46629 lineto 0.1628 0.4389 lineto 0.17272 0.39718 lineto 0.18264 0.36584 lineto 0.20248 0.31948 lineto 0.22232 0.28503 lineto 0.26199 0.23425 lineto 0.30167 0.19673 lineto 0.34135 0.16697 lineto 0.38103 0.14244 lineto 0.4207 0.12173 lineto 0.46038 0.10401 lineto 0.50006 0.0887 lineto 0.53974 0.07542 lineto 0.57941 0.06387 lineto 0.61909 0.05385 lineto 0.65877 0.04519 lineto Mistroke 0.69845 0.03778 lineto 0.73813 0.0315 lineto 0.7778 0.0263 lineto 0.81748 0.02211 lineto 0.85716 0.01888 lineto 0.877 0.01762 lineto 0.89684 0.01659 lineto 0.91667 0.01578 lineto 0.92659 0.01547 lineto 0.93651 0.0152 lineto 0.94643 0.015 lineto 0.95139 0.01492 lineto 0.95635 0.01485 lineto 0.96131 0.01479 lineto 0.96379 0.01477 lineto 0.96627 0.01475 lineto 0.96875 0.01474 lineto 0.96999 0.01473 lineto 0.97123 0.01473 lineto 0.97247 0.01472 lineto 0.97371 0.01472 lineto 0.97495 0.01472 lineto 0.97619 0.01472 lineto Mfstroke grestore grestore grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V00OoCP0001@000?o0000O004o`D01?l900Go3@05oeD0 000D0003o`0007L01Ol400Go2@04o``01_lF023o900001@000?o0000L`04o`D01?l900Go2@07oa80 2_m4000050000ol0001`00?o1P03o`T01?l900Go4009odh0000D00;oKP03o`H00ol700Go2@04o`h0 1omG000050000ol0001Z00?o1P03o`H01?l900Go3@05obD05OlT000050000ol0001X00;o1P03o`H0 0ol900Co3P04oal02oli00002003o`<00_l40003o`0006D00ol500?o1P03o`L01Ol=00Go6@0:od@0 00090005o`000?l00P001Ol0003o06D00_l500?o1P03o`H01?l>00Co5@09odh000000`3oo`03o`03 0?oo00;o0P001?l00?l300?oH@02o`@00ol600?o1P03o`d01Ol@00WoE`0000L000?o0?l00`001?l0 0?l30003o`0005l00_l300?o1P03o`H00ol<00Co3P07of0000070003o`3o00<000Co003o0`000ol0 001L00?o0P03o`H00ol600?o2P05o`d01OlS023o900000P00_l400;o10000ol0001J00;o0`02o`H0 0ol600?o2@04o`h01?lN00[oA00001@000?o0000F002o`800ol500?o1P03o`T00ol=00Go6@09odh0 000D0003o`0005H00_l200;o1@03o`H00ol900?o3004oaL01omG00005002oeD00_l200;o1@02o`H0 0ol900?o2P05oaH01OmN000050000ol0001C0003o`0000;o1003o`D00ol900?o2@04oaL01?mS0000 50000ol0001A00;o00<0ool01002o`D00ol900?o2@03oaH01OmW000050000ol0001?00;o0P000ol0 000200;o1@02o`T00ol900?o5@04obh06_lT000050000ol0001=00;o0P02o`<00_l400?o2003o`T0 0olC00Go8P0@och0000D00;oC002o`800_l300;o1002o`P00ol900?o4P04ob001om>000050000ol0 001:0005o`000?l010000ol0000200;o1`03o`T00ol@00Go7`05oeD0000D0003o`0004P00_l200;o 0`02o`<00_l700;o2@03o`l01?lN00KoFP0001@000?o0000AP02o`<000Co00000_l300;o1P03o`T0 0_l=00Go6`07of00000D0003o`0004D000Co00000_l30003o`00008000?o00001002o`T00ol;00Co 6`05ofL0000D00;oA@001Ol0003o00<00_l300;o1@02o`T00_l<00;o6`04of`0000D0003o`000480 0_l200;o0`001?l00002o`D00_l900;o2`03oaP01Om`000050000ol000110005o`000?l00`02o`<0 00?o00000`02o`T00_l;00;o5`04ogD0000D0003o`00040000Go0000o`030004o`0000;o1@000ol0 000600?o2`02oa@01Om@00Go900001@000?o0000?`000ol00002o`800_l30003o`0000<00_l700;o 2`03oa801?lj01_o:@0001@000?o0000?@02o`8000Go0000o`0300;o1002o`L00_l:00?o4P03oc@0 2_m400005002ocd000Go0000o`030005o`000?l01@000ol0000500;o2@03oa800ol^00WoCP0001@0 00?o0000>`001Ol0003o00800_l200;o1002o`D00ol900;o4P03obX01omG000050000ol0000j0003 o`0000;o0P001Ol0003o00D000?o00000`02o`T00olA00?o:005oeh0000700?o1002o`@000?o0000 >@001?l00?l30005o`000?l01002o`@00_l900;o4@03obD01_mS00002P001?l00?l20005o`000?l0 >P001?l00?l30003o`0000;o10000ol000030003o`0000L00_l@00?o8@07ofT000000`3oo`03o`@0 00Co003o0P001?l00003ocL000Co003o0P02o`8000?o00000P02o`@00_l800;o3`03oal01Om`0000 2002o`<000Co003o0`000ol0000f0004o`3oo`8000Go0000o`040003o`0000<000?o00001P02o`h0 0olO00?oM@0000X000Co003o0P001Ol0003o03L000?o0?l00`001Ol0003o00<00_l400;o20000ol0 000;00?o7`03ogP0000700?o1002o`@000?o0000=0000ol0o`030003o`0000;o0`000ol000030003 o`0000H00_l<00;o7`03og/0000D0003o`0003@00_l200;o0P001?l00002o`@00_l700;o2`03oad0 1?mn00005002oc@00_l20005o`000?l00`000ol000030003o`0000H000?o00002@02oa/01On20000 50000ol0000b0005o`3o0?l00`000ol00002o`D000?o00001@02o`X00_lI00CoQ`0001@000?o0000 <@001Ol0o`3o00800_l20003o`0000<00_l70003o`0000P00_lH00?oR`0001@000?o0000<@02o`05 0?l00?l00`000ol000030003o`0000D00_l900;o5`03ohh0000D0003o`0003000_l20003o`3o00<0 00?o00000`000ol000050003o`0000P000?o00005003oi40000D0003o`0002l000Oo0?l0o`3o00<0 00?o00000`000ol0000400;o2@02oaD00_nD00005002obl000Oo0?l0o`3o00<000?o00000P02o`H0 00?o00001`02oa@00onF000050000ol0000^00;o00D0o`00o`020003o`00008000?o00001002o`T0 00?o00004P02oiT0000D0003o`0002d00_l20003o`3o008000?o00000P000ol000040003o`0000L0 0_lC00;oE`0Pob@0000D0003o`0002`000Oo0?l0o`3o008000?o00000P000ol0000300;o2@000ol0 000A00;oC`0:od@0000D0003o`0002/000Oo0?l0o`3o008000Co00000_l50003o`0000L00_lA00?o B009odh0000D00;o;002o`050?l00?l00P001?l00?l500;o2@000ol0000?00;oA007oeL0000D0003 o`0002X00_l20003o`3o008000Co003o1@000ol0000700;o4002od401OmN000050000ol0000Z00;o 00@0o`3o0P001?l00?l50003o`0000L000?o00003P02ocd01_mS000050000ol0000Y00;o00@0o`3o 0P001?l00?l50003o`0000H00_l?00;o>007ofT0000D0003o`0002T00ol20004o`00o`8000?o0000 0P000ol000060003o`0000h000?o0000<`05og00000D00;o:@02o`040?l0o`8000Co003o10000ol0 000500;o3`02oc801?me000050000ol0000X00?o00D0o`00o`020003o`00008000?o00001@000ol0 000=00;o;`05ogT0000D0003o`0002L00_l00`3oo`020004o`00o`@000?o00001002o`h00_l]00Co OP0001@000?o00009`03o`050?l00?l00P001Ol0003o00H000?o00003002ob`00on200001`04o`<0 0_l40003o`0002H00_l00`3oo`020004o`00o`<000?o000010000ol0000<0003o`0002T00on50000 20000ol000020004o`00o`<000?o00009P03o`040?l0o`8000?o00000P000ol000030003o`0000/0 0_lY00?oR00000030?oo00?o0`001Ol0003o008000Co00001OlS00;o00D0ool0o`020003o`000080 00?o00000`000ol0000:00;o:003oh/0000:0004o`00o`8000Go0000o`0400;o8@03o`040?l0o`80 00Go0000o`050003o`0000X000?o00009@03ohh000070004o`00o`8000Co003o0`000ol0000400?o 7@02o`050?oo0?l00P001Ol0003o00D000?o00002P000ol0000S00?oT@0000P00_l400;o1006o`@0 00?o00006P03o`060?l0o`3o0`000ol000030003o`0000T00_lS00?oU00001@000?o00000`04o`03 0?l001T00_l01`3oo`3o0?l00`000ol000030003o`0000T000?o00008003oiL0000D00?o1`000ol0 o`0I00?o00H0o`3o0?l30003o`00008000?o00002@000ol0000N00?oVP0001@000?o0?l01?l40003 o`3o01L000?o0?l00_l0103o0?l30003o`0000<000?o000020000ol0000M00;oW@0001@000?o0000 1003o`8000?o0?l05P03o`060?l0o`3o0P000ol000030003o`0000L00_lM00?oW`0001@000?o0000 1`000ol00002oaH01?l0103o0?l20003o`0000<000?o00001`000ol0000K00;oXP0001@01_l50003 o`0000;o5003o`080?l0o`3o0?l50003o`0000L000?o00006P02oj@0000D00;o1004o`8000Go0?l0 o`0C00Co00@0o`3o0P000ol000020003o`0000L000?o00006@02ojH0000D0003o`0000L000Go003o 0002oa<00_l0203o0?l0o`3o10000ol0000600;o6@03ojP0000D00?o20001Ol00?l000;o4@04o`04 0?l0o`8000?o00000P000ol000050003o`0001L00_n[000050000ol0o`04o`D000Oo0?l0o`3o0100 1?l01P3o0?l0o`@000?o00001@000ol0000F00;o[@0001@000?o00001003o`<000Oo0?l0o`3o00l0 0ol0103o0?l20005o`000?l01`000ol0000E00;o[`0001@000?o00001`002?l0003o0?l00_l?00?o 00H0o`3o0?l30003o`0000D000?o00004`03ok40000D00;o2@001_l00?l0o`800_l=00Go00D0o`00 o`020003o`0000H000?o00004@02ok@0000D00Go1`001ol00?l0o`000_l=00?o00H0o`3o0?l30003 o`0000D000?o00004002okH0000D0003o`0000801?l40007o`00o`3o0002o``01?l01@3o003o0080 00?o00001@000ol0000@0003o`000;H0000D0003o`0000H000?o00000P000ol0o`0200?o2`05o`04 0?l0o`<000?o000010000ol0000?00;o^@0001@000?o00001`02o`8000Go003o0003o`/00ol00`3o o`020004o`00o`H000?o00003`000ol0002i00005002o`X000Co003o0P001?l0ool;00Co00@0o`3o 0P000ol000040003o`0000h00_nl00005003o`X000Co003o0P04o`T01_l20004o`00o`D000?o0000 3P000ol0002l000050000ol0o`04o`L000?o0?l00P001?l0ool900?o00D0ool0o`020003o`0000<0 00?o00003@02okl0000700?o1002o`@000?o00001003o`@000Co003o0P03o`T01?l0103o0?l20003 o`00008000?o00003002ol4000080003o`00008000Co003o0`000ol000070003o`00008000Go003o 0003o`T01Ol01@3o003o00@000?o000030000ol00031000000<0ool00ol20003o`00008000Co003o 0`03o`P000?o00000P000ol00005o`P00_l01@3oo`3o008000?o00000P000ol0000:00;oa00000P0 00?o00000P001?l00?l30003o`0000T000Go0000o`020003o`3o00;o1`04o`030?oo008000?o0000 0P000ol0000900;oaP0000P000?o00000P001?l00?l30003o`0000X000Go0000o`0200Co1`05o`04 0?l0o`@000?o00002@000ol0003600001`02o`D00_l40003o`0000/000Ko0000o`04o`L00_l0103o ool20003o`00008000?o00001`02olT0000D00Ko20000ol0000200;o00@0oooo1P03o`050?oo0?l0 10000ol000070003o`0000005o`00o`001Ol300Go0P000ol000030003o`000=<0 000D00;o40001Ol00?l000Co0`03o`050?l00?l010000ol0003D000050000ol0o`04o``000Co0?l0 1?l300Co0P000ol000020003o`0000Co0`02o`@00_l400;o9003o`<00_l400;o1002ob<00_l400;o 1002o`@00_lS00;o1002o`@00_l400;o6P0001@00_l500?o2@000ol00005o`<01?l00`3o00030003 o`00008000?o00000P001?l00?l20004o`00o`8000Co003o90001Ol0003o008000Co003o0P001?l0 0?l20003o`0001l000Co003o0P001?l00?l20004o`00o`8000Co003o8@001?l00?l20004o`00o`80 00Co003o0P001?l00?lI000050000ol0000700;o20000ol0o`04o`800ol0103o0?l30003o`0000@0 00Go0000o`020004o`00o`8000Co003o0P000ol0000P00Co0P001?l00?l20004o`00o`8000Co003o 8@001?l00?l20004o`00o`8000Co003o0P001?l00?lQ0004o`00o`8000Co003o0P001?l00?l20004 o`00oaT0000D0003o`0000T000?o00001@001?l0o`03o`801?l00`3o00020003o`0000H000Co003o 0P001?l00?l20004o`00o`8000?o000080000ol0o`030004o`00o`8000Co003o0P001?l00?lQ00?o 0`001?l00?l20004o`00o`8000Co003o8P02o`<000Co003o0P001?l00?l20004o`00oaT0000D0003 o`0000X000?o00001@000ol0o`03o`801?l00`3o0002o`H000Co003o0P001?l00?l20004o`00o`80 00Co003o8P000ol0o`030004o`00o`8000Co003o0P001?l00?lQ0003o`0000<000Co003o0P001?l0 0?l20004o`00ob4000Co003o0P001?l00?l20004o`00o`8000Co003o6@0001@000?o00002`02o`D0 00?o0?l01?l0203oool0o`3o2@02o`@00_l400;o1002ob@00_l400;o1002o`@00_lS00?o0`02o`@0 0_l400;o8`02o`@00_l400;o1002oaX0000D0003o`0000d000?o00000`000ol0o`03o`030?oo00;o 00<0o`00g@0001@00_l?0003o`00008000?o0?l00ol00`3oo`03oml0000D0003o`0000l000?o0000 0P02o`040?oo00Coh00001@000?o000040001_l0003o00Ooh@0001@000?o00004@001_l0003o00Go e@02o`800_l00`3oo`02o`80000D0003o`00018000Co00001OoG0004o`00o`<000?o00000P0000l0 j?lB0004o`00o`<00_l3000050000ol000080003o`0000P000?o0?l00ol50003o`0000P000?o0000 20000ol000080003o`0000P000?o00002@000ol000080003o`0000P000?o000020000ol000080003 o`0000P000?o000020000ol000080003o`0000P000?o000020000ol000080003o`0000P000?o0000 20000ol0000E00Co10000ol00001000050000ol0000E0003o`0001`000?o0000=@000ol0000d0003 o`0003@000?o00005@001?l00?l200Co0P0001@000?o000050000ol0003J00;o0P02o`L0000D0003 o`0001<000?o0000j00001@00_lB00;oj`0001@000?o00003`02ond0000D0003o`0000/01?o_0000 500>oo<0000D0003o`000?h0000D0003o`000?h0000D00;oo`000?l05P000?l05P000?l05P000?l0 5P000?l05P0007`01?nE0000O@000ol0002E0000JP02o`800_l200Co00<0ool00_l200Co0`03o`80 0_l0103oo`04o`<01?mk0000J`001?l0ool20003o`0000H000Co003o0`000ol0o`030003o`3o0080 00?o00000`001?l00?mo0000J`03o`<01Ol00`3oo`02o`8000Oo0000o`3o00<000?o0?l00P000ol0 0004o`801Omk0000J`001?l00?l20007o`000?l0o`050007o`000?l0o`030003o`3o008000Co003o 1@001Ol0003o07/0001[0004o`00o`<00ol200Co00<0ool00ol300?o00<0ool00ol200Co0`03og`0 001Z00CoY`000?l05P000?l05P000?l05P000?l05P0001002?om00003`001ol0003o0?l00P000ol0 003j00003`001ol0003o0?l00P000ol0003j00003`001_l0003o00?oo@0001001?l01@3o003o0?`0 000C00Goo@0001800_oo0080003o01H0003o01H00000\ \>"], ImageRangeCache->{{{0, 276}, {170, 0}} -> {-758.526, -49.6556, 36.3165, 0.374538}}] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 2.3 - Time Domain Implementation"], "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Time Domain Implementation"], Cell[TextData["The following signal flow graph shows how the filter"], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ (A0+A1/z+A2/z^2)/(1+B1/z+B2/z^2) = \t(A0*z^2+A1*z+A2)/(z^2+B1*z0+B2)\ \>", "\<\ A1 A2 A0 + -- + -- z 2 2 z A0 z + A1 z + A2 ------------ = ----------------- B1 B2 2 1 + -- + -- z + B1 z0 + B2 z 2 z\ \>"], "Input", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "can be computed. Each stage of the ear cascade model discussed in this \ report is implemented this way."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica MathPictureStart % Start of picture % Scaling calculations 0 1 0 1 [ [ 0.000000 0.000000 0 0 ] [ 1.000000 0.841954 0 0 ] ] MathScale % Start of Graphics 0 setgray 0 setlinewidth gsave 0.000000 0.000000 translate 1.000000 0.841954 scale 1 string 348 293 1 [348 0 0 293 0 0] { currentfile 1 index readhexstring pop } false 3 colorimage FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFE00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF0001FFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFF8FFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFE3FE3FFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFC7FC7FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF1FFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFC7FF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE3FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0001FF1FFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE3FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE07FFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF03FFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC01FFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF03FFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF81FFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF81FFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFC7FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFE3FFFFE3FFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF8FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE3FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFE3FFFFE3FFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFF03FFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF1FFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFC7FFF1FFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFF03FFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF1FFFFF1FFFFF1FFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFF8FF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE07FFFFFFFFF03FFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFFF1FFFFF1FFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFE00FFFFFFFF8FFFFFFFF8FF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00FFFFFFE3FFFFFFFFFF03FFFFFFFFC7FFFFFFE07FFFFFFFFFFFFFFFFFF FFFFF8FFFFFFE3FFF8FFFFFFFC7FFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFE00000FFFFF8FFFFFFFFF1C7FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00000FFFE3FFFFFFF00000003FFFFFC7FFFE00007FFFFFFFFFFFFFFFFFF FFFFC7FFFFFFFC7FC7FFFFFFFF8FFFFF80001FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000 000000000000FF8FFFFFFFFFE3FFFFFFFFFF000000000000000000000000 000000000E3FFFFFFF00000003FFFFFC7E00000000000000000000000000 000007FFFFFFFC7FC7FFFFFFFF8FF8000000000000000000000000000E3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE00000007FF8FFFFFFFFFE3FFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00000007E3FFFFFFFFFF03FFFFFFFFC7FC0000007FFFFFFFFFFFFFFFFFF FFFFC7FFFFFFFF8E3FFFFFFFFF8FFF0000001FFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE00007FFFFF8FFFFFFFFF1C7FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00007FFFE3FFFFFFFFFF03FFFFFFFFC7FFFFC0007FFFFFFFFFFFFFFFFFF FFFFC7FFFFFFFFF1FFFFFFFFFF8FFFFFF0001FFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE07FFFFFFFF8FFFFFFFF8FF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E07FFFFFFE3FFFFFFFFFF03FFFFFFFFC7FFFFFFFC7FFFFFFFFFFFFFFFFFF FFFFC7FFFFFFFFF1FFFFFFFFFF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFF8FF8FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE07FFFFFFFFF03FFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFFFFFF8E3FFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFC7FFF1FFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFFFFFC7FC7FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFE3FFFFE3FFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFFFFC7FC7FFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFE3FFFFE3FFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF8FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFFFE3FFF8FFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF81FFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF1FFFFF1FFFFF1FFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF1FFFFF1FFFFF1FFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF03FFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE3FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE07FFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFC7FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF81FFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF03FFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC01FFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE00000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFC0007FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFC7FFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFF8FFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFF1FFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFF1FFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFE3FFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFC7FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFC0007FFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFC7FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFC003FFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFC7FFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8000FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFE3FFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFF1FFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFC0FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFFE3FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFFE3FFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE38FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FF8000FF8FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE38FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE00000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC7FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE07FFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF03FFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF81FFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF8FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFF8FFFFF8FFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFE3FFFFE3FFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFFF8FFFFF8FFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFE3FFFFE3FFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFF03FFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFFFF1FFFC7FFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFC7FFF1FFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE07FFFFFFFFF03FFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFE3FFFFFFFE3FE3FFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE00FFFFFFFF8FFFFFFFF8FF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00FFFFFFE3FFFFFFFFFF03FFFFFFFFC7FFFFFF03FFFFFFFFFFFFFFFFFFF FFFE3FFFFFFFE3FE3FFFFFFFFC7FFFFFFFC0FFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE00000FFFFF8FFFFFFFF8FF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00000FFFE3FFFFFFFFFF03FFFFFFFFC7FFF00003FFFFFFFFFFFFFFFFFFF FFFE3FFFFFFFFC71FFFFFFFFFC7FFFFC0000FFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000 000000000000FF8FFFFFFFFF1C7FFFFFFFFF000000000000000000000000 000000000E3FFFFFFF00000003FFFFFC7000000000000000000000000000 000E3FFFFFFFFF8FFFFFFFFFFC7FC000000000000000000000000000003F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE00000007FF8FFFFFFFFFE3FFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00000007E3FFFFFFF00000003FFFFFC7E0000003FFFFFFFFFFFFFFFFFFF FFFE3FFFFFFFFF8FFFFFFFFFFC7FF8000000FFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE00007FFFFF8FFFFFFFFFE3FFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E00007FFFE3FFFFFFFFFF03FFFFFFFFC7FFFE0003FFFFFFFFFFFFFFFFFFF FFFE3FFFFFFFFC71FFFFFFFFFC7FFFFF8000FFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFE07FFFFFFFF8FFFFFFFFF1C7FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF E07FFFFFFE3FFFFFFFFFF03FFFFFFFFC7FFFFFFE3FFFFFFFFFFFFFFFFFFF FFFE3FFFFFFFE3FE3FFFFFFFFC7FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFF8FFFFFFFF8FF8FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE07FFFFFFFFF03FFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFFFFE3FE3FFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFF8FF8FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFF03FFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFFFF1FFFC7FFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFC7FFF1FFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFF8FFFFF8FFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFE3FFFFE3FFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF8FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFFFF8FFFFF8FFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFE3FFFFE3FFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF81FFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF03FFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE07FFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE00000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFC0007FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFC7FFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFF8FFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFF1FFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFF1FFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFE3FFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFC7FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFC0007FFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFF8FF8FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFF8FFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF1FFFC7FFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFC003FFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE3FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE3FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFC0FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFF8FC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE00000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF80001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF80001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF007FFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE07FFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF81FFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFC7FFFFC7FFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF8FFFFFFFF81FFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFC7FFFFC7FFFFFF1FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFF81FFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFF8FFFE3FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFF81FFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFF803FFFFFFF1FFFFFFFF1FF1FFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE07FFFFFFFF81FFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFF800003FFFF1FFFFFFFF1FF1FFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF E00FFFFFFE3FFFFFF80000001FFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFC01FFFFFFFF0 FC0000000000000000000000000000000000000000000000000000000000 00000000000003F1FFFFFFFFE38FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF E00000FFFE3FFFFFF80000001FFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F FFFFFFFFFFC00001FFFFF0 FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFF FFFFF80000001FF1FFFFFFFFFC7FFFFFFFFFE00000000000000000000000 000000000E3FFFFFFFFF81FFFFFFFFFC0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 0000000000000000001FF0 FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF80001FFFFF1FFFFFFFFFC7FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF E00000007E3FFFFFFFFF81FFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC0000000FFF0 FFFFFFFC7FC7FF8FC7007FFF0071FFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF81FFFFFFFF1FFFFFFFFE38FFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF E00007FFFE3FFFFFFFFF81FFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC0000FFFFFF0 FFFFFFFC7FC7FF8FC0FF8FF8FF81FF1F8FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1FFFFFFFF1FF1FFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF E07FFFFFFE3FFFFFFFFF81FFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF000FFFE00E3FFC0FF8E00FFFE00E3FFC0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC0FFFFFFFFF0 FFFFFFFC7FC7FF8FC7FFF1F8FFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFFF1FF1FFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE07FFFFFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFF1FF1FF03FE3F1F81FF1FF1FF03FE3F1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FC7FF8FC7FFF1F8FFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE3FFFFFF8FFFE3FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3F1FFE3FE3FFF8FFFE3F1FFE3FE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FC7FF8FC7FFF1F8FFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFC7FFFFC7FFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC7FFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3F1FFE3FE3FFF8FFFE3F1FFE3FE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FC7FF8FC7FFF1F8FFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC7FFFFC7FFFFC7FFFFF8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF8FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3F1FFE3FE3FFF8FFFE3F1FFE3FE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FC0FF8FC0FF8FF8FFF1FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF81FFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3F1FFE3FE3FFF8FFFE3F1FFE3FE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FC7007FC7007FF8FFF1F8007FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3F1FFE3FE3FFF81FF1FF1FFE3FE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE07FFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE3FFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3F1FFE3F000FF8E00FFF1FFE3F000FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFC0FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC7FFFE3FFFFFFFE3FFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFC7FFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF007FFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF81FFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8FFF1FFFFFFFFE3FFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF8000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFE00FFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF000FFFFFFFFFE3FFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0 pop grestore %% End of Graphics MathPictureEnd %% End of picture \ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->False, ImageSize->{348, 293}, ImageMargins->{{27, Inherited}, {Inherited, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V00;o?008oe@0001X00;o 4002ocD00_l@00;o>003o`P00omA0000I`000ol0000B0003o`00034000?o00004P000ol0000c00;o 3P02odl0001V0003o`0001@000?o0000;`000ol0000D0003o`0003400_l@00;oCP0006D000?o0000 5P000ol0000]00;o5P02oc4000?o00004P000ol0001;0000I@000ol000050003o`0000D000?o0000 1P000ol0000]0003o`0001H000?o0000;P000ol0000D0003o`0004X0001T0003o`0000H000?o0000 1@000ol000070003o`0002/000?o00002`02o`/000?o0000;0000ol0000F0003o`0004T0001T0003 o`0000L000?o00000`000ol000080003o`0002/000?o00002`02o`/000?o0000;0000ol000050003 o`0000D000?o00001P000ol000190000H`000ol000090005o`000?l030000ol0000Z0003o`0000/0 0_l;00;o;0000ol000060003o`0000D000?o00001`000ol000180000E@03o`/000?o00002@001Ol0 003o00`000?o00007P03o`T000?o00002`02o``000?o00002002ob0000?o00001`000ol000030003 o`0000P000?o00002P02oc`0001E00Oo1`000ol0000:0003o`3o00d000?o00007P07o`D000?o0000 1`0:o`P000?o00001006oal000?o00002@001Ol0003o00`000?o00001@06oc`0000j02Ko0`000ol0 000;0003o`0000`0;?l00`3o000800[o20000ol0000Zo`/000Go0000o`0<0004o`0002Go00<0o`00 7P0003X000?o0000600:o`@000?o00002`000ol0000<0003o`0001h02_l20003o`0000/00_l<0004 o`0000Wo7`000ol0000:0003o`3o00d000?o00000P09oa`000?o00007@0003X000?o00006006o`P0 00?o00002P000ol0o`0=0003o`0001h01_l60003o`0000/00_l<0003o`0000D01OlO0003o`0000/0 00?o000030000ol0000600Go70000ol0000M0000>P000ol0000H00;o30000ol000090005o`000?l0 30000ol0000N00;o2P000ol0000;00;o30000ol000090003o`0001d000?o00002`000ol0000<0003 o`0000X000?o00006P000ol0000M0000>P000ol0000W0003o`0000P000Go0000o`0;0003o`0002/0 00?o00002`02o`/00_l[0003o`0000X000?o0?l03@000ol0000W0003o`0001d0000j0003o`0002L0 00?o00001`000ol000030003o`0000P000?o0000:`000ol0000H0003o`0002X000?o00002@001Ol0 003o00`000?o00009`000ol0000M0000>P000ol0000X0003o`0000D000?o00001@000ol000060003 o`0002`000?o000060000ol0000[0003o`0000P000Go0000o`0;0003o`0002P000?o00007@0003X0 00?o0000:0000ol000050003o`0000D000?o00001P000ol0000]0003o`0001H000?o0000;0000ol0 00070003o`0000<000?o000020000ol0000X0003o`0001d0000j0003o`0002T000?o000050000ol0 000^00;o5P02obl000?o00001@000ol000050003o`0000H000?o0000:@000ol0000M0000>P000ol0 000Z0003o`00018000?o0000<0000ol0000D0003o`0002h000?o00001@000ol000050003o`0000H0 00?o0000:@000ol0000M0000>P000ol0000[00;o4002oc@000?o00004P000ol0000`0003o`0001@0 00?o0000:P000ol0000M0000>P000ol0000/00;o3P02ocH00_l@00;o=0000ol0000B0003o`0002/0 00?o00007@0003X000?o0000;P03o`P00oli00;o3P02ocH00_l@00;o;P000ol0000M0000>P000ol0 000a00So?P03o`P00oli00;o3P02obl000?o00007@0003X000?o0000NP08och00ol800?o<@000ol0 000M0000>P000ol0001n0003o`0004802?ld0003o`0001d0000j0003o`0007h000?o0000OP000ol0 000M0000>P000ol0001n0003o`0007h000?o00007@0003X000?o0000OP000ol0001n0003o`0001d0 000j0003o`0007h000?o0000OP000ol0000M0000>P000ol0001n0003o`0007h000?o00007@0003X0 00?o0000OP000ol0001n0003o`0001d0000j0003o`0007h000?o0000OP000ol0000M0000>P000ol0 001n0003o`0007h000?o00007@0003X000?o0000OP000ol0001n0003o`0001d0000j0003o`0007h0 00?o0000OP000ol0000M0000>P000ol0001n0003o`0007h000?o00007@0003X000?o0000OP000ol0 001n0003o`0001d0000j0003o`0007h000?o0000OP000ol0000M0000>P000ol0001n0003o`0007h0 00?o00007@0003X000?o0000N`06ogh000?o00007@0003X000?o0000N`06ogh000?o00007@0003X0 00?o0000O005ogh000?o00007@0003X000?o0000O004ogl000?o00007@0003X000?o0000O004ogl0 00?o00007@0003X000?o0000O004ogl000?o00007@0003X000?o0000O@03ogl000?o00007@0003X0 00?o0000O@02oh0000?o00007@0003X000?o0000O@02oh0000?o00007@0003X000?o0000O@02oh00 00?o00007@0003X000?o0000OP000ol0001n0003o`0001d0000j0003o`0007007Omb0003o`0001d0 000j0003o`00070000?o00006@000ol0001`0003o`0001d0000j0003o`00070000?o00006@000ol0 001`0003o`0001d0000j0003o`00070000?o00006@000ol0001`0003o`0001d0000j0003o`000700 00?o00006@000ol0001`0003o`0001d0000j0003o`00070000?o00006@000ol0001`0003o`0001d0 000j0003o`00070000?o00006@000ol0001`0003o`0001d0000j0003o`00070000?o00006@000ol0 001`0003o`0001d0000j0003o`00070000?o00006@000ol0001`0003o`0001d0000j0003o`000700 00?o00001@05o`l000?o0000L0000ol0000M0000>P000ol0001`0003o`0000D000?o00004@000ol0 001`0003o`0001d0000j0003o`0003P000?o0000=@000ol000060003o`00010000?o0000L0000ol0 000M0000>P000ol0000h0003o`0003D000?o00001`000ol0000?0003o`00070000?o00007@0003X0 00?o0000>0000ol0000e0003o`0000L000?o00003`000ol0000j0003o`0003<000?o00007@0003X0 00?o0000>0000ol0000e0003o`0000P000?o00003P000ol0000j0003o`0003<000?o00007@0003X0 00?o0000>0000ol0000e0003o`0000T000?o00003@000ol0000j0003o`0003<000?o00007@0003X0 00?o0000>0000ol0000e0003o`0000D01Ol<0004o`00oc`000?o0000<`000ol0000M0000>P000ol0 000h0003o`0003D000?o00005P001?l00?ll0003o`0003<000?o00007@0003X000?o0000>0000ol0 000e0003o`0001H000Co003o?0000ol0000c0003o`0001d0000j0003o`0002T000?o00001@000ol0 00040003o`0003D000?o00003@04o`D000Co003o?0000ol0000c0003o`0001d0000j0003o`0002T0 00?o00001@000ol0000300;o=`000ol0000F0004o`00oc001Ol70003o`0003<000?o00007@0003X0 00?o0000:P000ol000030003o`0000D000?o0000=@000ol0000F0004o`00oc0000?o00000P000ol0 00040003o`0003<000?o00007@0003X000?o0000:P07ocl000?o00005@02o`8000?o0000;P000ol0 00030003o`0000800_le0003o`0001d0000j0003o`0002/000Go0000o`100003o`0001H000Co003o <0000ol000030003o`0000<000?o0000<`000ol0000M0000>P000ol0000[0005o`000?l0@0000ol0 000I0003o`0002h000?o00000`000ol0000i0003o`0001d0000j0003o`0002`000?o0?l0@@000ol0 000I0003o`0002H01Ol30003o`00008000?o0000>P000ol0000M0000>P000ol0000/0003o`3o0440 00?o00006@000ol0000^00Go?@000ol0000M0000>P000ol0000]0003o`0004007Ol`0003o`000080 00?o0000>P000ol0000M0000>P000ol0000]0003o`0004h000?o0000?0000ol000020003o`0003X0 00?o00007@0003X000?o0000;@000ol000040003o`0004L000?o0000?0000ol000020003o`0003X0 00?o00007@0003X000?o0000=0000ol000170003o`0003`01Olm0003o`0001d0000j0003o`0003@0 00?o0000A`000ol0001n0003o`0001d0000j0003o`0003@000?o0000A`000ol000140003o`0003L0 00?o00007@0003X000?o0000=0000ol000170003o`0004@000?o0000=`000ol0000M0000>P000ol0 000d0003o`0004L000?o0000A0000ol0000g0003o`0001d0000j0003o`0003@000?o0000A`000ol0 00140003o`0003L000?o00007@0003X000?o0000=0000ol000170003o`0004@000?o0000=`000ol0 000M0000>P000ol0000d0003o`0004L000?o0000A0000ol0000g0003o`0001d0000j0003o`0003@0 00?o0000A`000ol000140003o`0003L000?o00007@0003X000?o0000=0000ol000170003o`0004@0 00?o0000=`000ol0000M0000>P000ol0000d0003o`0004L000?o0000A0000ol0000g0003o`0001d0 000j0003o`0003@000?o0000A`000ol000140003o`0003L000?o00007@0003X000?o0000=0000ol0 00170003o`0004@000?o0000=`000ol0000M0000>P000ol0000d0003o`0004@01_m100Ko=`000ol0 000M0000>P000ol0000a00KoA006od401_lg0003o`0001d0000j0003o`0003401_m500Go@P05ocL0 00?o00007@0003X000?o00000000ol0000M0000>P000ol0000b00CoAP04od<0 1?lh0003o`0001d0000j0003o`0003801?m700?oA003ocP000?o00007@0003X000?o0000<`03odL0 0_m500;o>@000ol0000M0000>P000ol0000c00;oB002odD00_li0003o`0001d0000j0003o`0003<0 0_m800;oA@02ocT000?o00007@0003X000?o0000<`02odT000?o0000A0000ol0000g0003o`0001d0 000j0003o`0003@000?o0000@`08od002?le0003o`0001d0000j0003o`0003402?ln00?o2003ocX0 0ol800?oP000ol0000^00?o2003ocT00_l>00;o=P02o`h00_l`0003o`0001d0 000j0003o`0002`00_l>00;o=P02oa000_ld00;o4002obl000?o00007@0003X000?o0000:`02oa00 0_ld0003o`00018000?o0000<0000ol0000B0003o`0002`000?o00007@0003X000?o0000:P000ol0 000B0003o`00030000?o000050000ol0000^0003o`0001@000?o0000:`000ol0000M0000>P000ol0 000Y0003o`0001@000?o0000;P02oaH00_l^0003o`0001H000?o0000:P000ol0000M0000>P000ol0 000X0003o`0001H000?o0000;@000ol0000F0003o`0002`000?o00001@000ol000050003o`0000H0 00?o0000:P000ol0000M0000>P000ol0000X0003o`0000D000?o00001@000ol000060003o`0002`0 00?o000060000ol0000Z0003o`0000H000?o00001@000ol000070003o`0002T000?o00007@0003X0 00?o00009`000ol000060003o`0000D000?o00001`000ol0000[0003o`0000/00_l;0003o`0002X0 00?o00001`000ol000030003o`0000P000?o0000:@000ol0000M0000>P000ol0000W0003o`0000L0 00?o00000`000ol000080003o`0002/000?o00002`02o`/00_lZ0003o`0000T000Go0000o`0<0003 o`0002P000?o00007@0003X000?o00006003o`/000?o00002@001Ol0003o00`000?o00007P03o`T0 00?o00002`02o``000?o00001`02oal000?o00002@001Ol0003o00`000?o00002@02oad000?o0000 7@0003X000?o00006007o`L000?o00002@001Ol0003o00`000?o00007P07o`D000?o00002`02o``0 00?o00000`06oal000?o00002P000ol0o`0=0003o`0000D01_lM0003o`0001d0000j02Ko0`000ol0 000:0003o`3o00d0;?l00`3o000800[o20000ol0o`0Wo`030?l000`000?o000030001?l0000Xoal0 000j0003o`0001P02_l40003o`0000/000?o000030000ol0000N00[o0P000ol0000700[o20000ol0 0009oal000?o00002`000ol0000<0003o`0000802OlM0003o`0001d0000j0003o`0001P01_l80003 o`0000/000?o000030000ol0000N00Ko1P000ol0000;00;o30000ol0000400Go7`000ol0000:0003 o`3o00d000?o00001P05oad000?o00007@0003X000?o00006002o``000?o00002P000ol0o`0=0003 o`0001h00_l:0003o`0000/00_l<0003o`0000P000?o00007@000ol000090005o`000?l030000ol0 000:0003o`0001/000?o00007@0003X000?o00009P000ol000090005o`000?l030000ol0000Z0003 o`0000/00_l;00;o:`000ol000080005o`000?l02`000ol0000Y0003o`0001d0000j0003o`0002L0 00?o000020001Ol0003o00/000?o0000:`000ol0000;00;o2`000ol0000Z0003o`0000L000?o0000 0`000ol000080003o`0002T000?o00007@0003X000?o00009`000ol000070003o`0000<000?o0000 20000ol0000[0003o`0001P000?o0000:`000ol000050003o`0000D000?o00001P000ol0000Z0003 o`0001d0000j0003o`0002P000?o00001@000ol000050003o`0000H000?o0000;@000ol0000F0003 o`0002`000?o00001@000ol000050003o`0000H000?o0000:P000ol0000M0000>P000ol0000X0003 o`0000D000?o00001@000ol000060003o`0002d00_lF00;o;`000ol0000D0003o`0002/000?o0000 7@0003X000?o0000:@000ol0000D0003o`0002l000?o000050000ol0000_0003o`00018000?o0000 ;0000ol0000M0000>P000ol0000Z0003o`00018000?o0000<@000ol0000B0003o`0003400_l@00;o ;`000ol0000M0000>P000ol0000[00;o4002ocD00_l@00;o=@02o`h00_l`0003o`0001d0000j0003 o`0002`00_l>00;o=`02o`h00_lh00?o2003oc8000?o00007@0003X000?o0000;P03o`P00olk00?o 2003ocd02?le0003o`0001d0000j0003o`0003402?m100SoO@000ol0000M0000>P000ol0001n0003 o`0007h000?o00007@0003X000?o0000OP000ol0001n0003o`0001d0000j0003o`0007h000?o0000 OP000ol0000M0000>P000ol0001n0003o`0007h000?o00007@0003X000?o0000OP000ol0001n0003 o`0001d0000j0003o`0007h000?o0000OP000ol0000M0000>P000ol0001n0003o`0007h000?o0000 7@0003X000?o0000OP000ol0001n0003o`0001d0000j0003o`0007h000?o0000OP000ol0000M0000 >P000ol0001n0003o`0007h000?o00007@0003X000?o0000OP000ol0001n0003o`0001d0000j0003 o`0007h000?o0000OP000ol0000M0000>P000ol0001n0003o`0007h000?o00007@0003X000?o0000 OP000ol0001n0003o`0001d0000j0003o`0007h000?o0000OP000ol0000M0000>P000ol0001k00Ko OP000ol0000M0000>P000ol0001k00KoOP000ol0000M0000>P000ol0001l00GoOP000ol0000M0000 >P000ol0001l00CoO`000ol0000M0000>P000ol0001l00CoO`000ol0000M0000>P000ol0001l00Co O`000ol0000M0000>P000ol0001m00?oO`000ol0000M0000>P000ol0001m00;oP0000ol0000M0000 >P000ol0001m00;oP0000ol0000M0000>P000ol0001m00;oP0000ol0000M0000>P000ol0001n0003 o`0007h000?o00007@0003X000?o0000L00Mog8000?o00007@0003X000?o0000L0000ol0000I0003 o`00070000?o00007@0003X000?o0000L0000ol0000I0003o`00070000?o00007@0003X000?o0000 L0000ol0000I0003o`00070000?o00007@0003X000?o0000L0000ol0000I0003o`00070000?o0000 7@0003X000?o0000L0000ol0000I0003o`00070000?o00007@0003X000?o0000L0000ol0000I0003 o`00070000?o00007@0003X000?o0000L0000ol0000I0003o`00070000?o00007@0003X000?o0000 L0000ol0000I0003o`00070000?o00007@0003X000?o0000>003ocD000?o00001@05o`l000?o0000 L0000ol0000M0000>P000ol0000g0005o`000?l0=0000ol000050003o`00014000?o0000L0000ol0 000M0000>P000ol0000f0003o`0000<000?o0000<@000ol000060003o`00010000?o0000L0000ol0 000M0000>P000ol0000f0003o`0000<000?o0000<@000ol000070003o`0000l000?o0000L0000ol0 000M0000>P000ol0000f0003o`0000<000?o0000<@000ol000070003o`0000l000?o0000L0000ol0 000M0000>P000ol0000f0003o`0000<000?o0000<@000ol000080003o`0000h000?o0000L0000ol0 000M0000>P000ol0000f0003o`0000<000?o0000<@000ol000090003o`0000d000?o0000L0000ol0 000M0000>P000ol0000f0003o`0000<000?o0000<@000ol0000500Go30001?l00?mb0003o`0001d0 000j0003o`0002X000?o00001@001Ol0003o00D000?o0000<@000ol0000F0004o`00og8000?o0000 7@0003X000?o0000:P000ol000050003o`00008000Go0000o`0d0003o`0001H000Co003oLP000ol0 000M0000>P000ol0000[0003o`0000<000?o00001003ocD000?o00003@04o`D000Co003oLP000ol0 000M0000>P000ol0000[00Oo?P000ol0000F0004o`00og8000?o00007@0003X000?o0000;0001Ol0 003o03l000?o00005P001?l00?mb0003o`0001d0000j0003o`0002`000Go0000o`0o0003o`0001D0 0_l20003o`00070000?o00007@0003X000?o0000;@000ol0o`100003o`0001H000Co003oLP000ol0 000M0000>P000ol0000]0003o`3o040000?o00006@000ol0001`0003o`0001d0000j0003o`0002h0 00?o0000?`000ol0000I0003o`00070000?o00007@0003X000?o0000;P000ol0000o0003o`0001T0 00?o0000L0000ol0000M0000>P000ol0000^0003o`0003l07Omb0003o`0001d0000j0003o`0003D0 00?o0000AP000ol0001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0 000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0 001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0000j0003o`0003D0 00?o0000AP000ol0001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0 000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0 001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0000j0003o`0003D0 00?o0000AP000ol0001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0 000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0 001n0003o`0001d0000j0003o`0003D000?o0000AP000ol0001n0003o`0001d0000j0003o`000380 1_m300KoOP000ol0000M0000>P000ol0000b00Ko@`06ogh000?o00007@0003X000?o0000<`05od@0 1Omn0003o`0001d0000j0003o`0003<01?m500CoO`000ol0000M0000>P000ol0000c00CoA@04ogl0 00?o00007@0003X000?o0000<`04odD01?mo0003o`0001d0000j0003o`0003@00om600?oO`000ol0 000M0000>P000ol0000d00;oA`02oh0000?o00007@0003X000?o0000=002odL00_n00003o`0001d0 000j0003o`0003@00_m700;oP0000ol0000M0000>P000ol0000e0003o`0004H000?o0000OP000ol0 000M0000>P000ol0000b00So@008ogd000?o00007@0003X000?o0000;`03o`P00olj00?o2003ogX0 00?o00007@0003X000?o0000;@02o`h00_lf00;o3P02ogP000?o00007@0003X000?o0000;002oa00 0_ld00;o4002ogL000?o00007@0003X000?o0000:`000ol0000B0003o`00030000?o00004P000ol0 001d0003o`0001d0000j0003o`0002X000?o000050000ol0000^0003o`0001@000?o0000L`000ol0 000M0000>P000ol0000Y0003o`0001H000?o0000;002oaH00_md0003o`0001d0000j0003o`0002T0 00?o00001@000ol000050003o`0000H000?o0000;0000ol0000900;o2`000ol0001b0003o`0001d0 000j0003o`0002P000?o00001P000ol000050003o`0000L000?o0000:P000ol0000:00;o30000ol0 001a0003o`0001d0000j0003o`0002P000?o00001`000ol000030003o`0000P000?o0000:P000ol0 000:00;o30000ol0001a0003o`0001d0000j0003o`0001X00ol:0003o`0000T000Go0000o`0<0003 o`0002T000?o00002P02o``00_mb0003o`0001d0000j0003o`0001X01ol60003o`0000T000Go0000 o`0<0003o`0001d00ol90003o`0000H02_l90003o`00070000?o00003P03o``00002063o0P000ol0 000:0003o`3o00d000?o00007@07o`D000?o00001P0:o`T000?o0000L0000ol0000>00Oo200001H0 00?o00008@000ol0000J00[o0`000ol0000;0003o`0000`0:ol00`3o000;00;o3@2?o`@0000F0003 o`0003h01_l70003o`0000/000?o000030000ol0000M00[o0P000ol0000:00;o3@000ol000120003 o`0003`02_l500002P001Ol0003o00@000Go003o0003o`D00ol00`3o000300;o;002o`/000?o0000 2P000ol0o`0=0003o`0001d01_l60003o`0000X00_l=0003o`00048000?o0000?006o`T0000:0005 o`000?l010000ol00002o`<000Go0000o`0300;o0`001?l00?lh0003o`0000T000Go0000o`0<0003 o`0001d00_l:0003o`0000X00_l=0003o`0002/01?l500?o00<0o`000`02o`<000?o0?l00_l500?o 00<0o`000`02obX00_l=00002P001Ol0003o00@000Co003o1@001?l00?l40005o`000?l0?0000ol0 00080005o`000?l02`000ol0000Z0003o`0001P00_l/0003o`00008000Go0000o`0300;o0`001?l0 0?l200;o0`001Ol0003o00<00_l30004o`00ocP0000:0005o`000?l010001?l00?l50004o`00o`@0 00Go0000o`0l0003o`0000L000?o00000`000ol000080003o`0002X000?o000060000ol0000Z0003 o`0000@000Co003o10001Ol0003o00D000?o00000`001?l00?l40005o`000?l0>`0000X000Go0000 o`040004o`00o`D000Co003o10001Ol0003o03d000?o00001@000ol000050003o`0000H000?o0000 :`000ol0000H0003o`0002X000?o000010001?l00?l40005o`000?l01@000ol000030004o`00o`@0 00Go0000o`0k00002P001Ol0003o00@000Co003o1@001?l00?l40005o`000?l0?@000ol000050003 o`0000D000?o00001P000ol0000/0003o`0001H000?o0000:`000ol000040004o`00o`@000Go0000 o`050003o`0000<000Co003o10001Ol0003o03/0000:0004o`0000;o0`000ol00002o`<000Go0000 o`040005o`000?l0?P000ol0000D0003o`0002d00_lF00;o;@000ol000040004o`00o`@000Go0000 o`050003o`0000<000Co003o10001Ol0003o03/0000:0006o`000?l00ol30003o`3o00;o10000ol0 00020003o`0000Co?@000ol0000B0003o`0002l000?o000050000ol0000/0003o`0000@000Co003o 10001Ol0003o00D00_l30005o`000?l010001Ol0003o03/0000:0003o`0001/000?o0000?P02oa00 0_lc0003o`00018000?o0000;@000ol000040004o`00o`@000?o00001?l30003o`3o00;o10000ol0 00020003o`0000Co>@0000X000?o00006`000ol0000o00;o3P02ocD00_l@00;o<0000ol000040003 o`0000T000?o00005@000ol0000i00002P000ol0000K0003o`0004400ol800?o>002o`h00_lb0003 o`00008000?o00002P000ol0000E0003o`0003T0001_00So?@03o`P00ole00Co3@000ol0000E0003 o`0003T0002g00SoW@000?l0G@000?l0G@000?l0G@000001\ \>"], ImageRangeCache->{{{0, 347}, {292, 0}} -> {-5.00005*^-6, -4.20981*^-6, 0.00288187, 0.00288343}}], Cell[TextData[ "The following function is used to evaluate the inverse z-transform of a \ ratio of two polynomials in z."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "FindImpulseResponse[filter_,maxn_] :=\n\tBlock[{num, denom, numorder, \ denomorder, response,\n\t\t\ttheorder, inverseFilt, new},\n\t\t\tnew = \ Expand[Numerator[filter]] /\n\t\t\t\t\t\tExpand[Denominator[filter]];\n\t\t\t\ theorder = Abs[Exponent[Numerator[new],z]-\n\t\t\t\t\t\t\ Exponent[Denominator[new],z]];\n\t\t\tinverseFilt = Expand[new/.z->1/z];\n\t\t\ \tnum = Expand[Numerator[inverseFilt]];\n\t\t\tdenom = \ Expand[Denominator[inverseFilt]];\n\t\t\tinverseFilt = \ Simplify[Expand[z^theorder num]/\n\t\t\t\t\t\t\t\tExpand[z^theorder denom]];\t\ \t\n\t\t\tnum = Expand[Numerator[inverseFilt]];\n\t\t\tdenom = \ Expand[Denominator[inverseFilt]];\n\t\t\tnumorder = Exponent[num,z];\n\t\t\t\ denomorder = Exponent[denom,z];\n\t\t\tresponse = Table[0,{maxn}];\n\t\t\tDo \ [ response[[i+1]] = \n\t\t\t\t\t(Coefficient[num,z,i] - \n\t\t\t\t\t \ Sum[Coefficient[denom,z,j] *\n\t\t\t\t\t\t\tresponse[[i-j+1]],\n\t\t\t\t\t\t\ {j,1,Min[i,denomorder]}])/\n\t\t\t\t\t Coefficient[denom,z,0],\n\t\t\t\t{i, \ 0, maxn-1}];\n\t\t\tReturn[response]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FindImpulseResponse"], Cell[TextData[ "This is the impulse response for a simple low pass filter."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["FindImpulseResponse[z/(z-.9),10]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1, 0.9, 0.81, 0.7289999999999999999, 0.6560999999999999999, 0.5904899999999999999, 0.5314409999999999999, 0.4782968999999999999, 0.4304672099999999999, 0.3874204889999999999}\ \>", "\<\ {1, 0.9, 0.81, 0.729, 0.6561, 0.59049, 0.531441, 0.478297, 0.430467, 0.38742}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 2.4 - Digital Test Code"], "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Digital Test Code"], Cell[TextData[ "The following examples are used to verify the digital filter code."], "Text",\ Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "Clear[a,b]\nSimplify[FindImpulseResponse[1/(1-a z)/(1-b z),5]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {0, 0, 1/(a*b), (a + b)/(a^2*b^2), (a^2 + a*b + b^2)/(a^3*b^3)}\ \>", "\<\ 2 2 2 2 3 3 {0, 0, 1/(a b), (a + b)/(a b ), (a + a b + b )/(a b )}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "The next example is the impulse response for a perfect oscillator with a \ pair of poles on the unit circle."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData[ "ListPlot[FindImpulseResponse[1/(1-1.99z+z*z),100],\n\t\t\t\ PlotJoined->True];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00952381 0.309075 0.0294007 [ [(20)] 0.21429 0.30907 0 2 Msboxa [(40)] 0.40476 0.30907 0 2 Msboxa [(60)] 0.59524 0.30907 0 2 Msboxa [(80)] 0.78571 0.30907 0 2 Msboxa [(100)] 0.97619 0.30907 0 2 Msboxa [(-10)] 0.01131 0.01507 1 0 Msboxa [(-5)] 0.01131 0.16207 1 0 Msboxa [(5)] 0.01131 0.45608 1 0 Msboxa [(10)] 0.01131 0.60308 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.21429 0.30907 moveto 0.21429 0.31532 lineto stroke grestore [(20)] 0.21429 0.30907 0 2 Mshowa gsave 0.002 setlinewidth 0.40476 0.30907 moveto 0.40476 0.31532 lineto stroke grestore [(40)] 0.40476 0.30907 0 2 Mshowa gsave 0.002 setlinewidth 0.59524 0.30907 moveto 0.59524 0.31532 lineto stroke grestore [(60)] 0.59524 0.30907 0 2 Mshowa gsave 0.002 setlinewidth 0.78571 0.30907 moveto 0.78571 0.31532 lineto stroke grestore [(80)] 0.78571 0.30907 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.30907 moveto 0.97619 0.31532 lineto stroke grestore [(100)] 0.97619 0.30907 0 2 Mshowa gsave 0.001 setlinewidth 0.0619 0.30907 moveto 0.0619 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.1 0.30907 moveto 0.1 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.1381 0.30907 moveto 0.1381 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.17619 0.30907 moveto 0.17619 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.25238 0.30907 moveto 0.25238 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.29048 0.30907 moveto 0.29048 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.32857 0.30907 moveto 0.32857 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.36667 0.30907 moveto 0.36667 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.44286 0.30907 moveto 0.44286 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.48095 0.30907 moveto 0.48095 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.51905 0.30907 moveto 0.51905 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.55714 0.30907 moveto 0.55714 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.63333 0.30907 moveto 0.63333 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.67143 0.30907 moveto 0.67143 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.70952 0.30907 moveto 0.70952 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.74762 0.30907 moveto 0.74762 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.82381 0.30907 moveto 0.82381 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.8619 0.30907 moveto 0.8619 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.9 0.30907 moveto 0.9 0.31282 lineto stroke grestore gsave 0.001 setlinewidth 0.9381 0.30907 moveto 0.9381 0.31282 lineto stroke grestore gsave 0.002 setlinewidth 0 0.30907 moveto 1 0.30907 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.01507 moveto 0.03006 0.01507 lineto stroke grestore [(-10)] 0.01131 0.01507 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.16207 moveto 0.03006 0.16207 lineto stroke grestore [(-5)] 0.01131 0.16207 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.45608 moveto 0.03006 0.45608 lineto stroke grestore [(5)] 0.01131 0.45608 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.60308 moveto 0.03006 0.60308 lineto stroke grestore [(10)] 0.01131 0.60308 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.04447 moveto 0.02756 0.04447 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07387 moveto 0.02756 0.07387 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10327 moveto 0.02756 0.10327 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.13267 moveto 0.02756 0.13267 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19147 moveto 0.02756 0.19147 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22087 moveto 0.02756 0.22087 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25027 moveto 0.02756 0.25027 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27967 moveto 0.02756 0.27967 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33848 moveto 0.02756 0.33848 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36788 moveto 0.02756 0.36788 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39728 moveto 0.02756 0.39728 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42668 moveto 0.02756 0.42668 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48548 moveto 0.02756 0.48548 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51488 moveto 0.02756 0.51488 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54428 moveto 0.02756 0.54428 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57368 moveto 0.02756 0.57368 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath 0.004 setlinewidth 0.03333 0.30907 moveto 0.04286 0.30907 lineto 0.05238 0.33848 lineto 0.0619 0.36758 lineto 0.07143 0.3961 lineto 0.08095 0.42376 lineto 0.09048 0.45026 lineto 0.1 0.47535 lineto 0.10952 0.49878 lineto 0.11905 0.52032 lineto 0.12857 0.53974 lineto 0.1381 0.55685 lineto 0.14762 0.57149 lineto 0.15714 0.5835 lineto 0.16667 0.59277 lineto 0.17619 0.5992 lineto 0.18571 0.60273 lineto 0.19524 0.60332 lineto 0.20476 0.60097 lineto 0.21429 0.5957 lineto 0.22381 0.58757 lineto 0.23333 0.57665 lineto 0.24286 0.56305 lineto 0.25238 0.54692 lineto 0.2619 0.5284 lineto 0.27143 0.5077 lineto 0.28095 0.485 lineto 0.29048 0.46055 lineto 0.3 0.43459 lineto 0.30952 0.40736 lineto 0.31905 0.37916 lineto 0.32857 0.35025 lineto 0.3381 0.32093 lineto 0.34762 0.2915 lineto 0.35714 0.26224 lineto 0.36667 0.23345 lineto 0.37619 0.20541 lineto 0.38571 0.17841 lineto 0.39524 0.15272 lineto 0.40476 0.12859 lineto 0.41429 0.10627 lineto 0.42381 0.08597 lineto 0.43333 0.0679 lineto 0.44286 0.05225 lineto 0.45238 0.03917 lineto 0.4619 0.02878 lineto 0.47143 0.0212 lineto 0.48095 0.01649 lineto 0.49048 0.01472 lineto 0.5 0.01588 lineto Mistroke 0.50952 0.01998 lineto 0.51905 0.02697 lineto 0.52857 0.03677 lineto 0.5381 0.04931 lineto 0.54762 0.06444 lineto 0.55714 0.08201 lineto 0.56667 0.10186 lineto 0.57619 0.12378 lineto 0.58571 0.14755 lineto 0.59524 0.17294 lineto 0.60476 0.19969 lineto 0.61429 0.22753 lineto 0.62381 0.25619 lineto 0.63333 0.28537 lineto 0.64286 0.3148 lineto 0.65238 0.34416 lineto 0.6619 0.37318 lineto 0.67143 0.40155 lineto 0.68095 0.429 lineto 0.69048 0.45525 lineto 0.7 0.48004 lineto 0.70952 0.50312 lineto 0.71905 0.52426 lineto 0.72857 0.54325 lineto 0.7381 0.55989 lineto 0.74762 0.57403 lineto 0.75714 0.58552 lineto 0.76667 0.59424 lineto 0.77619 0.60011 lineto 0.78571 0.60307 lineto 0.79524 0.60309 lineto 0.80476 0.60017 lineto 0.81429 0.59434 lineto 0.82381 0.58566 lineto 0.83333 0.57421 lineto 0.84286 0.56011 lineto 0.85238 0.5435 lineto 0.8619 0.52455 lineto 0.87143 0.50344 lineto 0.88095 0.48038 lineto 0.89048 0.45562 lineto 0.9 0.42938 lineto 0.90952 0.40195 lineto 0.91905 0.37359 lineto 0.92857 0.34458 lineto 0.9381 0.31521 lineto 0.94762 0.28579 lineto 0.95714 0.2566 lineto 0.96667 0.22793 lineto 0.97619 0.20007 lineto Mistroke Mfstroke % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonICXf=SLcII03=Voc=Vc3=V VC=VIS=V0000ol0001M0003o`0000L0000E0003o`0005P000?o0000>0000ol0001L0003o`0000P0 000E0003o`0005P000?o0000>@000ol0001K0003o`0000P0000E0003o`0005L000?o0000>P000ol0 001K0003o`0000P0000E0003o`0005L000?o0000>P000ol0001J0003o`0000T0000E00;oE`000ol0 000l0003o`0005T000?o00002@0001D000?o0000EP000ol0000l0003o`0005T000?o00002@0001D0 00?o0000EP000ol0000l0003o`0005P000?o00002P0001D000?o0000E@000ol0000n0003o`0005L0 00?o00002P0001D000?o0000E@000ol0000n0003o`0005L000?o00002P0001D000?o0000E@000ol0 000n0003o`0005H000?o00002`0001D000?o0000E0000ol000100003o`0005D000?o00002`0001D0 0_mE0003o`00040000?o0000E@000ol0000;00005@000ol0001D0003o`00040000?o0000E0000ol0 000<00005@000ol0001C0003o`00048000?o0000D`000ol0000<00005@000ol0000Y00Co0`02ob40 00?o00001@03o`<00_lY00;o1002o`@000?o00008P02o`@00_lV00Co0`02o`@00_l300005@000ol0 000Z0003o`00008000Co003o80000ol000060005o`000?l00P000ol0000U0004o`00o`8000Co003o 0`000ol0000Q0004o`00o`8000Co003o9P02o`<000Co003o0P001?l00?l200005@000ol0000[0005 o`000?l00P000ol0000M0003o`0000D01?l20004o`00obL000Co003o0P001?l00?l40003o`000200 00Co003o0P001?l00?lV00;o0`001?l00?l20004o`00o`80000E0003o`0002`000Co003o0P000ol0 000M0003o`0000D000?o0?l00`001?l00?lW00?o0`001?l00?l40003o`0002400_l30004o`00obH0 00?o00000P001?l00?l20004o`00o`80000E0003o`0002T000Co003o0P001?l00?lO0003o`0000D0 00?o0?l00`001?l00?lW0003o`0000<000Co003o10000ol0000P0004o`00o`8000Co003o9P000ol0 00020004o`00o`8000Co003o0P0001D00_l[00;o1002oal000?o00001`02o`@00_lY00?o0`02o`H0 00?o00008002o`@00_lV00;o1@02o`@00_l300005@000ol0001A0003o`0004H000?o0000CP000ol0 000?00005@000ol0001A0003o`0004H000?o0000CP000ol0000?00005@000ol0001@0003o`0004L0 00?o0000CP000ol0000?00005@000ol0001@0003o`0004P000?o0000C0000ol0000@00005@000ol0 001@0003o`0004P000?o0000C0000ol0000@00005@000ol0001?0003o`0004T000?o0000C0000ol0 000@00003`3oo`Co0`0001D000?o00000P000ol000020003o`0000H000?o00001`000ol000070003 o`0000L000?o00001`000ol000070003o`0000H000Go0000o`050003o`0000L000?o00001`000ol0 00070003o`0000L000?o00001P000ol000070003o`0000L000?o0?l01`000ol000070003o`0000L0 00?o00001P000ol000070003o`0000L000?o00001`000ol000070003o`0000L000?o00001`0001D0 00?o00000P000ol0000Y0003o`0001h000?o00003@000ol0000^0003o`0000T000?o00008P000ol0 000U0003o`0000L000?o00001`0001D000?o00000`000ol000180003o`0004/000?o0000BP000ol0 000A00005@000ol000030003o`0004P000?o0000C0000ol000180003o`000180000E0003o`0000<0 00?o0000B0000ol0001<0003o`0004P000?o00004P0001D000?o00000`000ol000170003o`0004d0 00?o0000B0000ol0000B00005@000ol000040003o`0004H000?o0000CP000ol000160003o`0001<0 000E00;o1@000ol000150003o`0004l000?o0000AP000ol0000C00005@000ol000040003o`0004D0 00?o0000C`000ol000160003o`0001<0000E0003o`0000D000?o0000A0000ol0001@0003o`0004@0 00?o0000500001D000?o00001@000ol000130003o`00054000?o0000A0000ol0000D00005@000ol0 00050003o`0004<000?o0000D@000ol000140003o`0001@0000E0003o`0000H000?o0000@P000ol0 001B0003o`00048000?o00005@0001D000?o00001P000ol000110003o`0005<000?o0000@P000ol0 000E00005@000ol000060003o`00044000?o0000D`000ol000120003o`0001D0000E00;o20000ol0 00100003o`0005@000?o0000@0000ol0000F00005@000ol000070003o`00040000?o0000E0000ol0 00100003o`0001H0000E0003o`0000L000?o0000?`000ol0001E0003o`00040000?o00005P0001D0 00?o000020000ol0000n0003o`0005H000?o0000?P000ol0000G00005@000ol000080003o`0003h0 00?o0000EP000ol0000n0003o`0001L0000E0003o`0000P000?o0000?@000ol0001H0003o`0003`0 00?o0000600001D000?o00002@000ol0000l0003o`0005P000?o0000?0000ol0000H00005@02o`X0 00?o0000>`000ol0001I0003o`0003`000?o0000600001D000?o00002@000ol0000k0003o`0005X0 00?o0000>P000ol0000I00005@000ol000090003o`0003/000?o0000FP000ol0000j0003o`0001T0 000E0003o`0000X000?o0000>@000ol0001K0003o`0003X000?o00006@0001D000?o00002P000ol0 000i0003o`0005`000?o0000>0000ol0000J00005@000ol0000:0003o`0003T000?o0000G0000ol0 000h0003o`0001X0000E0003o`0000/000?o0000=`000ol0001M0003o`0003P000?o00006P0001D0 00?o00002`000ol0000g0003o`0005h000?o0000=`000ol0000J00005@02o``000?o0000=`000ol0 001N0003o`0003H000?o00006`0001D000?o000030000ol0000e0003o`0005l000?o0000=P000ol0 000K00005@000ol0000<0003o`0003D000?o0000H0000ol0000e0003o`0001/0000E0003o`0000d0 00?o0000=0000ol0001P0003o`0003@000?o0000700001D000?o00003@000ol0000d0003o`000640 00?o0000<`000ol0000L00003@03o`D000?o00003@000ol0000c0003o`00068000?o00000003o`0002l0000E0003o`00024000?o00002`000ol0 00290003o`0000`000?o0000<00000L00ol400;o1@000ol0000R00;o2@02ohd00_l:00;o<`0000P0 00?o00000P001?l00?l40003o`0002@00ol50003o`0008l000?o00001P000ol0000c000020000ol0 00020004o`00o`@00_lX00GoT`08ocH000080003o`00008000Co003o10000ol0003m000020000ol0 00020004o`00o`@000?o0000o@0000L00_l500;o1@000ol0003m00005@000ol0003m0000o`0F0000 o`0F0000o`0F0000o`0F0000o`0F0000\ \>"], ImageRangeCache->{{{0, 276}, {170, 0}} -> {-8.63682, -11.2031, 0.406881, 0.131802}}] }, Open ]], Cell[TextData[ "A second order filter with finite q will have an impulse response that is a \ decaying sinusoid. The following example shows the impulse response to a \ second order filter with a center frequency of 1000 Hz, sampling frequency of \ 8000 Hz and a q of 10."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["aFilter = SecondOrderFromCenterQ[1000,10,8000] //N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ 0.9244652503762558567 - 1.361088952561160545*z + z^2\ \>", "\<\ 2 0.924465 - 1.36109 z + z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["RationalPoles[1/aFilter]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {0.6805444762805802727 - 0.6792087059072833848*I, 0.6805444762805802726 + 0.6792087059072833846*I}\ \>", "\<\ {0.680544 - 0.679209 I, 0.680544 + 0.679209 I}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ListPlot[FindImpulseResponse[1/aFilter,50],\n\t\tPlotJoined->True];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.0190476 0.285948 0.233174 [ [(10)] 0.21429 0.28595 0 2 Msboxa [(20)] 0.40476 0.28595 0 2 Msboxa [(30)] 0.59524 0.28595 0 2 Msboxa [(40)] 0.78571 0.28595 0 2 Msboxa [(50)] 0.97619 0.28595 0 2 Msboxa [(-1)] 0.01131 0.05277 1 0 Msboxa [(-0.5)] 0.01131 0.16936 1 0 Msboxa [(0.5)] 0.01131 0.40253 1 0 Msboxa [(1)] 0.01131 0.51912 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.21429 0.28595 moveto 0.21429 0.2922 lineto stroke grestore [(10)] 0.21429 0.28595 0 2 Mshowa gsave 0.002 setlinewidth 0.40476 0.28595 moveto 0.40476 0.2922 lineto stroke grestore [(20)] 0.40476 0.28595 0 2 Mshowa gsave 0.002 setlinewidth 0.59524 0.28595 moveto 0.59524 0.2922 lineto stroke grestore [(30)] 0.59524 0.28595 0 2 Mshowa gsave 0.002 setlinewidth 0.78571 0.28595 moveto 0.78571 0.2922 lineto stroke grestore [(40)] 0.78571 0.28595 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.28595 moveto 0.97619 0.2922 lineto stroke grestore [(50)] 0.97619 0.28595 0 2 Mshowa gsave 0.001 setlinewidth 0.0619 0.28595 moveto 0.0619 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.1 0.28595 moveto 0.1 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.1381 0.28595 moveto 0.1381 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.17619 0.28595 moveto 0.17619 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.25238 0.28595 moveto 0.25238 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.29048 0.28595 moveto 0.29048 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.32857 0.28595 moveto 0.32857 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.36667 0.28595 moveto 0.36667 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.44286 0.28595 moveto 0.44286 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.48095 0.28595 moveto 0.48095 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.51905 0.28595 moveto 0.51905 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.55714 0.28595 moveto 0.55714 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.63333 0.28595 moveto 0.63333 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.67143 0.28595 moveto 0.67143 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.70952 0.28595 moveto 0.70952 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.74762 0.28595 moveto 0.74762 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.82381 0.28595 moveto 0.82381 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.8619 0.28595 moveto 0.8619 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.9 0.28595 moveto 0.9 0.2897 lineto stroke grestore gsave 0.001 setlinewidth 0.9381 0.28595 moveto 0.9381 0.2897 lineto stroke grestore gsave 0.002 setlinewidth 0 0.28595 moveto 1 0.28595 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.05277 moveto 0.03006 0.05277 lineto stroke grestore [(-1)] 0.01131 0.05277 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.16936 moveto 0.03006 0.16936 lineto stroke grestore [(-0.5)] 0.01131 0.16936 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.40253 moveto 0.03006 0.40253 lineto stroke grestore [(0.5)] 0.01131 0.40253 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.51912 moveto 0.03006 0.51912 lineto stroke grestore [(1)] 0.01131 0.51912 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.07609 moveto 0.02756 0.07609 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09941 moveto 0.02756 0.09941 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12273 moveto 0.02756 0.12273 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14604 moveto 0.02756 0.14604 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19268 moveto 0.02756 0.19268 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.216 moveto 0.02756 0.216 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.23931 moveto 0.02756 0.23931 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26263 moveto 0.02756 0.26263 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.30927 moveto 0.02756 0.30927 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33258 moveto 0.02756 0.33258 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3559 moveto 0.02756 0.3559 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37922 moveto 0.02756 0.37922 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42585 moveto 0.02756 0.42585 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44917 moveto 0.02756 0.44917 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47249 moveto 0.02756 0.47249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4958 moveto 0.02756 0.4958 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.02946 moveto 0.02756 0.02946 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.00614 moveto 0.02756 0.00614 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54244 moveto 0.02756 0.54244 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56576 moveto 0.02756 0.56576 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58907 moveto 0.02756 0.58907 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.61239 moveto 0.02756 0.61239 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath 0.004 setlinewidth 0.04286 0.28595 moveto 0.0619 0.28595 lineto 0.08095 0.51912 lineto 0.1 0.60332 lineto 0.11905 0.50236 lineto 0.1381 0.2871 lineto 0.15714 0.08745 lineto 0.17619 0.01472 lineto 0.19524 0.10028 lineto 0.21429 0.28398 lineto 0.23333 0.45491 lineto 0.25238 0.51775 lineto 0.27143 0.44524 lineto 0.29048 0.28847 lineto 0.30952 0.14212 lineto 0.32857 0.08785 lineto 0.34762 0.14929 lineto 0.36667 0.28307 lineto 0.38571 0.40837 lineto 0.40476 0.45524 lineto 0.42381 0.40319 lineto 0.44286 0.28902 lineto 0.4619 0.18175 lineto 0.48095 0.14128 lineto 0.5 0.18537 lineto 0.51905 0.28279 lineto 0.5381 0.37464 lineto 0.55714 0.40957 lineto 0.57619 0.37223 lineto 0.59524 0.28909 lineto 0.61429 0.21047 lineto 0.63333 0.1803 lineto 0.65238 0.21194 lineto 0.67143 0.28288 lineto 0.69048 0.35019 lineto 0.70952 0.37622 lineto 0.72857 0.34943 lineto 0.74762 0.2889 lineto 0.76667 0.23128 lineto 0.78571 0.2088 lineto 0.80476 0.23149 lineto 0.82381 0.28314 lineto 0.84286 0.33247 lineto 0.8619 0.35187 lineto 0.88095 0.33266 lineto 0.9 0.28858 lineto 0.91905 0.24635 lineto 0.9381 0.22962 lineto 0.95714 0.24588 lineto 0.97619 0.28349 lineto Mistroke Mfstroke % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{277, 171}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[" 2.5 - Analog to Digital Filter Conversion"], "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Analog to Digital Filter Conversion"], Cell[TextData[ "Filters can be transformed from the analog domain into the digitial domains \ using a number of methods. The simplest is known as the standard-z transform \ or the impulse invariant technique. A more accurate approach, the bilinear \ transform, is discussed in the second half of this section"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "The basic procedure of the impulse-invariant technique is to reduce the \ filter into a number of first order sections using the partial fractions \ expansion. Each first order section (in the s-domain) can then be transformed \ into its digital equivalent by mapping the first order pole in the s-plane \ into a single pole in the z-plane. Complex poles lead to complex filter \ coefficients but real valued filter coefficients are possible by combining \ complex conjugate pairs."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["The function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["GroupRoots", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " is used to group complex conjugate roots into common lists. This routine \ works by keeping a list of active roots (roots). Each iteration through the \ loop it takes the first root off of the list (current) and then sorts the \ remaining roots by how close they are to the conjugate of the current root. \ If the difference in magnitude between the complex conjugate of the current \ root and the first item in the sorted list is less than 0.0001% of the \ magnitude of the root then we have a complex conjugate pair. This routine \ returns a list of isolated roots and complex conjugate pairs. (Each item in \ the returned list is a list of either one or two element lists.)", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "GroupRoots[listofroots_] :=\n\tBlock[{groups, current, roots},\n\t\tgroups = \ {};\n\t\troots = listofroots;\n\t\tWhile[Length[roots]>0,\n\t\t\tcurrent = \ Conjugate[First[roots]];\n\t\t\troots = Sort[Rest[roots],\n\t\t\t\t\t\t\ Abs[#1-current]<=Abs[#2-current]&];\n\t\t\tIf [Length[roots]>0 && \n\t\t\t\t\ Abs[First[roots]-current]True, AspectRatioFixed->False, CellTags->"GroupRoots"], Cell[CellGroupData[{ Cell[TextData["GroupRoots[Last[LpToBr[ChebychevLp[7,3],1000,2000]]]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {{-122.439501297608484 + 12636.37556915483234*I, -122.4395012976084846 - 12636.37556915483233*I}, {-555.4269634950374268 - 13663.18603984920222*I, -555.4269634950374245 + 13663.18603984920221*I}, {-2819.070145385307304 + 17784.22464121122297*I, -2819.070145385307322 - 17784.224641211223*I}, {-60.53763659605460015 - 6247.790165670166322*I, -60.5376365960546004 + 6247.790165670166321*I}, {-234.5285046285860215 + 5769.267250232506845*I, -234.5285046285860207 - 5769.267250232506847*I}, {-686.5118542205541368 - 4330.889408445018482*I, -686.5118542205541391 + 4330.889408445018476*I}, {-1643.861014500753277}, {-48031.33264444157061}}\ \>", "\<\ {{-122.44 + 12636.4 I, -122.44 - 12636.4 I}, {-555.427 - 13663.2 I, -555.427 + 13663.2 I}, {-2819.07 + 17784.2 I, -2819.07 - 17784.2 I}, {-60.5376 - 6247.79 I, -60.5376 + 6247.79 I}, {-234.529 + 5769.27 I, -234.529 - 5769.27 I}, {-686.512 - 4330.89 I, -686.512 + 4330.89 I}, {-1643.86}, {-48031.3}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox[ "The partial fractions expansion is done by calculating the residue due to \ each pole in the filter\[CloseCurlyQuote]s s-domain transfer function. \ Several functions are defined here to make that easier. ", Evaluatable->False, AspectRatioFixed->False], StyleBox["DeletePole", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " deletes a single pole from a list of poles by removing the pole closest \ to the given pole. ", Evaluatable->False, AspectRatioFixed->False], StyleBox["EvaluateGZP", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " finds the value of a filter (expressed in terms of its gain, zeros and \ poles) at a given point. Finally, ", Evaluatable->False, AspectRatioFixed->False], StyleBox["FindResidue", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " combines all of these function to compute the residue due to a pole of \ the transfer function.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "DeletePole[pole_, poles_] :=\n\tRest[Sort[poles, \ Abs[#1-pole]<=Abs[#2-pole]&]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"DeletePole"], Cell[CellGroupData[{ Cell[TextData["DeletePole[-1,{3,-1}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {3}\ \>", "\<\ {3}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "EvaluateGZP[gain_, zeros_, poles_, w_] :=\n\tgain * \ Apply[Times,Map[(w-#)&,zeros]]/\n\t\t\tApply[Times,Map[(w-#)&,poles]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"EvaluateGZP"], Cell[CellGroupData[{ Cell[TextData["FilterFromGZP[{2,{2},{3,-1}}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (2.*(-2. + s))/((-3. + s)*(1. + s))\ \>", "\<\ 2. (-2. + s) ------------------ (-3. + s) (1. + s)\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["EvaluateGZP[2,{2},{3,-1},4]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 4/5\ \>", "\<\ 4/5\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FilterFromGZP[{2,{2},{3,-1}}]/.s->4//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 0.8\ \>", "\<\ 0.8\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "FindResidue[pole_, gain_, zeros_, poles_] :=\n\tEvaluateGZP[gain, zeros, \ DeletePole[pole,poles], pole]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"FindResidue"], Cell[CellGroupData[{ Cell[TextData["FindResidue[-1,2,{2},{3,-1}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 3/2\ \>", "\<\ 3/2\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox["The function ", Evaluatable->False, AspectRatioFixed->False], StyleBox["PartialFractions", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " transforms a filter function (in gain, zeros, poles form) into a sum of \ first order rational polynomials. This is test code for the standard-z \ transform code that follows.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "PartialExpand[polelist_, gain_, zeros_, poles_] :=\n\tIf [Length[polelist] \ == 1,\n\t\tFindResidue[First[polelist],gain,zeros,poles]/\n\t\t\t\ (s-First[polelist]),\n\t\tFindResidue[First[polelist],gain,zeros,poles]/\n\t\t\ \t(s-First[polelist]) + \n\t\t FindResidue[Last[polelist],gain,zeros,poles]/\n\ \t\t\t(s-Last[polelist])]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"PartialExpand"], Cell[CellGroupData[{ Cell[TextData["PartialExpand[{-1},2,{2},{3,-1}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 3/(2*(1 + s))\ \>", "\<\ 3 --------- 2 (1 + s)\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "PartialFractions[{gain_,zeros_,poles_}] :=\n\t\ Apply[Plus,Map[PartialExpand[#,gain,zeros,poles]&,\n\t\t\t\t\t\ GroupRoots[poles]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"PartialFractions"], Cell[CellGroupData[{ Cell[TextData["PartialFractions[{2,{2},{3,-1}}]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ 1/(2*(-3 + s)) + 3/(2*(1 + s))\ \>", "\<\ 1 3 ---------- + --------- 2 (-3 + s) 2 (1 + s)\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "A seventh order Chebychev polynomial is a more difficult function to \ transform into partial fractions form. We plot the resulting transfer \ function to insure that it is equivalent to the original gain, zero, pole \ form."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[CellGroupData[{ Cell[TextData["PartialFractions[ChebychevLp[7,3]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (0.01864324251165083577 - 0.02199702021065469124*I)/ (0.0281456429213639581 + 0.9826956832367447126*I + s) \\ + (0.02726306934528885181 + 0.009389592076876778965*I)/ (0.02814564292136395831 - 0.9826956832367447122*I + s)\\ + (-0.06341344086342746753 + 0.05159831140657247761*I)/ (0.07886233899985800172 + 0.7880607512000636018*I + s)\\ + (-0.08087216547235294114 - 0.01197259679273485162*I)/ (0.07886233899985800241 - 0.7880607512000635975*I + s)\\ + (0.1202808719150961905 - 0.008744083230685223556*I)/ (0.1139593816563137625 - 0.4373407224573578599*I + s) \\ + (0.1078753164535087711 - 0.05391533399930177192*I)/ (0.1139593816563137625 + 0.4373407224573578599*I + s) \\ + (-0.1297768938897642406 + 0.03564113074992728175*I)/ (0.1264853711556394371 + s)\ \>", "\<\ 0.0186432 - 0.021997 I 0.0272631 + 0.00938959 I -------------------------- + -------------------------- + 0.0281456 + 0.982696 I + s 0.0281456 - 0.982696 I + s -0.0634134 + 0.0515983 I -------------------------- + 0.0788623 + 0.788061 I + s -0.0808722 - 0.0119726 I -------------------------- + 0.0788623 - 0.788061 I + s 0.120281 - 0.00874408 I 0.107875 - 0.0539153 I ------------------------- + ------------------------- + 0.113959 - 0.437341 I + s 0.113959 + 0.437341 I + s -0.129777 + 0.0356411 I ----------------------- 0.126485 + s\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponseRadians[\n\t\ PartialFractions[ChebychevLp[7,3]]//N,2];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.47619 0.603319 0.079887 [ [(0.5)] 0.2619 0.60332 0 2 Msboxa [(1)] 0.5 0.60332 0 2 Msboxa [(1.5)] 0.7381 0.60332 0 2 Msboxa [(2)] 0.97619 0.60332 0 2 Msboxa [( RPS)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-7)] 0.01131 0.04411 1 0 Msboxa [(-6)] 0.01131 0.124 1 0 Msboxa [(-5)] 0.01131 0.20388 1 0 Msboxa [(-4)] 0.01131 0.28377 1 0 Msboxa [(-3)] 0.01131 0.36366 1 0 Msboxa [(-2)] 0.01131 0.44354 1 0 Msboxa [(-1)] 0.01131 0.52343 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.2619 0.60332 moveto 0.2619 0.60957 lineto stroke grestore [(0.5)] 0.2619 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.60332 moveto 0.5 0.60957 lineto stroke grestore [(1)] 0.5 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.7381 0.60332 moveto 0.7381 0.60957 lineto stroke grestore [(1.5)] 0.7381 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.60332 moveto 0.97619 0.60957 lineto stroke grestore [(2)] 0.97619 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07143 0.60332 moveto 0.07143 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.60332 moveto 0.11905 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16667 0.60332 moveto 0.16667 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.60332 moveto 0.21429 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.60332 moveto 0.30952 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35714 0.60332 moveto 0.35714 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.60332 moveto 0.40476 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45238 0.60332 moveto 0.45238 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54762 0.60332 moveto 0.54762 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.60332 moveto 0.59524 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.64286 0.60332 moveto 0.64286 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.60332 moveto 0.69048 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.60332 moveto 0.78571 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83333 0.60332 moveto 0.83333 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.60332 moveto 0.88095 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.92857 0.60332 moveto 0.92857 0.60707 lineto stroke grestore [( RPS)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.04411 moveto 0.03006 0.04411 lineto stroke grestore [(-7)] 0.01131 0.04411 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.124 moveto 0.03006 0.124 lineto stroke grestore [(-6)] 0.01131 0.124 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.20388 moveto 0.03006 0.20388 lineto stroke grestore [(-5)] 0.01131 0.20388 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.28377 moveto 0.03006 0.28377 lineto stroke grestore [(-4)] 0.01131 0.28377 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.36366 moveto 0.03006 0.36366 lineto stroke grestore [(-3)] 0.01131 0.36366 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.44354 moveto 0.03006 0.44354 lineto stroke grestore [(-2)] 0.01131 0.44354 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.52343 moveto 0.03006 0.52343 lineto stroke grestore [(-1)] 0.01131 0.52343 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.06009 moveto 0.02756 0.06009 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07606 moveto 0.02756 0.07606 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09204 moveto 0.02756 0.09204 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.10802 moveto 0.02756 0.10802 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.13997 moveto 0.02756 0.13997 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.15595 moveto 0.02756 0.15595 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17193 moveto 0.02756 0.17193 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18791 moveto 0.02756 0.18791 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21986 moveto 0.02756 0.21986 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.23584 moveto 0.02756 0.23584 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25182 moveto 0.02756 0.25182 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26779 moveto 0.02756 0.26779 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29975 moveto 0.02756 0.29975 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.31573 moveto 0.02756 0.31573 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3317 moveto 0.02756 0.3317 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34768 moveto 0.02756 0.34768 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37964 moveto 0.02756 0.37964 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39561 moveto 0.02756 0.39561 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41159 moveto 0.02756 0.41159 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42757 moveto 0.02756 0.42757 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45952 moveto 0.02756 0.45952 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.4755 moveto 0.02756 0.4755 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.49148 moveto 0.02756 0.49148 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50745 moveto 0.02756 0.50745 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53941 moveto 0.02756 0.53941 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55539 moveto 0.02756 0.55539 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57136 moveto 0.02756 0.57136 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58734 moveto 0.02756 0.58734 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.02813 moveto 0.02756 0.02813 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01215 moveto 0.02756 0.01215 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02857 0.60163 moveto 0.06806 0.49516 lineto 0.07793 0.46047 lineto 0.0878 0.42908 lineto 0.09767 0.40278 lineto 0.1026 0.39192 lineto 0.10754 0.38272 lineto 0.11248 0.37527 lineto 0.11494 0.37221 lineto 0.11741 0.36962 lineto 0.11988 0.36748 lineto 0.12235 0.36582 lineto 0.12358 0.36516 lineto 0.12481 0.36462 lineto 0.12605 0.3642 lineto 0.12728 0.3639 lineto 0.12852 0.36372 lineto 0.12975 0.36366 lineto 0.13098 0.36372 lineto 0.13222 0.36389 lineto 0.13345 0.36419 lineto 0.13469 0.36461 lineto 0.13715 0.36581 lineto 0.13962 0.36749 lineto 0.14209 0.36965 lineto 0.14702 0.3754 lineto 0.15196 0.38306 lineto 0.15689 0.39258 lineto 0.16677 0.41694 lineto 0.18651 0.48318 lineto 0.19638 0.5209 lineto 0.20625 0.55682 lineto 0.21119 0.57247 lineto 0.21612 0.5856 lineto 0.21859 0.59099 lineto 0.22106 0.59549 lineto 0.22352 0.59902 lineto 0.22476 0.60041 lineto 0.22599 0.60153 lineto 0.22723 0.60239 lineto 0.22846 0.60297 lineto 0.22969 0.60327 lineto 0.23093 0.6033 lineto 0.23216 0.60304 lineto 0.2334 0.6025 lineto 0.23463 0.60169 lineto 0.23586 0.6006 lineto 0.23833 0.5976 lineto 0.2408 0.59354 lineto 0.24573 0.58248 lineto Mistroke 0.25067 0.568 lineto 0.25561 0.55082 lineto 0.26548 0.51152 lineto 0.27535 0.4705 lineto 0.28522 0.43254 lineto 0.29509 0.40103 lineto 0.30002 0.38843 lineto 0.30496 0.37824 lineto 0.30743 0.3741 lineto 0.3099 0.37063 lineto 0.31236 0.36784 lineto 0.3136 0.3667 lineto 0.31483 0.36574 lineto 0.31607 0.36496 lineto 0.3173 0.36436 lineto 0.31853 0.36395 lineto 0.31977 0.36371 lineto 0.321 0.36366 lineto 0.32223 0.3638 lineto 0.32347 0.36413 lineto 0.3247 0.36464 lineto 0.32717 0.36624 lineto 0.3284 0.36733 lineto 0.32964 0.36862 lineto 0.33211 0.37177 lineto 0.33457 0.37571 lineto 0.33951 0.38596 lineto 0.34444 0.39934 lineto 0.35432 0.43517 lineto 0.36419 0.48122 lineto 0.37406 0.53229 lineto 0.37899 0.55666 lineto 0.38393 0.57786 lineto 0.3864 0.58661 lineto 0.38886 0.59376 lineto 0.3901 0.59666 lineto 0.39133 0.59907 lineto 0.39257 0.60096 lineto 0.3938 0.60231 lineto 0.39503 0.6031 lineto 0.39627 0.60331 lineto 0.3975 0.60295 lineto 0.39874 0.60199 lineto 0.39997 0.60043 lineto 0.4012 0.59829 lineto 0.40367 0.59228 lineto 0.40614 0.58408 lineto 0.40861 0.57388 lineto 0.41354 0.5485 lineto 0.42341 0.48649 lineto Mistroke 0.43328 0.42539 lineto 0.43822 0.40015 lineto 0.44069 0.38956 lineto 0.44315 0.38054 lineto 0.44562 0.37328 lineto 0.44686 0.37036 lineto 0.44809 0.36793 lineto 0.44932 0.36603 lineto 0.45056 0.36467 lineto 0.45179 0.36387 lineto 0.45303 0.36366 lineto 0.45426 0.36406 lineto 0.45549 0.36509 lineto 0.45673 0.36677 lineto 0.45796 0.36914 lineto 0.46043 0.37599 lineto 0.46166 0.38052 lineto 0.4629 0.38583 lineto 0.46536 0.39885 lineto 0.46783 0.41519 lineto 0.47277 0.45802 lineto 0.4777 0.51264 lineto 0.48017 0.54201 lineto 0.48264 0.56975 lineto 0.48387 0.58183 lineto 0.48511 0.59188 lineto 0.48634 0.59919 lineto 0.48757 0.60297 lineto 0.48881 0.60245 lineto 0.49004 0.59696 lineto 0.49128 0.58599 lineto 0.49251 0.56929 lineto 0.49498 0.51909 lineto 0.49745 0.44966 lineto 0.50238 0.27618 lineto Mfstroke 0.51024 0 moveto 0.50238 0.27618 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "Using the impulse-invariant technique, a simple pole in the s-domain is \ transformed into the z-domain using the substitution"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ r/(s-p) -> (T r) / (1 - E^(T p)/z)\ \>", "\<\ r T r ----- -> -------- s - p T p E 1 - ---- z\ \>"], "Input", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "The r term represents the residue corresponding to the pole at p in the \ original s-domain filter and T is the sampling interval in the new digital \ filter. The resulting digital filter has the same impulse response (within \ the limits due to aliasing) as the original continuous filter. Note that when \ a pair of complex conjugate poles are transformed the two complex first order \ filters can be combined into a single second order filter with real \ coefficients."], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "StandardZExpand[polelist_, gain_, zeros_, poles_,T_] :=\n\tIf \ [Length[polelist] == 1,\n\t\tT FindResidue[First[polelist],gain,zeros,poles]/\ \n\t\t\t(1-E^(T First[polelist]) z^-1),\n\t\tBlock[{r1,r2,p1,p2},\n\t\t\tp1 = \ First[polelist];\n\t\t\tp2 = Last[polelist];\n\t\t\tr1 = T \ FindResidue[p1,gain,zeros,poles];\n\t\t\tr2 = T \ FindResidue[p2,gain,zeros,poles];\n\t\t\tzp1 = E^(T p1);\n\t\t\tzp2 = E^(T \ p2);\n\t\t\t(r1 + r2 - (r1 zp2 + r2 zp1)/z)/\n\t\t\t\t(1 - (zp1+zp2)/z + zp1 \ zp2 / z^2)]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"StandardZExpand"], Cell[TextData[ "StandardZTransform[{gain_,zeros_,poles_},T_] :=\n\t\ Chop[Apply[Plus,Map[StandardZExpand[#,gain,zeros,poles,T]&,\n\t\t\t\t\t\ GroupRoots[poles]]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"StandardZTransform"], Cell[CellGroupData[{ Cell[TextData[ "StandardZTransform[LpToBp[ButterworthLp[3,3],1000,2000],\n\t\t\t\t\ 1/8000.]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (0.7860200447134526231 - 0.4420976183294974326/z)/ (1. + 0.4556546765087400956/z^2 - 0.6847388412640366445/z) + (-0.3085881686641923589 + 0.1254438828994718499/z)/ (1. + 0.758560276676346936/z^2 - 1.205970346234166461/z) + (-0.477431876049260264 + 0.3070165322627507869/z)/ (1. + 0.6006835455518496198/z^2 - 0.1300475723072220039/z)\ \>", "\<\ 0.442098 0.125444 0.78602 - -------- -0.308588 + -------- z z ------------------------ + ---------------------- + 0.455655 0.684739 0.75856 1.20597 1. + -------- - -------- 1. + ------- - ------- 2 z 2 z z z 0.307017 -0.477432 + -------- z ------------------------ 0.600684 0.130048 1. + -------- - -------- 2 z z\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "FreqResponse[\n\tStandardZTransform[LpToBp[ButterworthLp[3,3],\n\t\t\t\t\t\t\ \t\t1000,2000],\n\t\t\t\t\t\t1/8000.]//N,\n\t8000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238572 0.603319 0.0100581 [ [(1000)] 0.26238 0.60332 0 2 Msboxa [(2000)] 0.50095 0.60332 0 2 Msboxa [(3000)] 0.73953 0.60332 0 2 Msboxa [(4000)] 0.9781 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-50)] 0.01131 0.10041 1 0 Msboxa [(-40)] 0.01131 0.201 1 0 Msboxa [(-30)] 0.01131 0.30158 1 0 Msboxa [(-20)] 0.01131 0.40216 1 0 Msboxa [(-10)] 0.01131 0.50274 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.60332 moveto 0.26238 0.60957 lineto stroke grestore [(1000)] 0.26238 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.60332 moveto 0.50095 0.60957 lineto stroke grestore [(2000)] 0.50095 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.60332 moveto 0.73953 0.60957 lineto stroke grestore [(3000)] 0.73953 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.60332 moveto 0.9781 0.60957 lineto stroke grestore [(4000)] 0.9781 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.60332 moveto 0.07152 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.60332 moveto 0.11924 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.60332 moveto 0.16695 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.60332 moveto 0.21467 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.60332 moveto 0.3101 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.60332 moveto 0.35781 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.60332 moveto 0.40553 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.60332 moveto 0.45324 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.60332 moveto 0.54867 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.60332 moveto 0.59638 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.60332 moveto 0.6441 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.60332 moveto 0.69181 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.60332 moveto 0.78724 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.60332 moveto 0.83496 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.60332 moveto 0.88267 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.60332 moveto 0.93038 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.10041 moveto 0.03006 0.10041 lineto stroke grestore [(-50)] 0.01131 0.10041 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.201 moveto 0.03006 0.201 lineto stroke grestore [(-40)] 0.01131 0.201 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.30158 moveto 0.03006 0.30158 lineto stroke grestore [(-30)] 0.01131 0.30158 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.40216 moveto 0.03006 0.40216 lineto stroke grestore [(-20)] 0.01131 0.40216 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.50274 moveto 0.03006 0.50274 lineto stroke grestore [(-10)] 0.01131 0.50274 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.01995 moveto 0.02756 0.01995 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04007 moveto 0.02756 0.04007 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06018 moveto 0.02756 0.06018 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.0803 moveto 0.02756 0.0803 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12053 moveto 0.02756 0.12053 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14065 moveto 0.02756 0.14065 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16076 moveto 0.02756 0.16076 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18088 moveto 0.02756 0.18088 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22111 moveto 0.02756 0.22111 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24123 moveto 0.02756 0.24123 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26134 moveto 0.02756 0.26134 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.28146 moveto 0.02756 0.28146 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32169 moveto 0.02756 0.32169 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34181 moveto 0.02756 0.34181 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36192 moveto 0.02756 0.36192 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38204 moveto 0.02756 0.38204 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42227 moveto 0.02756 0.42227 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44239 moveto 0.02756 0.44239 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.46251 moveto 0.02756 0.46251 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48262 moveto 0.02756 0.48262 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52285 moveto 0.02756 0.52285 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54297 moveto 0.02756 0.54297 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.56309 moveto 0.02756 0.56309 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.5832 moveto 0.02756 0.5832 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02405 0.01472 moveto 0.02529 0.01472 lineto 0.02653 0.01473 lineto 0.02777 0.01475 lineto 0.02901 0.01477 lineto 0.03025 0.01481 lineto 0.03149 0.01485 lineto 0.03273 0.01491 lineto 0.03397 0.01499 lineto 0.03521 0.01509 lineto 0.03645 0.01521 lineto 0.03893 0.01555 lineto 0.04017 0.01578 lineto 0.0414 0.01605 lineto 0.04388 0.01678 lineto 0.04636 0.01779 lineto 0.04884 0.01917 lineto 0.05132 0.02101 lineto 0.0538 0.02339 lineto 0.05876 0.03004 lineto 0.06372 0.03949 lineto 0.07364 0.06591 lineto 0.08356 0.09811 lineto 0.10339 0.16414 lineto 0.14307 0.28025 lineto 0.18274 0.3828 lineto 0.22241 0.48301 lineto 0.24225 0.5319 lineto 0.25217 0.554 lineto 0.26208 0.57262 lineto 0.26704 0.58016 lineto 0.272 0.58641 lineto 0.27696 0.59135 lineto 0.28192 0.59511 lineto 0.2844 0.59659 lineto 0.28688 0.59784 lineto 0.29184 0.59976 lineto 0.29432 0.60047 lineto 0.2968 0.60104 lineto 0.29928 0.60151 lineto 0.30176 0.60188 lineto 0.30424 0.60217 lineto 0.30672 0.6024 lineto 0.30919 0.60258 lineto 0.31167 0.60271 lineto 0.31415 0.60282 lineto 0.31663 0.60289 lineto 0.31911 0.60295 lineto 0.32159 0.60299 lineto 0.32407 0.60303 lineto Mistroke 0.32655 0.60305 lineto 0.32903 0.60307 lineto 0.33151 0.60308 lineto 0.33647 0.6031 lineto 0.34143 0.60311 lineto 0.36127 0.60318 lineto 0.37118 0.60322 lineto 0.3811 0.60326 lineto 0.38606 0.60328 lineto 0.39102 0.6033 lineto 0.3935 0.60331 lineto 0.39474 0.60331 lineto 0.39598 0.60332 lineto 0.39722 0.60332 lineto 0.39846 0.60332 lineto 0.3997 0.60332 lineto 0.40094 0.60332 lineto 0.40218 0.60332 lineto 0.40342 0.60331 lineto 0.40466 0.60331 lineto 0.4059 0.6033 lineto 0.40838 0.60329 lineto 0.40962 0.60328 lineto 0.41086 0.60326 lineto 0.41334 0.60323 lineto 0.41582 0.60318 lineto 0.41829 0.60313 lineto 0.42077 0.60305 lineto 0.42325 0.60296 lineto 0.42573 0.60284 lineto 0.43069 0.60254 lineto 0.43565 0.60212 lineto 0.44061 0.60156 lineto 0.44557 0.60081 lineto 0.45053 0.59986 lineto 0.45549 0.59867 lineto 0.46045 0.59721 lineto 0.47036 0.5934 lineto 0.48028 0.5883 lineto 0.50012 0.5744 lineto 0.53979 0.5375 lineto 0.57946 0.49904 lineto 0.61914 0.46411 lineto 0.65881 0.43313 lineto 0.69848 0.40547 lineto 0.73815 0.38043 lineto 0.77783 0.35746 lineto 0.8175 0.3363 lineto 0.85717 0.31706 lineto 0.89685 0.30058 lineto Mistroke 0.91668 0.29392 lineto 0.9266 0.29113 lineto 0.93652 0.28874 lineto 0.94644 0.2868 lineto 0.9514 0.28602 lineto 0.95635 0.28536 lineto 0.96131 0.28483 lineto 0.96379 0.28462 lineto 0.96627 0.28444 lineto 0.96875 0.28429 lineto 0.96999 0.28423 lineto 0.97123 0.28418 lineto 0.97247 0.28414 lineto 0.97371 0.2841 lineto 0.97495 0.28408 lineto 0.97619 0.28406 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData[ "PhaseResponse[\n\tStandardZTransform[LpToBp[ButterworthLp[3,3],\n\t\t\t\t\t\t\ \t\t1000,2000],\n\t\t\t\t\t\t1/8000.]//N,\n\t8000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238572 0.309383 0.00163734 [ [(1000)] 0.26238 0.30938 0 2 Msboxa [(2000)] 0.50095 0.30938 0 2 Msboxa [(3000)] 0.73953 0.30938 0 2 Msboxa [(4000)] 0.9781 0.30938 0 2 Msboxa [( f)] 1.025 0.30938 -1 0 Msboxa [(-150)] 0.01131 0.06378 1 0 Msboxa [(-100)] 0.01131 0.14565 1 0 Msboxa [(-50)] 0.01131 0.22752 1 0 Msboxa [(50)] 0.01131 0.39125 1 0 Msboxa [(100)] 0.01131 0.47312 1 0 Msboxa [(150)] 0.01131 0.55498 1 0 Msboxa [(Phase \\(Degrees\\))] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.30938 moveto 0.26238 0.31563 lineto stroke grestore [(1000)] 0.26238 0.30938 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.30938 moveto 0.50095 0.31563 lineto stroke grestore [(2000)] 0.50095 0.30938 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.30938 moveto 0.73953 0.31563 lineto stroke grestore [(3000)] 0.73953 0.30938 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.30938 moveto 0.9781 0.31563 lineto stroke grestore [(4000)] 0.9781 0.30938 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.30938 moveto 0.07152 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.30938 moveto 0.11924 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.30938 moveto 0.16695 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.30938 moveto 0.21467 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.30938 moveto 0.3101 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.30938 moveto 0.35781 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.30938 moveto 0.40553 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.30938 moveto 0.45324 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.30938 moveto 0.54867 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.30938 moveto 0.59638 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.30938 moveto 0.6441 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.30938 moveto 0.69181 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.30938 moveto 0.78724 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.30938 moveto 0.83496 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.30938 moveto 0.88267 0.31313 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.30938 moveto 0.93038 0.31313 lineto stroke grestore [( f)] 1.025 0.30938 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.30938 moveto 1 0.30938 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.06378 moveto 0.03006 0.06378 lineto stroke grestore [(-150)] 0.01131 0.06378 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.14565 moveto 0.03006 0.14565 lineto stroke grestore [(-100)] 0.01131 0.14565 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.22752 moveto 0.03006 0.22752 lineto stroke grestore [(-50)] 0.01131 0.22752 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.39125 moveto 0.03006 0.39125 lineto stroke grestore [(50)] 0.01131 0.39125 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.47312 moveto 0.03006 0.47312 lineto stroke grestore [(100)] 0.01131 0.47312 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.55498 moveto 0.03006 0.55498 lineto stroke grestore [(150)] 0.01131 0.55498 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.08016 moveto 0.02756 0.08016 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09653 moveto 0.02756 0.09653 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1129 moveto 0.02756 0.1129 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12928 moveto 0.02756 0.12928 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16202 moveto 0.02756 0.16202 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1784 moveto 0.02756 0.1784 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19477 moveto 0.02756 0.19477 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21114 moveto 0.02756 0.21114 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24389 moveto 0.02756 0.24389 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26026 moveto 0.02756 0.26026 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27664 moveto 0.02756 0.27664 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29301 moveto 0.02756 0.29301 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32576 moveto 0.02756 0.32576 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34213 moveto 0.02756 0.34213 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3585 moveto 0.02756 0.3585 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37488 moveto 0.02756 0.37488 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40762 moveto 0.02756 0.40762 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.424 moveto 0.02756 0.424 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.44037 moveto 0.02756 0.44037 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45674 moveto 0.02756 0.45674 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48949 moveto 0.02756 0.48949 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50586 moveto 0.02756 0.50586 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52224 moveto 0.02756 0.52224 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53861 moveto 0.02756 0.53861 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04741 moveto 0.02756 0.04741 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.03104 moveto 0.02756 0.03104 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01466 moveto 0.02756 0.01466 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57136 moveto 0.02756 0.57136 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58773 moveto 0.02756 0.58773 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.6041 moveto 0.02756 0.6041 lineto stroke grestore [(Phase \\(Degrees\\))] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02405 0.0148 moveto 0.06372 0.07144 lineto 0.06868 0.08218 lineto 0.07364 0.09159 lineto 0.0786 0.09927 lineto 0.08356 0.10519 lineto 0.08604 0.10754 lineto 0.08852 0.10952 lineto 0.091 0.11116 lineto 0.09348 0.1125 lineto 0.09595 0.11356 lineto 0.09843 0.11437 lineto 0.09967 0.1147 lineto 0.10091 0.11496 lineto 0.10215 0.11518 lineto 0.10339 0.11535 lineto 0.10463 0.11548 lineto 0.10587 0.11557 lineto 0.10711 0.11561 lineto 0.10835 0.11562 lineto 0.10959 0.11559 lineto 0.11083 0.11552 lineto 0.11331 0.1153 lineto 0.11455 0.11514 lineto 0.11579 0.11495 lineto 0.11827 0.1145 lineto 0.12323 0.1133 lineto 0.13315 0.10994 lineto 0.14307 0.10552 lineto 0.1629 0.09399 lineto 0.18274 0.07886 lineto 0.20257 0.05907 lineto 0.21249 0.04675 lineto 0.22241 0.03224 lineto 0.22737 0.02399 lineto 0.22985 0.01958 lineto 0.23109 0.0173 lineto 0.23233 0.01497 lineto 0.23357 0.60203 lineto 0.23481 0.59959 lineto 0.23729 0.59454 lineto 0.24225 0.58376 lineto 0.26208 0.53142 lineto 0.28192 0.47186 lineto 0.30176 0.41952 lineto 0.34143 0.34141 lineto 0.3811 0.27853 lineto 0.42077 0.21873 lineto 0.46045 0.15436 lineto 0.50012 0.08995 lineto Mistroke 0.53979 0.04125 lineto 0.54971 0.03202 lineto 0.55963 0.02378 lineto 0.56459 0.02 lineto 0.56955 0.01643 lineto 0.57079 0.01556 lineto 0.57203 0.01472 lineto 0.57327 0.60332 lineto 0.57451 0.60249 lineto 0.57698 0.60087 lineto 0.57946 0.5993 lineto 0.5993 0.58814 lineto 0.61914 0.57913 lineto 0.63897 0.57181 lineto 0.65881 0.56586 lineto 0.67865 0.56106 lineto 0.69848 0.55726 lineto 0.71832 0.55436 lineto 0.72824 0.55322 lineto 0.73815 0.55229 lineto 0.74807 0.55156 lineto 0.75799 0.55103 lineto 0.76295 0.55085 lineto 0.76543 0.55077 lineto 0.76791 0.55071 lineto 0.77039 0.55066 lineto 0.77287 0.55063 lineto 0.77411 0.55061 lineto 0.77535 0.55061 lineto 0.77659 0.5506 lineto 0.77783 0.5506 lineto 0.77907 0.5506 lineto 0.78031 0.5506 lineto 0.78155 0.55061 lineto 0.78279 0.55062 lineto 0.78527 0.55065 lineto 0.78651 0.55067 lineto 0.78775 0.5507 lineto 0.7927 0.55083 lineto 0.79518 0.55091 lineto 0.79766 0.55101 lineto 0.80758 0.55156 lineto 0.81254 0.55192 lineto 0.8175 0.55234 lineto 0.83734 0.55466 lineto 0.84725 0.55622 lineto 0.85717 0.55806 lineto 0.87701 0.56265 lineto 0.89685 0.56851 lineto 0.93652 0.58399 lineto Mistroke 0.97619 0.60314 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[ "The bilinear z-transform is an alternative to the impulse invariant, or \ standard-z, transform. The impulse-invariant technique endeavors to match the \ impulse response of the original analog filter. But there is no guarantee \ that the impulse response is bandlimited. In fact, there is usually \ significant energy above the Nyquist frequency which aliases and corrupts the \ frequency response. Thus the impulse response will be \ \[OpenCurlyDoubleQuote]correct\[CloseCurlyDoubleQuote] but the frequency \ response is wrong."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ " The bilinear transform applies a conformal mapping to the original \ Laplace transform. This conformal mapping compresses the entire j", Evaluatable->False, AspectRatioFixed->True], StyleBox["\[Omega]", Evaluatable->False, AspectRatioFixed->True], StyleBox[" axis into the region between DC and F", Evaluatable->False, AspectRatioFixed->True], StyleBox["s", Evaluatable->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ ", thus it is necessary to adjust the design parameters of the original \ continuous filter design so that the transformed poles will be at the proper \ location. The filter design process is more complicated but the frequeny \ domain results are more accurate.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "The bilinear z-transform changes a continuous domain filter into the \ z-domain by using the transformation"], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[OutputFormData["\<\ s -> 2/T (1-z^-1)/(1+z^-1)\ \>", "\<\ -1 2 1 - z s -> - ------- T -1 1 + z\ \>"], "Input", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[{ StyleBox[ "The following function warps frequencies in the continuous domain into the \ bilinear-z domain. Note that the bilinear transform maps frequencies in the \ sampled filter between 0 and the Nyquist rate into the entire frequency range \ from 0 to infinity. When designing filters that are to be transformed using \ the bilinear transform, it is necessary to first warp the corner frequencies \ using this transformation and then design the continuous filter. The ", Evaluatable->False, AspectRatioFixed->False], StyleBox["BinlinearPreWarp", Evaluatable->False, AspectRatioFixed->False, FontWeight->"Bold"], StyleBox[ " is a function of the desired frequency in the digital domain and the \ sampling interval of the digitial filter.", Evaluatable->False, AspectRatioFixed->False] }], "Text", Evaluatable->False, AspectRatioFixed->False], Cell[TextData[ "BilinearPreWarp[f_,fs_] :=\n\tfs / Pi Tan [ Pi f/fs ]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"BilinearPreWarp"], Cell[CellGroupData[{ Cell[TextData["Plot[BilinearPreWarp[f,8000],{f,0,3000}];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00031746 0.0147151 9.57431e-05 [ [(500)] 0.18254 0.01472 0 2 Msboxa [(1000)] 0.34127 0.01472 0 2 Msboxa [(1500)] 0.5 0.01472 0 2 Msboxa [(2000)] 0.65873 0.01472 0 2 Msboxa [(2500)] 0.81746 0.01472 0 2 Msboxa [(3000)] 0.97619 0.01472 0 2 Msboxa [(1000)] 0.01131 0.11046 1 0 Msboxa [(2000)] 0.01131 0.2062 1 0 Msboxa [(3000)] 0.01131 0.30194 1 0 Msboxa [(4000)] 0.01131 0.39769 1 0 Msboxa [(5000)] 0.01131 0.49343 1 0 Msboxa [(6000)] 0.01131 0.58917 1 0 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.18254 0.01472 moveto 0.18254 0.02097 lineto stroke grestore [(500)] 0.18254 0.01472 0 2 Mshowa gsave 0.002 setlinewidth 0.34127 0.01472 moveto 0.34127 0.02097 lineto stroke grestore [(1000)] 0.34127 0.01472 0 2 Mshowa gsave 0.002 setlinewidth 0.5 0.01472 moveto 0.5 0.02097 lineto stroke grestore [(1500)] 0.5 0.01472 0 2 Mshowa gsave 0.002 setlinewidth 0.65873 0.01472 moveto 0.65873 0.02097 lineto stroke grestore [(2000)] 0.65873 0.01472 0 2 Mshowa gsave 0.002 setlinewidth 0.81746 0.01472 moveto 0.81746 0.02097 lineto stroke grestore [(2500)] 0.81746 0.01472 0 2 Mshowa gsave 0.002 setlinewidth 0.97619 0.01472 moveto 0.97619 0.02097 lineto stroke grestore [(3000)] 0.97619 0.01472 0 2 Mshowa gsave 0.001 setlinewidth 0.05556 0.01472 moveto 0.05556 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.0873 0.01472 moveto 0.0873 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.11905 0.01472 moveto 0.11905 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.15079 0.01472 moveto 0.15079 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.21429 0.01472 moveto 0.21429 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.24603 0.01472 moveto 0.24603 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.27778 0.01472 moveto 0.27778 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.30952 0.01472 moveto 0.30952 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.37302 0.01472 moveto 0.37302 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.40476 0.01472 moveto 0.40476 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.43651 0.01472 moveto 0.43651 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.46825 0.01472 moveto 0.46825 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.53175 0.01472 moveto 0.53175 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.56349 0.01472 moveto 0.56349 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.59524 0.01472 moveto 0.59524 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.62698 0.01472 moveto 0.62698 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.69048 0.01472 moveto 0.69048 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.72222 0.01472 moveto 0.72222 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.75397 0.01472 moveto 0.75397 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.78571 0.01472 moveto 0.78571 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.84921 0.01472 moveto 0.84921 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.88095 0.01472 moveto 0.88095 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.9127 0.01472 moveto 0.9127 0.01847 lineto stroke grestore gsave 0.001 setlinewidth 0.94444 0.01472 moveto 0.94444 0.01847 lineto stroke grestore gsave 0.002 setlinewidth 0 0.01472 moveto 1 0.01472 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.11046 moveto 0.03006 0.11046 lineto stroke grestore [(1000)] 0.01131 0.11046 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.2062 moveto 0.03006 0.2062 lineto stroke grestore [(2000)] 0.01131 0.2062 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.30194 moveto 0.03006 0.30194 lineto stroke grestore [(3000)] 0.01131 0.30194 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.39769 moveto 0.03006 0.39769 lineto stroke grestore [(4000)] 0.01131 0.39769 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.49343 moveto 0.03006 0.49343 lineto stroke grestore [(5000)] 0.01131 0.49343 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.58917 moveto 0.03006 0.58917 lineto stroke grestore [(6000)] 0.01131 0.58917 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.03386 moveto 0.02756 0.03386 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05301 moveto 0.02756 0.05301 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.07216 moveto 0.02756 0.07216 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09131 moveto 0.02756 0.09131 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12961 moveto 0.02756 0.12961 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.14876 moveto 0.02756 0.14876 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.1679 moveto 0.02756 0.1679 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18705 moveto 0.02756 0.18705 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.22535 moveto 0.02756 0.22535 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2445 moveto 0.02756 0.2445 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26365 moveto 0.02756 0.26365 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2828 moveto 0.02756 0.2828 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32109 moveto 0.02756 0.32109 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.34024 moveto 0.02756 0.34024 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35939 moveto 0.02756 0.35939 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37854 moveto 0.02756 0.37854 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.41684 moveto 0.02756 0.41684 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43598 moveto 0.02756 0.43598 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45513 moveto 0.02756 0.45513 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.47428 moveto 0.02756 0.47428 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51258 moveto 0.02756 0.51258 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53173 moveto 0.02756 0.53173 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.55088 moveto 0.02756 0.55088 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57002 moveto 0.02756 0.57002 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.60832 moveto 0.02756 0.60832 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02381 0.01472 moveto 0.06349 0.02669 lineto 0.10317 0.03873 lineto 0.14286 0.05088 lineto 0.18254 0.06321 lineto 0.22222 0.07579 lineto 0.2619 0.08867 lineto 0.30159 0.10195 lineto 0.34127 0.1157 lineto 0.38095 0.13003 lineto 0.42063 0.14503 lineto 0.46032 0.16085 lineto 0.5 0.17762 lineto 0.53968 0.19554 lineto 0.57937 0.2148 lineto 0.61905 0.23569 lineto 0.65873 0.25852 lineto 0.69841 0.28372 lineto 0.7381 0.3118 lineto 0.77778 0.34345 lineto 0.81746 0.3796 lineto 0.85714 0.42148 lineto 0.89683 0.47085 lineto 0.93651 0.5302 lineto 0.97619 0.60332 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["ButterworthLp[3,3]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {1.002377293007600598 + 0.*I, {}, {-0.5003959019418343146 + 0.8667111260625108591*I, -1.00079180388366863, -0.5003959019418343146 - 0.8667111260625108591*I}}\ \>", "\<\ {1.00238 + 0. I, {}, {-0.500396 + 0.866711 I, -1.00079, -0.500396 - 0.866711 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "The following 3rd order filter will be used as an example for the rest of \ the bilinear-z transform functions. A third order polynomial is first \ transformed into a bandpass filter, but the passband frequencies have been \ prewarped."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData[ "ASampleGZP = LpToBp[ButterworthLp[3,3],\n\t\t\t\t\t\ BilinearPreWarp[1000,8000],\n\t\t\t\t\tBilinearPreWarp[2000,8000]]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ {8.252947937096188005*10^11 + 0.*I, {0, 0, 0}, {-1467.471906274825706 - 6792.222623029561657*I, -3222.53021855092106 + 14915.5445908337468*I, -4690.00212482574677 + 9167.472499911974805*I, -4690.00212482574677 - 9167.472499911974805*I, -1467.471906274825706 + 6792.222623029561657*I, -3222.53021855092106 - 14915.5445908337468*I}}\ \>", "\<\ 11 {8.25295 10 + 0. I, {0, 0, 0}, {-1467.47 - 6792.22 I, -3222.53 + 14915.5 I, -4690. + 9167.47 I, -4690. - 9167.47 I, -1467.47 + 6792.22 I, -3222.53 - 14915.5 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[ "Note, the passband is not between 1000 and 2000Hz in the resulting filter."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData[ "ContinuousFreqResponse[FilterFromGZP[ASampleGZP],8000];"], "Input", AspectRatioFixed->True], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00023564 0.603319 0.00763827 [ [(1000)] 0.25945 0.60332 0 2 Msboxa [(2000)] 0.49509 0.60332 0 2 Msboxa [(3000)] 0.73073 0.60332 0 2 Msboxa [(4000)] 0.96637 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-60)] 0.01131 0.14502 1 0 Msboxa [(-40)] 0.01131 0.29779 1 0 Msboxa [(-20)] 0.01131 0.45055 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.25945 0.60332 moveto 0.25945 0.60957 lineto stroke grestore [(1000)] 0.25945 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.49509 0.60332 moveto 0.49509 0.60957 lineto stroke grestore [(2000)] 0.49509 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.73073 0.60332 moveto 0.73073 0.60957 lineto stroke grestore [(3000)] 0.73073 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.96637 0.60332 moveto 0.96637 0.60957 lineto stroke grestore [(4000)] 0.96637 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07094 0.60332 moveto 0.07094 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11807 0.60332 moveto 0.11807 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16519 0.60332 moveto 0.16519 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21232 0.60332 moveto 0.21232 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.30658 0.60332 moveto 0.30658 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35371 0.60332 moveto 0.35371 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40083 0.60332 moveto 0.40083 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.44796 0.60332 moveto 0.44796 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54222 0.60332 moveto 0.54222 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.58935 0.60332 moveto 0.58935 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.63647 0.60332 moveto 0.63647 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.6836 0.60332 moveto 0.6836 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.77786 0.60332 moveto 0.77786 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.82499 0.60332 moveto 0.82499 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.87211 0.60332 moveto 0.87211 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.91924 0.60332 moveto 0.91924 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.14502 moveto 0.03006 0.14502 lineto stroke grestore [(-60)] 0.01131 0.14502 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.29779 moveto 0.03006 0.29779 lineto stroke grestore [(-40)] 0.01131 0.29779 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.45055 moveto 0.03006 0.45055 lineto stroke grestore [(-20)] 0.01131 0.45055 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.17558 moveto 0.02756 0.17558 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.20613 moveto 0.02756 0.20613 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.23668 moveto 0.02756 0.23668 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.26724 moveto 0.02756 0.26724 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32834 moveto 0.02756 0.32834 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35889 moveto 0.02756 0.35889 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.38945 moveto 0.02756 0.38945 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42 moveto 0.02756 0.42 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48111 moveto 0.02756 0.48111 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51166 moveto 0.02756 0.51166 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54221 moveto 0.02756 0.54221 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57277 moveto 0.02756 0.57277 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.11447 moveto 0.02756 0.11447 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.08392 moveto 0.02756 0.08392 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.05336 moveto 0.02756 0.05336 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.02281 moveto 0.02756 0.02281 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth stroke stroke stroke stroke stroke stroke stroke 0.04429 0 moveto 0.04836 0.03707 lineto stroke 0.04836 0.03707 moveto 0.05327 0.07371 lineto 0.06309 0.13187 lineto 0.08272 0.21519 lineto 0.10236 0.27617 lineto 0.14163 0.36788 lineto 0.18091 0.44147 lineto 0.22018 0.50776 lineto 0.23982 0.53868 lineto 0.25945 0.56606 lineto 0.26927 0.57731 lineto 0.27909 0.58633 lineto 0.284 0.58995 lineto 0.28891 0.59298 lineto 0.29382 0.59546 lineto 0.29873 0.59744 lineto 0.30363 0.599 lineto 0.30854 0.6002 lineto 0.31345 0.60111 lineto 0.31836 0.60178 lineto 0.32327 0.60226 lineto 0.32573 0.60245 lineto 0.32818 0.60261 lineto 0.33309 0.60285 lineto 0.33554 0.60295 lineto 0.338 0.60302 lineto 0.34045 0.60308 lineto 0.34291 0.60313 lineto 0.34536 0.60317 lineto 0.34782 0.60321 lineto 0.35027 0.60323 lineto 0.35273 0.60325 lineto 0.35518 0.60327 lineto 0.35764 0.60328 lineto 0.36009 0.60329 lineto 0.36254 0.6033 lineto 0.365 0.60331 lineto 0.36745 0.60331 lineto 0.36991 0.60331 lineto 0.37236 0.60331 lineto 0.37482 0.60332 lineto 0.37727 0.60332 lineto 0.37973 0.60332 lineto 0.38218 0.60332 lineto 0.38464 0.60332 lineto 0.38709 0.60332 lineto 0.38954 0.60332 lineto 0.392 0.60332 lineto 0.39445 0.60332 lineto 0.39691 0.60332 lineto Mistroke 0.39936 0.60332 lineto 0.40182 0.60332 lineto 0.40427 0.60332 lineto 0.40673 0.60332 lineto 0.40918 0.60332 lineto 0.41164 0.60332 lineto 0.41409 0.60332 lineto 0.41655 0.60332 lineto 0.419 0.60332 lineto 0.42145 0.60332 lineto 0.42391 0.60332 lineto 0.42636 0.60332 lineto 0.42882 0.60332 lineto 0.43127 0.60332 lineto 0.43373 0.60332 lineto 0.43618 0.60332 lineto 0.43864 0.60332 lineto 0.44109 0.60332 lineto 0.44355 0.60332 lineto 0.446 0.60332 lineto 0.44845 0.60332 lineto 0.45091 0.60331 lineto 0.45336 0.60331 lineto 0.45582 0.60331 lineto 0.46073 0.60331 lineto 0.46318 0.6033 lineto 0.46564 0.6033 lineto 0.46809 0.60329 lineto 0.47055 0.60328 lineto 0.47546 0.60326 lineto 0.48036 0.60323 lineto 0.48527 0.6032 lineto 0.49018 0.60315 lineto 0.49509 0.60308 lineto 0.5 0.60299 lineto 0.50491 0.60288 lineto 0.51473 0.60258 lineto 0.51964 0.60237 lineto 0.52455 0.60212 lineto 0.53437 0.60147 lineto 0.54418 0.60058 lineto 0.554 0.5994 lineto 0.56382 0.59789 lineto 0.57364 0.59601 lineto 0.59328 0.59107 lineto 0.61291 0.5846 lineto 0.65219 0.56816 lineto 0.73073 0.53098 lineto 0.80928 0.49714 lineto 0.88783 0.46826 lineto Mistroke 0.96637 0.44346 lineto Mfstroke 1 0.43419 moveto 0.96637 0.44346 lineto stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{34, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[TextData[{ StyleBox["BilinearExpand", Evaluatable->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " is a helper function for the BilinearZTransform function which does the \ real work.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "BilinearExpand[root_,T_] :=\n\t(2/T + root)/(2/T - root)"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"BilinearExpand"], Cell[TextData[ "BilinearZTransform[{gain_,zeros_,poles_},T_] :=\n\t\ Block[{RootDiff,ExtraZeros,ExtraPoles},\n\t\tRootDiff = Length[zeros] - \ Length[poles];\n\t\tIf [RootDiff > 0,\n\t\t\t\tExtraPoles = \ Table[-1,{RootDiff}];\n\t\t\t\tExtraZeros = {},\n\t\t\tExtraZeros = \ Table[-1,{-RootDiff}];\n\t\t\tExtraPoles = {}];\n\t\t{gain * \ Apply[Times,Map[(2/T-#)&,zeros]] /\n\t\t\t\tApply[Times,Map[(2/T-#)&,poles]],\ \n\t\t Join[Map[BilinearExpand[#,T]&,zeros],ExtraZeros],\n\t\t \ Join[Map[BilinearExpand[#,T]&,poles],ExtraPoles]}]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"BilinearZTransform"], Cell[TextData[ "We can now apply the bilinear-z transform to the filter derived above."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData[ "aBilinearGZP = BilinearZTransform[ASampleGZP,1/8000]//N"], "Input", AspectRatioFixed->False], Cell[OutputFormData[ "\<\ {0.03174530680048529588 + 1.250402716477814018*10^-21*I, {1., 1., 1., -1., -1., -1.}, {0.5913568488403938289 - 0.6187987619504287307*I, 0.03909230418185687787 + 0.8062740659426584263*I, 0.2928253085283184579 + 0.5728341829845699902*I, 0.2928253085283184579 - 0.5728341829845699902*I, 0.5913568488403938289 + 0.6187987619504287307*I, 0.03909230418185687787 - 0.8062740659426584263*I}}\ \>", "\<\ -21 {0.0317453 + 1.2504 10 I, {1., 1., 1., -1., -1., -1.}, {0.591357 - 0.618799 I, 0.0390923 + 0.806274 I, 0.292825 + 0.572834 I, 0.292825 - 0.572834 I, 0.591357 + 0.618799 I, 0.0390923 - 0.806274 I}}\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[TextData[{ StyleBox["Finally, the ", Evaluatable->False, AspectRatioFixed->True], StyleBox["SOSFromBilinearGZP", Evaluatable->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " function is used to transform the GZP result of the bilinear-z transform \ into second-order sections. This is done by grabbing pairs of poles or zeros, \ preferably in complex-conjugate pairs, and creating a second-order \ biquadractic section from them. The ", Evaluatable->False, AspectRatioFixed->True], StyleBox["DropPair", Evaluatable->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" and ", Evaluatable->False, AspectRatioFixed->True], StyleBox["GrabPair", Evaluatable->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" functions are used to pick out pairs of roots from a list.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "GrabPair[rootlist_] :=\n\tIf [ Length[First[rootlist]] == 2,\n\t\t\t\ First[rootlist],\n\t\tJoin[First[rootlist],\n\t\t\t\tIf[Length[rootlist] > 1,\ \n\t\t\t\t\tFirst[Rest[rootlist]],\n\t\t\t\t\t{0}]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"GrabPair"], Cell[TextData[ "DropPair[rootlist_] :=\n\tIf [ Length[First[rootlist]] == 2,\n\t\t\t\ Rest[rootlist],\n\t\tRest[Rest[rootlist]]]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"DropPair"], Cell[TextData[ "SosFromBilinearGZP[{gain_,zeros_,poles_}] :=\n\tBlock[{pg,zg,pp,zp,filt},\n\t\ \tfilt = gain;\n\t\tpg = Sort[GroupRoots[poles],Length[#1]>Length[#2]&];\n\t\t\ zg = Sort[GroupRoots[zeros],Length[#1]>Length[#2]&];\n\t\tWhile[Length[pg] > \ 0,\n\t\t\tpp = GrabPair[pg];\n\t\t\tpg = DropPair[pg];\n\t\t\tzp = \ GrabPair[zg];\n\t\t\tzg = DropPair[zg];\n\t\t\tfilt = filt (z^-2 - \ Re[First[zp]+Last[zp]]z^-1 + \n\t\t\t\t\t\t\t\tRe[First[zp]Last[zp]])/\n\t\t\t\ \t\t\t(z^-2 - Re[First[pp]+Last[pp]]z^-1 + \n\t\t\t\t\t\t\t\t\ Re[First[pp]Last[pp]]);\n\t\t\t];\n\t\tChop[filt]\n\t\t]"], "Input", InitializationCell->True, AspectRatioFixed->False, CellTags->"SosFromBilinearGZP"], Cell[TextData[ "The following shows the resulting biquadratic realization of the original \ 1000-2000Hz continuous bandpass filter. We can plot the frequency response \ to verify that the result is correct. Note, now the filter has the proper \ passband."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData["theSOSFilter = SosFromBilinearGZP[aBilinearGZP]"], "Input", AspectRatioFixed->False], Cell[OutputFormData["\<\ (0.03174530680048529588*(-1. + z^(-2))* (1. + z^(-2) - 2./z)*(1. + z^(-2) + 2./z))/ ((0.7326148304618237601 + z^(-2) - 1.182713697680787658/z)* (0.4138856625103047095 + z^(-2) - 0.5856506170566369157/z)* (0.6516060776579531331 + z^(-2) - 0.07818460836371375573/z))\ \>", "\<\ -2 -2 (0.0317453 (-1. + z ) (1. + z - 2./z) -2 (1. + z + 2./z))/ -2 ((0.732615 + z - 1.18271/z) -2 (0.413886 + z - 0.585651/z) -2 (0.651606 + z - 0.0781846/z))\ \>"], "Output", Evaluatable->False, AspectRatioFixed->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FreqResponse[theSOSFilter,8000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238572 0.603319 0.00301377 [ [(1000)] 0.26238 0.60332 0 2 Msboxa [(2000)] 0.50095 0.60332 0 2 Msboxa [(3000)] 0.73953 0.60332 0 2 Msboxa [(4000)] 0.9781 0.60332 0 2 Msboxa [( Hz)] 1.025 0.60332 -1 0 Msboxa [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotsboxa [(-200)] 0.01131 0.00057 1 0 Msboxa [(-150)] 0.01131 0.15125 1 0 Msboxa [(-100)] 0.01131 0.30194 1 0 Msboxa [(-50)] 0.01131 0.45263 1 0 Msboxa [(dB)] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.60332 moveto 0.26238 0.60957 lineto stroke grestore [(1000)] 0.26238 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.60332 moveto 0.50095 0.60957 lineto stroke grestore [(2000)] 0.50095 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.60332 moveto 0.73953 0.60957 lineto stroke grestore [(3000)] 0.73953 0.60332 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.60332 moveto 0.9781 0.60957 lineto stroke grestore [(4000)] 0.9781 0.60332 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.60332 moveto 0.07152 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.60332 moveto 0.11924 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.60332 moveto 0.16695 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.60332 moveto 0.21467 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.60332 moveto 0.3101 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.60332 moveto 0.35781 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.60332 moveto 0.40553 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.60332 moveto 0.45324 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.60332 moveto 0.54867 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.60332 moveto 0.59638 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.60332 moveto 0.6441 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.60332 moveto 0.69181 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.60332 moveto 0.78724 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.60332 moveto 0.83496 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.60332 moveto 0.88267 0.60707 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.60332 moveto 0.93038 0.60707 lineto stroke grestore [( Hz)] 1.025 0.60332 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.60332 moveto 1 0.60332 lineto stroke grestore [(Response)] 0.5 0.61803 0 -2 0 0 1 Mouter Mrotshowa gsave 0.002 setlinewidth 0.02381 0.00057 moveto 0.03006 0.00057 lineto stroke grestore [(-200)] 0.01131 0.00057 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.15125 moveto 0.03006 0.15125 lineto stroke grestore [(-150)] 0.01131 0.15125 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.30194 moveto 0.03006 0.30194 lineto stroke grestore [(-100)] 0.01131 0.30194 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.45263 moveto 0.03006 0.45263 lineto stroke grestore [(-50)] 0.01131 0.45263 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.0307 moveto 0.02756 0.0307 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.06084 moveto 0.02756 0.06084 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09098 moveto 0.02756 0.09098 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12112 moveto 0.02756 0.12112 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.18139 moveto 0.02756 0.18139 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.21153 moveto 0.02756 0.21153 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24167 moveto 0.02756 0.24167 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2718 moveto 0.02756 0.2718 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.33208 moveto 0.02756 0.33208 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.36222 moveto 0.02756 0.36222 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.39236 moveto 0.02756 0.39236 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42249 moveto 0.02756 0.42249 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48277 moveto 0.02756 0.48277 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.51291 moveto 0.02756 0.51291 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.54304 moveto 0.02756 0.54304 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57318 moveto 0.02756 0.57318 lineto stroke grestore [(dB)] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02405 0.01472 moveto 0.02529 0.15796 lineto 0.02653 0.20579 lineto 0.02777 0.2353 lineto 0.02901 0.25671 lineto 0.03149 0.28736 lineto 0.03397 0.30937 lineto 0.03893 0.34066 lineto 0.04388 0.36305 lineto 0.0538 0.39487 lineto 0.06372 0.41772 lineto 0.08356 0.45058 lineto 0.10339 0.47479 lineto 0.14307 0.51163 lineto 0.18274 0.54192 lineto 0.22241 0.57012 lineto 0.24225 0.58332 lineto 0.25217 0.58919 lineto 0.26208 0.59415 lineto 0.26704 0.59619 lineto 0.272 0.59793 lineto 0.27696 0.59935 lineto 0.28192 0.60047 lineto 0.28688 0.60133 lineto 0.29184 0.60197 lineto 0.29432 0.60222 lineto 0.2968 0.60243 lineto 0.29928 0.6026 lineto 0.30176 0.60275 lineto 0.30672 0.60297 lineto 0.30919 0.60305 lineto 0.31167 0.60311 lineto 0.31415 0.60316 lineto 0.31663 0.6032 lineto 0.31911 0.60323 lineto 0.32159 0.60325 lineto 0.32407 0.60327 lineto 0.32655 0.60329 lineto 0.32903 0.6033 lineto 0.33151 0.6033 lineto 0.33275 0.60331 lineto 0.33399 0.60331 lineto 0.33647 0.60331 lineto 0.33771 0.60331 lineto 0.33895 0.60331 lineto 0.34019 0.60332 lineto 0.34143 0.60332 lineto 0.34267 0.60332 lineto 0.34391 0.60332 lineto 0.34515 0.60332 lineto Mistroke 0.34639 0.60332 lineto 0.34763 0.60332 lineto 0.34887 0.60332 lineto 0.35011 0.60332 lineto 0.35135 0.60332 lineto 0.35259 0.60332 lineto 0.35383 0.60332 lineto 0.35507 0.60332 lineto 0.35631 0.60332 lineto 0.35755 0.60332 lineto 0.35879 0.60332 lineto 0.36003 0.60332 lineto 0.36127 0.60332 lineto 0.3625 0.60332 lineto 0.36374 0.60332 lineto 0.36498 0.60332 lineto 0.36622 0.60332 lineto 0.36746 0.60332 lineto 0.3687 0.60332 lineto 0.36994 0.60332 lineto 0.37118 0.60332 lineto 0.37242 0.60332 lineto 0.37366 0.60332 lineto 0.3749 0.60332 lineto 0.37614 0.60332 lineto 0.37738 0.60332 lineto 0.37862 0.60332 lineto 0.37986 0.60332 lineto 0.3811 0.60332 lineto 0.38234 0.60332 lineto 0.38358 0.60332 lineto 0.38482 0.60332 lineto 0.38606 0.60332 lineto 0.3873 0.60332 lineto 0.38854 0.60332 lineto 0.38978 0.60332 lineto 0.39102 0.60332 lineto 0.39226 0.60332 lineto 0.3935 0.60332 lineto 0.39474 0.60332 lineto 0.39598 0.60332 lineto 0.39722 0.60332 lineto 0.39846 0.60332 lineto 0.40094 0.60332 lineto 0.40218 0.60332 lineto 0.40342 0.60332 lineto 0.4059 0.60331 lineto 0.40838 0.60331 lineto 0.41086 0.60331 lineto 0.41334 0.6033 lineto Mistroke 0.41582 0.6033 lineto 0.41829 0.60329 lineto 0.42077 0.60328 lineto 0.42325 0.60326 lineto 0.42573 0.60325 lineto 0.43069 0.6032 lineto 0.43317 0.60317 lineto 0.43565 0.60313 lineto 0.44061 0.60302 lineto 0.44557 0.60287 lineto 0.45053 0.60267 lineto 0.45549 0.60239 lineto 0.46045 0.60204 lineto 0.46541 0.60158 lineto 0.47036 0.601 lineto 0.48028 0.59945 lineto 0.4902 0.59729 lineto 0.50012 0.59454 lineto 0.53979 0.57937 lineto 0.57946 0.5624 lineto 0.61914 0.54606 lineto 0.65881 0.53033 lineto 0.69848 0.5147 lineto 0.73815 0.49853 lineto 0.77783 0.48106 lineto 0.8175 0.46118 lineto 0.85717 0.437 lineto 0.87701 0.4222 lineto 0.89685 0.40445 lineto 0.91668 0.38202 lineto 0.9266 0.368 lineto 0.93652 0.35106 lineto 0.94644 0.32954 lineto 0.9514 0.31612 lineto 0.95635 0.29995 lineto 0.96131 0.27959 lineto 0.96379 0.26702 lineto 0.96627 0.25207 lineto 0.96875 0.23358 lineto 0.96999 0.2224 lineto 0.97123 0.20937 lineto 0.97247 0.19373 lineto 0.97371 0.17419 lineto 0.97495 0.14811 lineto 0.97619 0.1088 lineto Mfstroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]], Cell[CellGroupData[{ Cell[TextData["PhaseResponse[theSOSFilter,8000];"], "Input", AspectRatioFixed->False], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.000238572 0.308427 0.00163874 [ [(1000)] 0.26238 0.30843 0 2 Msboxa [(2000)] 0.50095 0.30843 0 2 Msboxa [(3000)] 0.73953 0.30843 0 2 Msboxa [(4000)] 0.9781 0.30843 0 2 Msboxa [( f)] 1.025 0.30843 -1 0 Msboxa [(-150)] 0.01131 0.06262 1 0 Msboxa [(-100)] 0.01131 0.14455 1 0 Msboxa [(-50)] 0.01131 0.22649 1 0 Msboxa [(50)] 0.01131 0.39036 1 0 Msboxa [(100)] 0.01131 0.4723 1 0 Msboxa [(150)] 0.01131 0.55424 1 0 Msboxa [(Phase \\(Degrees\\))] 0.02381 0.61803 0 -4 Msboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0.002 setlinewidth 0.26238 0.30843 moveto 0.26238 0.31468 lineto stroke grestore [(1000)] 0.26238 0.30843 0 2 Mshowa gsave 0.002 setlinewidth 0.50095 0.30843 moveto 0.50095 0.31468 lineto stroke grestore [(2000)] 0.50095 0.30843 0 2 Mshowa gsave 0.002 setlinewidth 0.73953 0.30843 moveto 0.73953 0.31468 lineto stroke grestore [(3000)] 0.73953 0.30843 0 2 Mshowa gsave 0.002 setlinewidth 0.9781 0.30843 moveto 0.9781 0.31468 lineto stroke grestore [(4000)] 0.9781 0.30843 0 2 Mshowa gsave 0.001 setlinewidth 0.07152 0.30843 moveto 0.07152 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.11924 0.30843 moveto 0.11924 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.16695 0.30843 moveto 0.16695 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.21467 0.30843 moveto 0.21467 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.3101 0.30843 moveto 0.3101 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.35781 0.30843 moveto 0.35781 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.40553 0.30843 moveto 0.40553 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.45324 0.30843 moveto 0.45324 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.54867 0.30843 moveto 0.54867 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.59638 0.30843 moveto 0.59638 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.6441 0.30843 moveto 0.6441 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.69181 0.30843 moveto 0.69181 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.78724 0.30843 moveto 0.78724 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.83496 0.30843 moveto 0.83496 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.88267 0.30843 moveto 0.88267 0.31218 lineto stroke grestore gsave 0.001 setlinewidth 0.93038 0.30843 moveto 0.93038 0.31218 lineto stroke grestore [( f)] 1.025 0.30843 -1 0 Mshowa gsave 0.002 setlinewidth 0 0.30843 moveto 1 0.30843 lineto stroke grestore gsave 0.002 setlinewidth 0.02381 0.06262 moveto 0.03006 0.06262 lineto stroke grestore [(-150)] 0.01131 0.06262 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.14455 moveto 0.03006 0.14455 lineto stroke grestore [(-100)] 0.01131 0.14455 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.22649 moveto 0.03006 0.22649 lineto stroke grestore [(-50)] 0.01131 0.22649 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.39036 moveto 0.03006 0.39036 lineto stroke grestore [(50)] 0.01131 0.39036 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.4723 moveto 0.03006 0.4723 lineto stroke grestore [(100)] 0.01131 0.4723 1 0 Mshowa gsave 0.002 setlinewidth 0.02381 0.55424 moveto 0.03006 0.55424 lineto stroke grestore [(150)] 0.01131 0.55424 1 0 Mshowa gsave 0.001 setlinewidth 0.02381 0.079 moveto 0.02756 0.079 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.09539 moveto 0.02756 0.09539 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.11178 moveto 0.02756 0.11178 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.12817 moveto 0.02756 0.12817 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.16094 moveto 0.02756 0.16094 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.17733 moveto 0.02756 0.17733 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.19371 moveto 0.02756 0.19371 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.2101 moveto 0.02756 0.2101 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.24288 moveto 0.02756 0.24288 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.25926 moveto 0.02756 0.25926 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.27565 moveto 0.02756 0.27565 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.29204 moveto 0.02756 0.29204 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.32481 moveto 0.02756 0.32481 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.3412 moveto 0.02756 0.3412 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.35759 moveto 0.02756 0.35759 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.37398 moveto 0.02756 0.37398 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.40675 moveto 0.02756 0.40675 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.42314 moveto 0.02756 0.42314 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.43953 moveto 0.02756 0.43953 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.45591 moveto 0.02756 0.45591 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.48869 moveto 0.02756 0.48869 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.50508 moveto 0.02756 0.50508 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.52146 moveto 0.02756 0.52146 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.53785 moveto 0.02756 0.53785 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.04623 moveto 0.02756 0.04623 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.02984 moveto 0.02756 0.02984 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.01345 moveto 0.02756 0.01345 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.57063 moveto 0.02756 0.57063 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.58701 moveto 0.02756 0.58701 lineto stroke grestore gsave 0.001 setlinewidth 0.02381 0.6034 moveto 0.02756 0.6034 lineto stroke grestore [(Phase \\(Degrees\\))] 0.02381 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0.02381 0 moveto 0.02381 0.61803 lineto stroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath gsave gsave 0.004 setlinewidth 0.02405 0.45602 moveto 0.06372 0.47361 lineto 0.10339 0.4927 lineto 0.14307 0.51539 lineto 0.1629 0.52917 lineto 0.18274 0.54561 lineto 0.20257 0.56607 lineto 0.21249 0.57847 lineto 0.21745 0.58536 lineto 0.22241 0.59279 lineto 0.22489 0.59673 lineto 0.22613 0.59875 lineto 0.22737 0.60082 lineto 0.22861 0.60292 lineto 0.22985 0.01512 lineto 0.23109 0.01731 lineto 0.23233 0.01954 lineto 0.24225 0.03903 lineto 0.26208 0.0866 lineto 0.30176 0.18809 lineto 0.34143 0.26232 lineto 0.3811 0.32307 lineto 0.42077 0.3824 lineto 0.46045 0.4503 lineto 0.50012 0.52791 lineto 0.51996 0.56231 lineto 0.53979 0.59027 lineto 0.54475 0.59629 lineto 0.54723 0.59916 lineto 0.54847 0.60057 lineto 0.54971 0.60195 lineto 0.55095 0.60332 lineto 0.55219 0.01472 lineto 0.55467 0.01734 lineto 0.55963 0.02237 lineto 0.57946 0.03987 lineto 0.61914 0.06583 lineto 0.65881 0.08451 lineto 0.69848 0.09899 lineto 0.73815 0.11087 lineto 0.77783 0.12105 lineto 0.8175 0.13007 lineto 0.85717 0.1383 lineto 0.89685 0.146 lineto 0.93652 0.15338 lineto 0.97619 0.16059 lineto stroke grestore grestore % End of Graphics MathPictureEnd\ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{282, 174}, ImageMargins->{{61, Inherited}, {Inherited, Inherited}}, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[" 2.6 - Digital Usage", "Subsection", Evaluatable->False, AspectRatioFixed->False, CellTags->"Digital Test Code"], Cell[TextData[ "FindImpulseResponse::usage = \"FindImpulseResponse[filter,\nmaxn] returns an \ array of the first maxn samples of the \nimpulse response of the input \ filter.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "PolyCoeff::usage = \"PolyCoeff[coeffs, n] returns the n'th\nentry of a \ coefficient list. Zero is returned for all \nindices past the end of the \ list.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "MakePoly::usage = \"MakePoly[coeflist] converts a list of\ncoefficients into \ a polynomial in z.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterEval::uage = \"FilterEval[filter,x] evaluates the \ngiven filter at \ the argument x.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "RationalPoles::usage = \"RationalPoles[rationalfunc] returns\nthe poles of a \ ratio of polynomials in z.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "RationalZeros::usage = \"RationalZeros[rationalfunc] returns\nthe zeros of a \ ratio of polynomials in z.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "EpsilonFromTauFS::usage = \"EpsilonFromTauFS[tau, fs] \nreturns the epsilon \ in the equation 1/(1-epsilon z) that\nwill give a time constant of tau with a \ sampling frequency\nof fs.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FirstOrderFromTau::usage = \"FirstOrderFromTau[tau,fs]\nreturns a first \ order polynomial in z that represents a\ndigital filter with time constant \ tau and sampling \nfrequency fs.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FirstOrderFromCorner::usage = \"FirstOrderFromCorner[f,fs]\nreturns a first \ order polynomial in z that represents a \ndigital first with corner frequency \ f and sampling \nfrequency fs.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "SecondOrderFromCenterQ::usage = \"SecondOrderFromCenterQ[f,\nq,fs] returns a \ second order digital filter (represented\nin the z-domain) with a center \ frequency of f, a quality\nfactor of q and a sampling frequency of fs.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "MakeFilter::usage = \"MakeFilter[forward,feedback,fs,f,gain]\ncreates a \ filter by dividing a feedforward (zeros) \npolynomial by the feedback (poles) \ polynomial. The gain\nof the resulting filter is adjusted so that it has the\ \ndesired gain at the frequency f. The sampling interval is\nfs.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterGain::usage = \"FilterGain[filter,f,fs] evaluates the\nfilter's gain \ (sampling interval of fs) at the frequency\nf.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterMag::usage = \"FilterMag[filter,f,fs] evaluates the\nmagnitude of the \ filter's response (sampling interval of fs)\nat the frequency f.\";"], "Input",\ InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterPhase::usage = \"FilterPhase[filter,f,fs] evaluates the\nfilter's \ phase (sampling interval of fs) at the frequency\nf.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FilterDb::usage = \"FilterDb[filter,f,fs] evaluates the\nfilter's gain in \ decibels (sampling interval of fs) at the \nfrequency f.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "FreqResponse::usage = \"FreqResponse[filter,fs] plots the\nfrequency \ response of a digital filter. The filter is \nrepresented in the z domain \ (function of z) and fs is the\nsampling interval.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "PhaseResponse::usage = \"PhaseResponse[filter,fs] plots the \nphase response \ of a digital filter. The filter is \nrepresented in the z domain (function \ of z) and fs is the\nsampling interval.\";"], "Input", InitializationCell->True, AspectRatioFixed->False], Cell[TextData[ "StandardZTransform::usage = \"StandardZTransform[GZP, T] \ntransforms an \ analog filter in Gain-Zero-Poles (GZP) form\ninto a digital filter (with \ sample rate T) using the Standard \nZ transform (impulse invariant). This \ function transforms \neach pair of complex conjugate poles into the \ equivalent \ndigital filter. Note, this function fails if there are \n\ multiple poles at one location.\";"], "Input", InitializationCell->True, AspectRatioFixed->True], Cell[TextData[ "BilinearPreWarp::usage = \"BilinearPreWarp[f, fs] prewarps a\na frequency \ (f) so that after the Bilinear Z-transform the\npoles or zeros will be at the \ right spot.\";"], "Input", InitializationCell->True, AspectRatioFixed->True], Cell[TextData[ "BilinearExpand::usage = \"BilinearExpand[GZP, T] transforms\nan analog \ filter described by the Gain-Zero-Poles (GZP)\nstructure into a digital \ filter with a sampling rate of T.\nNote, this function fails if there are \ multiple poles at \none location.\";"], "Input", InitializationCell->True, AspectRatioFixed->True], Cell[TextData[ "SOSFromBilinearGZP::usage = \"SOSFromBilinearGZP[GZP] rearranges\nthe poles \ and zeros of a digital filter so that complex \nconjugate roots are combined. \ The resulting filter will have\nreal coefficients and can be easily \ implemented.\";"], "Input", InitializationCell->True, AspectRatioFixed->True] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Acknowledgements"], "Section", Evaluatable->False, AspectRatioFixed->True, CellTags->"Acknowledgements"], Cell[TextData[ "The author wishes to acknowledge many useful comments from Richard Lyon, Jim \ Kaiser, Ray DeCarlo, Daniel Naar, and Steve Shepard."], "Text", Evaluatable->False, AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell[TextData["References"], "Section", Evaluatable->False, AspectRatioFixed->True, CellTags->"References"], Cell[TextData[{ StyleBox["[Daryanani1976] Gobind Daryanani, ", Evaluatable->False, AspectRatioFixed->True], StyleBox["Principles of Active Network Synthesis and\nDesign", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[", John Wiley and Sons, New York, 1976.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "[Evans1992] Brian L. Evans and James H. McClellan, \ \[OpenCurlyDoubleQuote]Symbolic Analysis of Signals and Systems,\ \[CloseCurlyDoubleQuote] in S", Evaluatable->False, AspectRatioFixed->True], StyleBox["ymbolic and Knowledge-Based Signal Processing", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ ", Alan V. Oppenheim and S. Hamid Nawab, eds., Prentice-Hall, Englewood \ Cliffs, NJ, 1992.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["[Oppenheim1989] Alan V. Oppenheim and Ronald W. Schafer, ", Evaluatable->False, AspectRatioFixed->True], StyleBox["Discrete-Time Signal Processing", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[", Prentice-Hall, Englewood Cliffs, NJ, 1989.", Evaluatable->False, AspectRatioFixed->True], StyleBox["", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "[Slaney1988] Malcolm Slaney, \[OpenCurlyDoubleQuote]Lyon\[CloseCurlyQuote]s \ Cochlear Model,\[CloseCurlyDoubleQuote] Apple Technical Report #13, Apple \ Computer Corporate Library, Cupertino, CA 95014, 1988."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "[Slaney1990] Malcolm Slaney, \[OpenCurlyDoubleQuote]Interactive Signal \ Processing Documents,\[CloseCurlyDoubleQuote] ", Evaluatable->False, AspectRatioFixed->True], StyleBox["IEEE ASSP Magazine", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[", 7 (1990), pp. 8-20.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "[Smith1992] Julius O. Smith, \[OpenCurlyDoubleQuote]Rectangular, Hanning, \ and Hamming Window Transforms,\[CloseCurlyDoubleQuote] \ \[OpenCurlyDoubleQuote]The Kaiser Window,\[CloseCurlyDoubleQuote] \ \[OpenCurlyDoubleQuote]The Window Method for FIR Digital Filter Design,\ \[CloseCurlyDoubleQuote] ", Evaluatable->False, AspectRatioFixed->True], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " notebooks, CCRMA, Stanford University, 1993. [Available via anonymous ftp \ to ccrma-ftp.stanford.edu, files pub/DSP/GenHamming.ma.Z, \ pub/DSP/Kaiser.ma.Z, pub/DSP/WinFlt.ma.Z.]", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "[Slaney1992] Malcolm Slaney, \[OpenCurlyDoubleQuote]Interactive Signal \ Processing Documents,\[CloseCurlyDoubleQuote] in S", Evaluatable->False, AspectRatioFixed->True], StyleBox["ymbolic and Knowledge-Based Signal Processing", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ ", Alan V. Oppenheim and S. Hamid Nawab, eds., Prentice-Hall, Englewood \ Cliffs, NJ, 1992.", Evaluatable->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell[TextData["Index"], "Section", Evaluatable->False, AspectRatioFixed->True, CellTags->"References"], Cell[TextData[ "Acknowledgements...55\nAdjustGain...37\nAnalog to Digital Filter \ Conversion...44\nBetween...11\nBilinearExpand...51\nBilinearPreWarp...49\n\ BilinearZTransform...51\nBpTransform...26\nBrExtraRoots...27\n\ BrTransform...27\nButterworth Filters...14\nButterworthLp...16\n\ ButterworthPoles...15\nChebychev Polynomials...17\nChebychev...18\n\ ChebychevLp...20\nChebychevPoles...18\nChebychevPoly...18\nContinous Second \ Order Test Code...10\nContinuous Filter Design...13\nContinuous Filter \ Functions...2\nContinuous Second Order Examples...7\nContinuous Time Filter \ Design...2, 34\nContinuousAdjustGain...3\nContinuousFilterDb...2\n\ ContinuousFilterEval...2\nContinuousFilterGain...2\nContinuousFilterMag...2\n\ ContinuousFilterPhase...2\nContinuousFreqResponse...2, 5\n\ ContinuousFreqResponseRadians...3\nContinuousNaturalResonance...4\n\ ContinuousSecondOrderFilter...4\nContinuousSecondOrderRoot...3\ndB...2\n\ DeCarlo s Test Cases...29\nDeletePole...45\nDigital Filter Design \ Equations...35\nDigital Test Code...43, 53\nDiscrete Time Filter Design...34\n\ Discrete Time Filters...34\nDropPair...51\nEpsilonFromTauFS...36\n\ EvaluateGZP...45\nFilterDb...36\nFilterEval...34\nFilterFromGZP...14\n\ FilterGain...36\nFilterMag...36\nFilterPhase...36\nFilterSearch...11\n\ FindImpulseResponse...42\nFindResidue...46\nFirstOrderFromCorner...36\n\ FirstOrderFromTau...36\nFreqResponse...37\nGetSolution...35\nGrabPair...51\n\ GroupRoots...45\nIntroduction to Continuous Filter Design...14\nLow Pass \ Filter Design...22\nLower3DbPoint...4\nLpToBp...26\nLpToBr...28\nLpToHp...24\n\ LpToLp...22\nMakeContinuousAntiResonance...6\nMakeContinuousResonance...5\n\ MakeFilter...37\nMakePoly...34\nOther Filter Transforms...24\n\ PartialExpand...46\nPartialFractions...46\nPhaseResponse...37\nPlotPoles...15\ \nPolyCoeff...34\nPolynomial Evaluation Utilities...34\n\ PolynomialFromRoots...14\nRationalPoles...35\nRationalZeros...35\n\ References...2, 55\nSecondOrderFromCenterQ...36\nSosFromBilinearGZP...52\n\ StandardZExpand...48\nStandardZTransform...48\nTime Domain \ Implementation...41\nUpper3DbPoint...4"], "Input", AspectRatioFixed->True] }, Closed]] }, FrontEndVersion->"Macintosh 3.0", ScreenRectangle->{{0, 832}, {0, 604}}, AutoGeneratedPackage->None, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{520, 509}, WindowMargins->{{20, Automatic}, {Automatic, 31}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, MacintoshSystemPageSetup->"\<\ 00<0001804P000000]P2:?oQon82n@960dL5:0?l0080001804P000000]P2:001 0000I00000400`<300000BL?00400@00000000000000060001T1T00000000000 00000000000000000000000000000000\>" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{ "References"->{ Cell[5082, 139, 198, 4, 51, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{"References", "Continuous Time Filter Design"}], Cell[730335, 31187, 113, 3, 31, "Section", Evaluatable->False, CellTags->"References"], Cell[734165, 31315, 108, 3, 31, "Section", Evaluatable->False, CellTags->"References"]}, "Continuous Time Filter Design"->{ Cell[5082, 139, 198, 4, 51, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{"References", "Continuous Time Filter Design"}], Cell[391272, 19362, 247, 7, 31, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{ "Discrete Time Filters", "Discrete Time Filter Design", "Continuous Time Filter Design"}]}, "Continuous Filter Functions"->{ Cell[5691, 156, 158, 3, 46, "Subsection", Evaluatable->False, CellTags->"Continuous Filter Functions"]}, "ContinuousFilterEval"->{ Cell[7513, 217, 182, 4, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterEval"]}, "ContinuousFilterGain"->{ Cell[7698, 223, 201, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterGain"]}, "ContinuousFilterMag"->{ Cell[7902, 230, 196, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterMag"]}, "ContinuousFilterPhase"->{ Cell[8101, 237, 200, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterPhase"]}, "dB"->{ Cell[8304, 244, 122, 3, 27, "Input", InitializationCell->True, CellTags->"dB"]}, "ContinuousFilterDb"->{ Cell[8429, 249, 193, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterDb"]}, "ContinuousFreqResponse"->{ Cell[8885, 263, 375, 7, 132, "Input", InitializationCell->True, CellTags->"ContinuousFreqResponse"], Cell[25408, 1020, 171, 4, 70, "Input", CellTags->"ContinuousFreqResponse"]}, "ContinuousFreqResponseRadians"->{ Cell[9704, 288, 395, 7, 147, "Input", InitializationCell->True, CellTags->"ContinuousFreqResponseRadians"]}, "ContinuousAdjustGain"->{ Cell[10886, 322, 200, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousAdjustGain"]}, "ContinuousSecondOrderRoot"->{ Cell[12273, 357, 419, 15, 70, "Input", InitializationCell->True, CellTags->"ContinuousSecondOrderRoot"]}, "ContinuousSecondOrderFilter"->{ Cell[22447, 921, 268, 6, 70, "Input", InitializationCell->True, CellTags->"ContinuousSecondOrderFilter"]}, "ContinuousNaturalResonance"->{ Cell[22958, 936, 202, 5, 70, "Input", InitializationCell->True, CellTags->"ContinuousNaturalResonance"]}, "Lower3DbPoint"->{ Cell[23353, 949, 185, 5, 70, "Input", InitializationCell->True, CellTags->"Lower3DbPoint"]}, "Upper3DbPoint"->{ Cell[23541, 956, 185, 5, 70, "Input", InitializationCell->True, CellTags->"Upper3DbPoint"]}, "MakeContinuousResonance"->{ Cell[24315, 979, 268, 6, 70, "Input", InitializationCell->True, CellTags->"MakeContinuousResonance"]}, "MakeContinuousAntiResonance"->{ Cell[62626, 3019, 245, 6, 70, "Input", InitializationCell->True, CellTags->"MakeContinuousAntiResonance"]}, "Continuous Second Order Examples"->{ Cell[71359, 3509, 173, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Continuous Second Order Examples"]}, "Continous Second Order Test Code"->{ Cell[163168, 7553, 173, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Continous Second Order Test Code"]}, "FilterSearch"->{ Cell[165780, 7629, 605, 10, 70, "Input", InitializationCell->True, CellTags->"FilterSearch"]}, "Between"->{ Cell[166388, 7641, 180, 5, 70, "Input", InitializationCell->True, CellTags->"Between"]}, "Continuous Filter Design"->{ Cell[174268, 7938, 152, 3, 30, "Subsection", Evaluatable->False, CellTags->"Continuous Filter Design"]}, "Introduction to Continuous Filter Design"->{ Cell[175615, 7967, 190, 4, 70, "Subsubsection", Evaluatable->False, CellTags->"Introduction to Continuous Filter Design"]}, "PolynomialFromRoots"->{ Cell[177776, 8024, 228, 5, 70, "Input", InitializationCell->True, CellTags->"PolynomialFromRoots"]}, "FilterFromGZP"->{ Cell[178858, 8053, 234, 6, 70, "Input", InitializationCell->True, CellTags->"FilterFromGZP"], Cell[179095, 8061, 183, 5, 70, "Input", InitializationCell->True, CellTags->"FilterFromGZP"]}, "Butterworth Filters"->{ Cell[179315, 8071, 147, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Butterworth Filters"]}, "ButterworthPoles"->{ Cell[180308, 8103, 200, 5, 70, "Input", InitializationCell->True, CellTags->"ButterworthPoles"]}, "PlotPoles"->{ Cell[181193, 8136, 222, 6, 70, "Input", InitializationCell->True, CellTags->"PlotPoles"]}, "ButterworthLp"->{ Cell[198645, 9115, 352, 7, 70, "Input", InitializationCell->True, CellTags->"ButterworthLp"]}, "Chebychev Polynomials"->{ Cell[211559, 9793, 151, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Chebychev Polynomials"]}, "ChebychevPoly"->{ Cell[213641, 9848, 212, 5, 70, "Input", InitializationCell->True, CellTags->"ChebychevPoly"]}, "Chebychev"->{ Cell[214390, 9878, 244, 5, 70, "Input", InitializationCell->True, CellTags->"Chebychev"]}, "ChebychevPoles"->{ Cell[214637, 9885, 180, 5, 70, "Input", InitializationCell->True, CellTags->"ChebychevPoles"]}, "ChebychevLp"->{ Cell[223985, 10385, 367, 7, 70, "Input", InitializationCell->True, CellTags->"ChebychevLp"]}, "Low Pass Filter Design"->{ Cell[263647, 12568, 153, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Low Pass Filter Design"]}, "LpToLp"->{ Cell[266248, 12662, 250, 6, 70, "Input", InitializationCell->True, CellTags->"LpToLp"]}, "Other Filter Transforms"->{ Cell[283840, 13628, 155, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Other Filter Transforms"]}, "LpToHp"->{ Cell[284971, 13665, 555, 9, 70, "Input", InitializationCell->True, CellTags->"LpToHp"]}, "BpTransform"->{ Cell[301532, 14585, 258, 6, 70, "Input", InitializationCell->True, CellTags->"BpTransform"]}, "LpToBp"->{ Cell[302510, 14619, 635, 10, 70, "Input", InitializationCell->True, CellTags->"LpToBp"]}, "BrTransform"->{ Cell[315527, 15290, 260, 6, 70, "Input", InitializationCell->True, CellTags->"BrTransform"]}, "BrExtraRoots"->{ Cell[315790, 15298, 175, 4, 70, "Input", InitializationCell->True, CellTags->"BrExtraRoots"]}, "LpToBr"->{ Cell[315968, 15304, 705, 12, 70, "Input", InitializationCell->True, CellTags->"LpToBr"]}, "DeCarlo s Test Cases"->{ Cell[337084, 16458, 167, 4, 70, "Subsubsection", Evaluatable->False, CellTags->"DeCarlo s Test Cases"]}, "Discrete Time Filters"->{ Cell[391272, 19362, 247, 7, 31, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{ "Discrete Time Filters", "Discrete Time Filter Design", "Continuous Time Filter Design"}]}, "Discrete Time Filter Design"->{ Cell[391272, 19362, 247, 7, 31, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{ "Discrete Time Filters", "Discrete Time Filter Design", "Continuous Time Filter Design"}]}, "Polynomial Evaluation Utilities"->{ Cell[392028, 19383, 166, 3, 46, "Subsection", Evaluatable->False, CellTags->"Polynomial Evaluation Utilities"]}, "PolyCoeff"->{ Cell[394209, 19455, 191, 5, 70, "Input", InitializationCell->True, CellTags->"PolyCoeff"]}, "MakePoly"->{ Cell[395103, 19487, 243, 5, 70, "Input", InitializationCell->True, CellTags->"MakePoly"]}, "FilterEval"->{ Cell[395767, 19509, 146, 3, 70, "Input", InitializationCell->True, CellTags->"FilterEval"]}, "GetSolution"->{ Cell[398847, 19645, 172, 4, 70, "Input", InitializationCell->True, CellTags->"GetSolution"]}, "RationalPoles"->{ Cell[399022, 19651, 246, 6, 70, "Input", InitializationCell->True, CellTags->"RationalPoles"]}, "RationalZeros"->{ Cell[399271, 19659, 244, 6, 70, "Input", InitializationCell->True, CellTags->"RationalZeros"]}, "Digital Filter Design Equations"->{ Cell[400331, 19708, 156, 3, 30, "Subsection", Evaluatable->False, CellTags->"Digital Filter Design Equations"]}, "EpsilonFromTauFS"->{ Cell[401295, 19747, 162, 3, 27, "Input", InitializationCell->True, CellTags->"EpsilonFromTauFS"]}, "FirstOrderFromTau"->{ Cell[401752, 19759, 193, 5, 42, "Input", InitializationCell->True, CellTags->"FirstOrderFromTau"]}, "FirstOrderFromCorner"->{ Cell[402522, 19793, 189, 5, 42, "Input", InitializationCell->True, CellTags->"FirstOrderFromCorner"]}, "SecondOrderFromCenterQ"->{ Cell[402904, 19806, 330, 6, 102, "Input", InitializationCell->True, CellTags->"SecondOrderFromCenterQ"]}, "FilterGain"->{ Cell[403779, 19832, 181, 5, 42, "Input", InitializationCell->True, CellTags->"FilterGain"]}, "FilterMag"->{ Cell[404722, 19869, 169, 4, 42, "Input", InitializationCell->True, CellTags->"FilterMag"]}, "FilterPhase"->{ Cell[404894, 19875, 173, 4, 42, "Input", InitializationCell->True, CellTags->"FilterPhase"]}, "FilterDb"->{ Cell[405070, 19881, 164, 4, 42, "Input", InitializationCell->True, CellTags->"FilterDb"]}, "AdjustGain"->{ Cell[405654, 19904, 172, 4, 42, "Input", InitializationCell->True, CellTags->"AdjustGain"]}, "MakeFilter"->{ Cell[406474, 19930, 203, 5, 42, "Input", InitializationCell->True, CellTags->"MakeFilter"]}, "FreqResponse"->{ Cell[407080, 19952, 346, 7, 132, "Input", InitializationCell->True, CellTags->"FreqResponse"]}, "PhaseResponse"->{ Cell[407581, 19967, 326, 7, 102, "Input", InitializationCell->True, CellTags->"PhaseResponse"]}, "Time Domain Implementation"->{ Cell[512255, 23870, 156, 3, 30, "Subsection", Evaluatable->False, CellTags->"Time Domain Implementation"]}, "FindImpulseResponse"->{ Cell[610861, 25641, 1160, 18, 462, "Input", InitializationCell->True, CellTags->"FindImpulseResponse"]}, "Digital Test Code"->{ Cell[612691, 25689, 138, 3, 30, "Subsection", Evaluatable->False, CellTags->"Digital Test Code"], Cell[724147, 31016, 124, 3, 30, "Subsection", Evaluatable->False, CellTags->"Digital Test Code"]}, "Analog to Digital Filter Conversion"->{ Cell[639670, 26775, 174, 3, 30, "Subsection", Evaluatable->False, CellTags->"Analog to Digital Filter Conversion"]}, "GroupRoots"->{ Cell[641789, 26823, 714, 12, 70, "Input", InitializationCell->True, CellTags->"GroupRoots"]}, "DeletePole"->{ Cell[644940, 26914, 189, 5, 70, "Input", InitializationCell->True, CellTags->"DeletePole"]}, "EvaluateGZP"->{ Cell[645356, 26935, 236, 6, 70, "Input", InitializationCell->True, CellTags->"EvaluateGZP"]}, "FindResidue"->{ Cell[646381, 26988, 214, 5, 70, "Input", InitializationCell->True, CellTags->"FindResidue"]}, "PartialExpand"->{ Cell[647346, 27027, 441, 8, 70, "Input", InitializationCell->True, CellTags->"PartialExpand"]}, "PartialFractions"->{ Cell[648057, 27053, 246, 6, 70, "Input", InitializationCell->True, CellTags->"PartialFractions"]}, "StandardZExpand"->{ Cell[661770, 27752, 616, 11, 70, "Input", InitializationCell->True, CellTags->"StandardZExpand"]}, "StandardZTransform"->{ Cell[662389, 27765, 263, 6, 70, "Input", InitializationCell->True, CellTags->"StandardZTransform"]}, "BilinearPreWarp"->{ Cell[684738, 28917, 167, 4, 70, "Input", InitializationCell->True, CellTags->"BilinearPreWarp"]}, "BilinearExpand"->{ Cell[702473, 29919, 169, 4, 70, "Input", InitializationCell->True, CellTags->"BilinearExpand"]}, "BilinearZTransform"->{ Cell[702645, 29925, 633, 11, 70, "Input", InitializationCell->True, CellTags->"BilinearZTransform"]}, "GrabPair"->{ Cell[705338, 30008, 308, 6, 70, "Input", InitializationCell->True, CellTags->"GrabPair"]}, "DropPair"->{ Cell[705649, 30016, 219, 5, 70, "Input", InitializationCell->True, CellTags->"DropPair"]}, "SosFromBilinearGZP"->{ Cell[705871, 30023, 692, 11, 70, "Input", InitializationCell->True, CellTags->"SosFromBilinearGZP"]}, "Acknowledgements"->{ Cell[729964, 31173, 125, 3, 31, "Section", Evaluatable->False, CellTags->"Acknowledgements"]} } *) (*CellTagsIndex CellTagsIndex->{ {"References", 737486, 31382}, {"Continuous Time Filter Design", 737895, 31393}, {"Continuous Filter Functions", 738319, 31404}, {"ContinuousFilterEval", 738468, 31408}, {"ContinuousFilterGain", 738611, 31412}, {"ContinuousFilterMag", 738753, 31416}, {"ContinuousFilterPhase", 738896, 31420}, {"dB", 739022, 31424}, {"ContinuousFilterDb", 739145, 31428}, {"ContinuousFreqResponse", 739288, 31432}, {"ContinuousFreqResponseRadians", 739529, 31438}, {"ContinuousAdjustGain", 739682, 31442}, {"ContinuousSecondOrderRoot", 739831, 31446}, {"ContinuousSecondOrderFilter", 739988, 31450}, {"ContinuousNaturalResonance", 740145, 31454}, {"Lower3DbPoint", 740288, 31458}, {"Upper3DbPoint", 740418, 31462}, {"MakeContinuousResonance", 740558, 31466}, {"MakeContinuousAntiResonance", 740712, 31470}, {"Continuous Second Order Examples", 740876, 31474}, {"Continous Second Order Test Code", 741047, 31478}, {"FilterSearch", 741199, 31482}, {"Between", 741325, 31486}, {"Continuous Filter Design", 741462, 31490}, {"Introduction to Continuous Filter Design", 741631, 31494}, {"PolynomialFromRoots", 741798, 31498}, {"FilterFromGZP", 741936, 31502}, {"Butterworth Filters", 742184, 31509}, {"ButterworthPoles", 742327, 31513}, {"PlotPoles", 742458, 31517}, {"ButterworthLp", 742586, 31521}, {"Chebychev Polynomials", 742726, 31525}, {"ChebychevPoly", 742868, 31529}, {"Chebychev", 742996, 31533}, {"ChebychevPoles", 743125, 31537}, {"ChebychevLp", 743256, 31541}, {"Low Pass Filter Design", 743396, 31545}, {"LpToLp", 743533, 31549}, {"Other Filter Transforms", 743669, 31553}, {"LpToHp", 743807, 31557}, {"BpTransform", 743931, 31561}, {"LpToBp", 744055, 31565}, {"BrTransform", 744180, 31569}, {"BrExtraRoots", 744310, 31573}, {"LpToBr", 744435, 31577}, {"DeCarlo s Test Cases", 744569, 31581}, {"Discrete Time Filters", 744719, 31585}, {"Discrete Time Filter Design", 744980, 31592}, {"Polynomial Evaluation Utilities", 745245, 31599}, {"PolyCoeff", 745391, 31603}, {"MakePoly", 745515, 31607}, {"FilterEval", 745640, 31611}, {"GetSolution", 745768, 31615}, {"RationalPoles", 745899, 31619}, {"RationalZeros", 746032, 31623}, {"Digital Filter Design Equations", 746183, 31627}, {"EpsilonFromTauFS", 746336, 31631}, {"FirstOrderFromTau", 746476, 31635}, {"FirstOrderFromCorner", 746620, 31639}, {"SecondOrderFromCenterQ", 746769, 31643}, {"FilterGain", 746909, 31647}, {"FilterMag", 747035, 31651}, {"FilterPhase", 747162, 31655}, {"FilterDb", 747288, 31659}, {"AdjustGain", 747413, 31663}, {"MakeFilter", 747540, 31667}, {"FreqResponse", 747669, 31671}, {"PhaseResponse", 747802, 31675}, {"Time Domain Implementation", 747949, 31679}, {"FindImpulseResponse", 748100, 31683}, {"Digital Test Code", 748246, 31687}, {"Analog to Digital Filter Conversion", 748518, 31694}, {"GroupRoots", 748669, 31698}, {"DeletePole", 748797, 31702}, {"EvaluateGZP", 748925, 31706}, {"FindResidue", 749054, 31710}, {"PartialExpand", 749185, 31714}, {"PartialFractions", 749321, 31718}, {"StandardZExpand", 749459, 31722}, {"StandardZTransform", 749600, 31726}, {"BilinearPreWarp", 749740, 31730}, {"BilinearExpand", 749876, 31734}, {"BilinearZTransform", 750015, 31738}, {"GrabPair", 750149, 31742}, {"DropPair", 750272, 31746}, {"SosFromBilinearGZP", 750405, 31750}, {"Acknowledgements", 750547, 31754} } *) (*NotebookFileOutline Notebook[{ Cell[1709, 49, 102, 2, 138, "Title", Evaluatable->False], Cell[1814, 53, 235, 5, 143, "Subsubtitle", Evaluatable->False], Cell[2052, 60, 720, 19, 96, "Text", Evaluatable->False], Cell[2775, 81, 384, 7, 78, "Text", Evaluatable->False], Cell[3162, 90, 1033, 22, 146, "Text", Evaluatable->False], Cell[4198, 114, 859, 21, 96, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[5082, 139, 198, 4, 51, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{"References", "Continuous Time Filter Design"}], Cell[5283, 145, 383, 7, 78, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[5691, 156, 158, 3, 46, "Subsection", Evaluatable->False, CellTags->"Continuous Filter Functions"], Cell[5852, 161, 566, 17, 64, "Text", Evaluatable->False], Cell[6421, 180, 188, 8, 34, "Input", Evaluatable->False], Cell[6612, 190, 898, 25, 82, "Text", Evaluatable->False], Cell[7513, 217, 182, 4, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterEval"], Cell[7698, 223, 201, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterGain"], Cell[7902, 230, 196, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterMag"], Cell[8101, 237, 200, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterPhase"], Cell[8304, 244, 122, 3, 27, "Input", InitializationCell->True, CellTags->"dB"], Cell[8429, 249, 193, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousFilterDb"], Cell[8625, 256, 257, 5, 46, "Text", Evaluatable->False], Cell[8885, 263, 375, 7, 132, "Input", InitializationCell->True, CellTags->"ContinuousFreqResponse"], Cell[9263, 272, 438, 14, 46, "Text", Evaluatable->False], Cell[9704, 288, 395, 7, 147, "Input", InitializationCell->True, CellTags->"ContinuousFreqResponseRadians"], Cell[10102, 297, 338, 6, 62, "Text", Evaluatable->False], Cell[10443, 305, 440, 15, 48, "Text", Evaluatable->False], Cell[10886, 322, 200, 5, 42, "Input", InitializationCell->True, CellTags->"ContinuousAdjustGain"] }, Closed]], Cell[CellGroupData[{ Cell[11123, 332, 119, 2, 30, "Subsection", Evaluatable->False], Cell[11245, 336, 474, 8, 70, "Text", Evaluatable->False], Cell[11722, 346, 548, 9, 70, "Text", Evaluatable->False], Cell[12273, 357, 419, 15, 70, "Input", InitializationCell->True, CellTags->"ContinuousSecondOrderRoot"], Cell[12695, 374, 403, 7, 70, "Text", Evaluatable->False], Cell[13101, 383, 529, 8, 70, "Text", Evaluatable->False], Cell[13633, 393, 666, 17, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[14324, 414, 367, 6, 70, "Input", CellOpen->False], Cell[14694, 422, 7544, 490, 70, 7386, 485, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[22253, 915, 191, 4, 70, "Text", Evaluatable->False], Cell[22447, 921, 268, 6, 70, "Input", InitializationCell->True, CellTags->"ContinuousSecondOrderFilter"], Cell[22718, 929, 237, 5, 70, "Text", Evaluatable->False], Cell[22958, 936, 202, 5, 70, "Input", InitializationCell->True, CellTags->"ContinuousNaturalResonance"], Cell[23163, 943, 187, 4, 70, "Text", Evaluatable->False], Cell[23353, 949, 185, 5, 70, "Input", InitializationCell->True, CellTags->"Lower3DbPoint"], Cell[23541, 956, 185, 5, 70, "Input", InitializationCell->True, CellTags->"Upper3DbPoint"], Cell[CellGroupData[{ Cell[23751, 965, 131, 3, 70, "Subsubsection", Evaluatable->False], Cell[23885, 970, 427, 7, 70, "Text", Evaluatable->False], Cell[24315, 979, 268, 6, 70, "Input", InitializationCell->True, CellTags->"MakeContinuousResonance"], Cell[24586, 987, 184, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[24795, 995, 89, 1, 70, "Input"], Cell[24887, 998, 358, 13, 70, "Output", Evaluatable->False] }, Open ]], Cell[25260, 1014, 123, 2, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[25408, 1020, 171, 4, 70, "Input", CellTags->"ContinuousFreqResponse"], Cell[25582, 1026, 7539, 440, 70, 7381, 435, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[33136, 1469, 335, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[33496, 1479, 155, 3, 70, "Input"], Cell[33654, 1484, 7185, 431, 70, 7027, 426, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[40854, 1918, 369, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[41248, 1928, 251, 5, 70, "Input", CellOpen->False], Cell[41502, 1935, 20747, 1073, 70, 20589, 1068, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[62264, 3011, 359, 6, 70, "Text", Evaluatable->False], Cell[62626, 3019, 245, 6, 70, "Input", InitializationCell->True, CellTags->"MakeContinuousAntiResonance"], Cell[62874, 3027, 178, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[63077, 3035, 90, 1, 70, "Input"], Cell[63170, 3038, 282, 9, 70, "Output", Evaluatable->False] }, Open ]], Cell[63467, 3050, 148, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[63640, 3058, 132, 3, 70, "Input"], Cell[63775, 3063, 7535, 440, 70, 7377, 435, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[71359, 3509, 173, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Continuous Second Order Examples"], Cell[71535, 3514, 603, 17, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[72163, 3535, 134, 3, 70, "Input"], Cell[72300, 3540, 533, 14, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[72870, 3559, 163, 3, 70, "Input"], Cell[73036, 3564, 7864, 444, 70, 7706, 439, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[80915, 4011, 191, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[81131, 4019, 132, 3, 70, "Input"], Cell[81266, 4024, 518, 14, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[81821, 4043, 161, 3, 70, "Input"], Cell[81985, 4048, 6783, 387, 70, 6625, 382, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[88783, 4438, 338, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[89146, 4448, 347, 5, 70, "Input"], Cell[89496, 4455, 20918, 1372, 70, 20760, 1367, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[110429, 5830, 681, 18, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[111135, 5852, 316, 5, 70, "Input"], Cell[111454, 5859, 51665, 1688, 70, 51507, 1683, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[163168, 7553, 173, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Continous Second Order Test Code"], Cell[163344, 7558, 382, 7, 70, "Text", Evaluatable->False], Cell[163729, 7567, 671, 11, 70, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[164425, 7582, 108, 2, 70, "Input"], Cell[164536, 7586, 197, 4, 70, "Print", Evaluatable->False] }, Open ]], Cell[164748, 7593, 192, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[164965, 7601, 110, 2, 70, "Input"], Cell[165078, 7605, 198, 4, 70, "Print", Evaluatable->False] }, Open ]], Cell[165291, 7612, 486, 15, 70, "Text", Evaluatable->False], Cell[165780, 7629, 605, 10, 70, "Input", InitializationCell->True, CellTags->"FilterSearch"], Cell[166388, 7641, 180, 5, 70, "Input", InitializationCell->True, CellTags->"Between"], Cell[166571, 7648, 139, 3, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[166735, 7655, 98, 1, 70, "Input"], Cell[166836, 7658, 371, 13, 70, "Output", Evaluatable->False] }, Open ]], Cell[167222, 7674, 188, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[167435, 7682, 98, 1, 70, "Input"], Cell[167536, 7685, 131, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[167704, 7697, 78, 1, 70, "Input"], Cell[167785, 7700, 131, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[167931, 7710, 125, 2, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[168081, 7716, 97, 1, 70, "Input"], Cell[168181, 7719, 131, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[168349, 7731, 78, 1, 70, "Input"], Cell[168430, 7734, 131, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[168576, 7744, 469, 15, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[169070, 7763, 109, 2, 70, "Input"], Cell[169182, 7767, 327, 12, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[169546, 7784, 109, 2, 70, "Input"], Cell[169658, 7788, 327, 12, 70, "Output", Evaluatable->False] }, Open ]], Cell[170000, 7803, 232, 5, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[170257, 7812, 103, 1, 70, "Input"], Cell[170363, 7815, 109, 6, 70, "Output", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[170521, 7827, 98, 2, 70, "Subsubsection", Evaluatable->False], Cell[170622, 7831, 584, 16, 70, "Text", Evaluatable->False], Cell[171209, 7849, 186, 4, 70, "Input", InitializationCell->True], Cell[171398, 7855, 202, 4, 70, "Input", InitializationCell->True], Cell[171603, 7861, 202, 4, 70, "Input", InitializationCell->True], Cell[171808, 7867, 156, 4, 70, "Input", InitializationCell->True], Cell[171967, 7873, 205, 4, 70, "Input", InitializationCell->True], Cell[172175, 7879, 207, 4, 70, "Input", InitializationCell->True], Cell[172385, 7885, 349, 6, 70, "Input", InitializationCell->True], Cell[172737, 7893, 247, 5, 70, "Input", InitializationCell->True], Cell[172987, 7900, 247, 5, 70, "Input", InitializationCell->True], Cell[173237, 7907, 267, 5, 70, "Input", InitializationCell->True], Cell[173507, 7914, 258, 5, 70, "Input", InitializationCell->True], Cell[173768, 7921, 219, 4, 70, "Input", InitializationCell->True], Cell[173990, 7927, 229, 5, 70, "Input", InitializationCell->True] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[174268, 7938, 152, 3, 30, "Subsection", Evaluatable->False, CellTags->"Continuous Filter Design"], Cell[174423, 7943, 646, 10, 70, "Text", Evaluatable->False], Cell[175072, 7955, 518, 8, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[175615, 7967, 190, 4, 70, "Subsubsection", Evaluatable->False, CellTags->"Introduction to Continuous Filter Design"], Cell[175808, 7973, 733, 11, 70, "Text", Evaluatable->False], Cell[176544, 7986, 821, 20, 70, "Text", Evaluatable->False], Cell[177368, 8008, 405, 14, 70, "Text", Evaluatable->False], Cell[177776, 8024, 228, 5, 70, "Input", InitializationCell->True, CellTags->"PolynomialFromRoots"], Cell[178007, 8031, 848, 20, 70, "Text", Evaluatable->False], Cell[178858, 8053, 234, 6, 70, "Input", InitializationCell->True, CellTags->"FilterFromGZP"], Cell[179095, 8061, 183, 5, 70, "Input", InitializationCell->True, CellTags->"FilterFromGZP"] }, Closed]], Cell[CellGroupData[{ Cell[179315, 8071, 147, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Butterworth Filters"], Cell[179465, 8076, 418, 7, 70, "Text", Evaluatable->False], Cell[179886, 8085, 141, 9, 70, "Input", Evaluatable->False], Cell[180030, 8096, 275, 5, 70, "Text", Evaluatable->False], Cell[180308, 8103, 200, 5, 70, "Input", InitializationCell->True, CellTags->"ButterworthPoles"], Cell[CellGroupData[{ Cell[180533, 8112, 73, 1, 70, "Input"], Cell[180609, 8115, 408, 12, 70, "Output", Evaluatable->False] }, Open ]], Cell[181032, 8130, 158, 4, 70, "Text", Evaluatable->False], Cell[181193, 8136, 222, 6, 70, "Input", InitializationCell->True, CellTags->"PlotPoles"], Cell[181418, 8144, 199, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[181642, 8152, 86, 1, 70, "Input"], Cell[181731, 8155, 5442, 353, 70, 5284, 348, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[187188, 8511, 144, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[187357, 8519, 97, 1, 70, "Input"], Cell[187457, 8522, 781, 21, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[188275, 8548, 167, 3, 70, "Input"], Cell[188445, 8553, 9338, 528, 70, 9180, 523, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[197798, 9084, 152, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[197975, 9092, 160, 3, 70, "Input"], Cell[198138, 9097, 130, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[198283, 9107, 359, 6, 70, "Text", Evaluatable->False], Cell[198645, 9115, 352, 7, 70, "Input", InitializationCell->True, CellTags->"ButterworthLp"], Cell[199000, 9124, 192, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[199217, 9132, 72, 1, 70, "Input"], Cell[199292, 9135, 857, 25, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[200186, 9165, 87, 1, 70, "Input"], Cell[200276, 9168, 944, 31, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[201257, 9204, 129, 3, 70, "Input"], Cell[201389, 9209, 10121, 578, 70, 9963, 573, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[211559, 9793, 151, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Chebychev Polynomials"], Cell[211713, 9798, 763, 12, 70, "Text", Evaluatable->False], Cell[212479, 9812, 354, 6, 70, "Text", Evaluatable->False], Cell[212836, 9820, 590, 18, 70, "Text", Evaluatable->False], Cell[213429, 9840, 103, 2, 70, "Input", InitializationCell->True], Cell[213535, 9844, 103, 2, 70, "Input", InitializationCell->True], Cell[213641, 9848, 212, 5, 70, "Input", InitializationCell->True, CellTags->"ChebychevPoly"], Cell[CellGroupData[{ Cell[213878, 9857, 70, 1, 70, "Input"], Cell[213951, 9860, 185, 8, 70, "Output", Evaluatable->False] }, Open ]], Cell[214151, 9871, 236, 5, 70, "Text", Evaluatable->False], Cell[214390, 9878, 244, 5, 70, "Input", InitializationCell->True, CellTags->"Chebychev"], Cell[214637, 9885, 180, 5, 70, "Input", InitializationCell->True, CellTags->"ChebychevPoles"], Cell[CellGroupData[{ Cell[214842, 9894, 76, 1, 70, "Input"], Cell[214921, 9897, 577, 16, 70, "Output", Evaluatable->False] }, Open ]], Cell[215513, 9916, 601, 17, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[216139, 9937, 141, 3, 70, "Input"], Cell[216283, 9942, 7076, 429, 70, 6918, 424, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[223374, 10374, 608, 9, 70, "Text", Evaluatable->False], Cell[223985, 10385, 367, 7, 70, "Input", InitializationCell->True, CellTags->"ChebychevLp"], Cell[224355, 10394, 186, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[224566, 10402, 130, 3, 70, "Input"], Cell[224699, 10407, 10746, 585, 70, 10588, 580, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[235460, 10995, 346, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[235831, 11005, 202, 4, 70, "Input"], Cell[236036, 11011, 7947, 481, 70, 7790, 476, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[243998, 11495, 317, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[244340, 11505, 148, 3, 70, "Input"], Cell[244491, 11510, 10143, 565, 70, 9985, 560, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[254671, 12080, 147, 3, 70, "Input"], Cell[254821, 12085, 8777, 477, 70, 8619, 472, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[263647, 12568, 153, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Low Pass Filter Design"], Cell[263803, 12573, 686, 19, 70, "Text", Evaluatable->False], Cell[264492, 12594, 142, 3, 70, "Input", InitializationCell->True], Cell[264637, 12599, 425, 15, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[265087, 12618, 100, 1, 70, "Input"], Cell[265190, 12621, 592, 21, 70, "Output", Evaluatable->False] }, Open ]], Cell[265797, 12645, 448, 15, 70, "Text", Evaluatable->False], Cell[266248, 12662, 250, 6, 70, "Input", InitializationCell->True, CellTags->"LpToLp"], Cell[CellGroupData[{ Cell[266523, 12672, 100, 1, 70, "Input"], Cell[266626, 12675, 399, 14, 70, "Output", Evaluatable->False] }, Open ]], Cell[267040, 12692, 197, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[267262, 12700, 158, 3, 70, "Input"], Cell[267423, 12705, 8227, 474, 70, 8069, 469, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[275665, 13182, 541, 9, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[276231, 13195, 156, 3, 70, "Input"], Cell[276390, 13200, 7401, 422, 70, 7243, 417, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[283840, 13628, 155, 3, 70, "Subsubsection", Evaluatable->False, CellTags->"Other Filter Transforms"], Cell[283998, 13633, 322, 6, 70, "Text", Evaluatable->False], Cell[284323, 13641, 189, 4, 70, "Text", Evaluatable->False], Cell[284515, 13647, 131, 8, 70, "Input", Evaluatable->False], Cell[284649, 13657, 319, 6, 70, "Text", Evaluatable->False], Cell[284971, 13665, 555, 9, 70, "Input", InitializationCell->True, CellTags->"LpToHp"], Cell[285529, 13676, 184, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[285738, 13684, 100, 1, 70, "Input"], Cell[285841, 13687, 381, 14, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[286259, 13706, 162, 3, 70, "Input"], Cell[286424, 13711, 6408, 390, 70, 6250, 385, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[292869, 14106, 160, 3, 70, "Input"], Cell[293032, 14111, 7344, 432, 70, 7186, 427, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[300391, 14546, 340, 6, 70, "Text", Evaluatable->False], Cell[300734, 14554, 171, 9, 70, "Input", Evaluatable->False], Cell[300908, 14565, 621, 18, 70, "Text", Evaluatable->False], Cell[301532, 14585, 258, 6, 70, "Input", InitializationCell->True, CellTags->"BpTransform"], Cell[CellGroupData[{ Cell[301815, 14595, 134, 3, 70, "Input"], Cell[301952, 14600, 543, 16, 70, "Output", Evaluatable->False] }, Open ]], Cell[302510, 14619, 635, 10, 70, "Input", InitializationCell->True, CellTags->"LpToBp"], Cell[CellGroupData[{ Cell[303170, 14633, 93, 1, 70, "Input"], Cell[303266, 14636, 657, 19, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[303960, 14660, 144, 3, 70, "Input"], Cell[304107, 14665, 9710, 559, 70, 9552, 554, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[313832, 15227, 322, 6, 70, "Text", Evaluatable->False], Cell[314157, 15235, 171, 9, 70, "Input", Evaluatable->False], Cell[314331, 15246, 254, 5, 70, "Text", Evaluatable->False], Cell[314588, 15253, 806, 26, 70, "Text", Evaluatable->False], Cell[315397, 15281, 127, 7, 70, "Input", Evaluatable->False], Cell[315527, 15290, 260, 6, 70, "Input", InitializationCell->True, CellTags->"BrTransform"], Cell[315790, 15298, 175, 4, 70, "Input", InitializationCell->True, CellTags->"BrExtraRoots"], Cell[315968, 15304, 705, 12, 70, "Input", InitializationCell->True, CellTags->"LpToBr"], Cell[CellGroupData[{ Cell[316698, 15320, 93, 1, 70, "Input"], Cell[316794, 15323, 826, 24, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[317657, 15352, 142, 3, 70, "Input"], Cell[317802, 15357, 8876, 502, 70, 8718, 497, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[326715, 15864, 144, 3, 70, "Input"], Cell[326862, 15869, 10173, 583, 70, 10015, 578, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[337084, 16458, 167, 4, 70, "Subsubsection", Evaluatable->False, CellTags->"DeCarlo s Test Cases"], Cell[337254, 16464, 263, 5, 70, "Text", Evaluatable->False], Cell[337520, 16471, 204, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[337749, 16479, 72, 1, 70, "Input"], Cell[337824, 16482, 857, 25, 70, "Output", Evaluatable->False] }, Open ]], Cell[338696, 16510, 102, 2, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[338823, 16516, 91, 1, 70, "Input"], Cell[338917, 16519, 131, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[339085, 16531, 88, 1, 70, "Input"], Cell[339176, 16534, 851, 25, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[340064, 16564, 104, 1, 70, "Input"], Cell[340171, 16567, 131, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[340339, 16579, 158, 3, 70, "Input"], Cell[340500, 16584, 10107, 555, 70, 9949, 550, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[350622, 17142, 227, 5, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[350874, 17151, 73, 1, 70, "Input"], Cell[350950, 17154, 681, 20, 70, "Output", Evaluatable->False] }, Open ]], Cell[351646, 17177, 356, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[352027, 17187, 184, 4, 70, "Input"], Cell[352214, 17193, 8600, 487, 70, 8442, 482, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[360829, 17683, 180, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[361034, 17691, 71, 1, 70, "Input"], Cell[361108, 17694, 392, 15, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[361537, 17714, 87, 1, 70, "Input"], Cell[361627, 17717, 133, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[361775, 17727, 186, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[361986, 17735, 72, 1, 70, "Input"], Cell[362061, 17738, 358, 12, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[362456, 17755, 91, 1, 70, "Input"], Cell[362550, 17758, 135, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[362700, 17768, 199, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[362924, 17776, 88, 1, 70, "Input"], Cell[363015, 17779, 343, 12, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[363395, 17796, 104, 1, 70, "Input"], Cell[363502, 17799, 107, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[363646, 17810, 162, 3, 70, "Input"], Cell[363811, 17815, 6408, 390, 70, 6250, 385, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[370234, 18208, 224, 5, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[370483, 18217, 93, 1, 70, "Input"], Cell[370579, 18220, 657, 19, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[371273, 18244, 110, 2, 70, "Input"], Cell[371386, 18248, 130, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[371553, 18260, 169, 4, 70, "Input"], Cell[371725, 18266, 8959, 521, 70, 8801, 516, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[380699, 18790, 231, 5, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[380955, 18799, 93, 1, 70, "Input"], Cell[381051, 18802, 826, 24, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[381914, 18831, 110, 2, 70, "Input"], Cell[382027, 18835, 107, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[382171, 18846, 169, 4, 70, "Input"], Cell[382343, 18852, 8856, 502, 70, 8698, 497, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[391272, 19362, 247, 7, 31, "Section", Evaluatable->False, PageBreakAbove->True, CellTags->{ "Discrete Time Filters", "Discrete Time Filter Design", "Continuous Time Filter Design"}], Cell[391522, 19371, 481, 8, 94, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[392028, 19383, 166, 3, 46, "Subsection", Evaluatable->False, CellTags->"Polynomial Evaluation Utilities"], Cell[392197, 19388, 1311, 44, 70, "Text", Evaluatable->False], Cell[393511, 19434, 695, 19, 70, "Text", Evaluatable->False], Cell[394209, 19455, 191, 5, 70, "Input", InitializationCell->True, CellTags->"PolyCoeff"], Cell[394403, 19462, 697, 23, 70, "Text", Evaluatable->False], Cell[395103, 19487, 243, 5, 70, "Input", InitializationCell->True, CellTags->"MakePoly"], Cell[395349, 19494, 415, 13, 70, "Text", Evaluatable->False], Cell[395767, 19509, 146, 3, 70, "Input", InitializationCell->True, CellTags->"FilterEval"], Cell[395916, 19514, 171, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[396112, 19522, 81, 1, 70, "Input"], Cell[396196, 19525, 162, 7, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[396395, 19537, 73, 1, 70, "Input"], Cell[396471, 19540, 105, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[396591, 19549, 608, 21, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[397224, 19574, 105, 1, 70, "Input"], Cell[397332, 19577, 212, 11, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[397581, 19593, 75, 1, 70, "Input"], Cell[397659, 19596, 114, 8, 70, "Output", Evaluatable->False] }, Open ]], Cell[397788, 19607, 1056, 36, 70, "Text", Evaluatable->False], Cell[398847, 19645, 172, 4, 70, "Input", InitializationCell->True, CellTags->"GetSolution"], Cell[399022, 19651, 246, 6, 70, "Input", InitializationCell->True, CellTags->"RationalPoles"], Cell[399271, 19659, 244, 6, 70, "Input", InitializationCell->True, CellTags->"RationalZeros"], Cell[399518, 19667, 181, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[399724, 19675, 76, 1, 70, "Input"], Cell[399803, 19678, 240, 10, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[400080, 19693, 76, 1, 70, "Input"], Cell[400159, 19696, 123, 6, 70, "Output", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[400331, 19708, 156, 3, 30, "Subsection", Evaluatable->False, CellTags->"Digital Filter Design Equations"], Cell[400490, 19713, 161, 4, 30, "Text", Evaluatable->False], Cell[400654, 19719, 224, 5, 46, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[400903, 19728, 80, 1, 27, "Input"], Cell[400986, 19731, 154, 8, 43, "Output", Evaluatable->False] }, Open ]], Cell[401155, 19742, 137, 3, 30, "Text", Evaluatable->False], Cell[401295, 19747, 162, 3, 27, "Input", InitializationCell->True, CellTags->"EpsilonFromTauFS"], Cell[401460, 19752, 289, 5, 62, "Text", Evaluatable->False], Cell[401752, 19759, 193, 5, 42, "Input", InitializationCell->True, CellTags->"FirstOrderFromTau"], Cell[401948, 19766, 145, 4, 30, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[402118, 19774, 85, 1, 27, "Input"], Cell[402206, 19777, 143, 7, 25, "Output", Evaluatable->False] }, Open ]], Cell[402364, 19787, 155, 4, 30, "Text", Evaluatable->False], Cell[402522, 19793, 189, 5, 42, "Input", InitializationCell->True, CellTags->"FirstOrderFromCorner"], Cell[402714, 19800, 187, 4, 46, "Text", Evaluatable->False], Cell[402904, 19806, 330, 6, 102, "Input", InitializationCell->True, CellTags->"SecondOrderFromCenterQ"], Cell[403237, 19814, 539, 16, 96, "Text", Evaluatable->False], Cell[403779, 19832, 181, 5, 42, "Input", InitializationCell->True, CellTags->"FilterGain"], Cell[403963, 19839, 756, 28, 48, "Text", Evaluatable->False], Cell[404722, 19869, 169, 4, 42, "Input", InitializationCell->True, CellTags->"FilterMag"], Cell[404894, 19875, 173, 4, 42, "Input", InitializationCell->True, CellTags->"FilterPhase"], Cell[405070, 19881, 164, 4, 42, "Input", InitializationCell->True, CellTags->"FilterDb"], Cell[405237, 19887, 414, 15, 48, "Text", Evaluatable->False], Cell[405654, 19904, 172, 4, 42, "Input", InitializationCell->True, CellTags->"AdjustGain"], Cell[405829, 19910, 642, 18, 80, "Text", Evaluatable->False], Cell[406474, 19930, 203, 5, 42, "Input", InitializationCell->True, CellTags->"MakeFilter"], Cell[406680, 19937, 397, 13, 32, "Text", Evaluatable->False], Cell[407080, 19952, 346, 7, 132, "Input", InitializationCell->True, CellTags->"FreqResponse"], Cell[407429, 19961, 149, 4, 30, "Text", Evaluatable->False], Cell[407581, 19967, 326, 7, 102, "Input", InitializationCell->True, CellTags->"PhaseResponse"], Cell[407910, 19976, 239, 5, 46, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[408174, 19985, 140, 3, 57, "Input"], Cell[408317, 19990, 200, 10, 43, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[408554, 20005, 84, 1, 27, "Input"], Cell[408641, 20008, 14867, 555, 179, 7744, 462, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[423523, 20566, 389, 13, 32, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[423937, 20583, 108, 2, 42, "Input"], Cell[424048, 20587, 133, 7, 25, "Output", Evaluatable->False] }, Open ]], Cell[424196, 20597, 162, 4, 30, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[424383, 20605, 157, 3, 72, "Input"], Cell[424543, 20610, 320, 12, 52, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[424900, 20627, 85, 1, 27, "Input"], Cell[424988, 20630, 15664, 543, 179, 7521, 437, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[440667, 21176, 125, 2, 30, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[440817, 21182, 156, 3, 72, "Input"], Cell[440976, 21187, 316, 11, 52, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[441329, 21203, 85, 1, 27, "Input"], Cell[441417, 21206, 16240, 603, 179, 8582, 503, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[457672, 21812, 527, 8, 94, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[458224, 21824, 319, 5, 162, "Input"], Cell[458546, 21831, 18544, 720, 287, 8613, 592, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[477105, 22554, 431, 7, 78, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[477561, 22565, 234, 5, 19, "Input", CellOpen->False], Cell[477798, 22572, 34408, 1292, 179, 22429, 1139, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[512255, 23870, 156, 3, 30, "Subsection", Evaluatable->False, CellTags->"Time Domain Implementation"], Cell[512414, 23875, 126, 2, 30, "Text", Evaluatable->False], Cell[512543, 23879, 356, 15, 95, "Input", Evaluatable->False], Cell[512902, 23896, 180, 4, 46, "Text", Evaluatable->False], Cell[513085, 23902, 97590, 1731, 302, 78716, 1493, "GraphicsData", "PostScript", "Graphics", Evaluatable->False], Cell[610678, 25635, 180, 4, 46, "Text", Evaluatable->False], Cell[610861, 25641, 1160, 18, 462, "Input", InitializationCell->True, CellTags->"FindImpulseResponse"], Cell[612024, 25661, 134, 3, 30, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[612183, 25668, 86, 1, 27, "Input"], Cell[612272, 25671, 370, 12, 43, "Output", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[612691, 25689, 138, 3, 30, "Subsection", Evaluatable->False, CellTags->"Digital Test Code"], Cell[612832, 25694, 144, 4, 30, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[613001, 25702, 117, 2, 42, "Input"], Cell[613121, 25706, 283, 9, 34, "Output", Evaluatable->False] }, Open ]], Cell[613419, 25718, 184, 4, 46, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[613628, 25726, 133, 3, 42, "Input"], Cell[613764, 25731, 17656, 564, 179, 7470, 433, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[631435, 26298, 331, 6, 62, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[631791, 26308, 104, 1, 27, "Input"], Cell[631898, 26311, 207, 9, 34, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[632142, 26325, 78, 1, 27, "Input"], Cell[632223, 26328, 251, 8, 25, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[632511, 26341, 125, 3, 42, "Input"], Cell[632639, 26346, 6982, 423, 179, 6824, 418, "GraphicsData", "PostScript", "Graphics", Evaluatable->False, ImageCacheValid->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[639670, 26775, 174, 3, 30, "Subsection", Evaluatable->False, CellTags->"Analog to Digital Filter Conversion"], Cell[639847, 26780, 368, 6, 70, "Text", Evaluatable->False], Cell[640218, 26788, 556, 9, 70, "Text", Evaluatable->False], Cell[640777, 26799, 1009, 22, 70, "Text", Evaluatable->False], Cell[641789, 26823, 714, 12, 70, "Input", InitializationCell->True, CellTags->"GroupRoots"], Cell[CellGroupData[{ Cell[642528, 26839, 106, 1, 70, "Input"], Cell[642637, 26842, 1108, 31, 70, "Output", Evaluatable->False] }, Open ]], Cell[643760, 26876, 1177, 36, 70, "Text", Evaluatable->False], Cell[644940, 26914, 189, 5, 70, "Input", InitializationCell->True, CellTags->"DeletePole"], Cell[CellGroupData[{ Cell[645154, 26923, 75, 1, 70, "Input"], Cell[645232, 26926, 109, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[645356, 26935, 236, 6, 70, "Input", InitializationCell->True, CellTags->"EvaluateGZP"], Cell[CellGroupData[{ Cell[645617, 26945, 83, 1, 70, "Input"], Cell[645703, 26948, 192, 9, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[645932, 26962, 81, 1, 70, "Input"], Cell[646016, 26965, 109, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[646162, 26976, 92, 1, 70, "Input"], Cell[646257, 26979, 109, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[646381, 26988, 214, 5, 70, "Input", InitializationCell->True, CellTags->"FindResidue"], Cell[CellGroupData[{ Cell[646620, 26997, 82, 1, 70, "Input"], Cell[646705, 27000, 109, 6, 70, "Output", Evaluatable->False] }, Open ]], Cell[646829, 27009, 514, 16, 70, "Text", Evaluatable->False], Cell[647346, 27027, 441, 8, 70, "Input", InitializationCell->True, CellTags->"PartialExpand"], Cell[CellGroupData[{ Cell[647812, 27039, 86, 1, 70, "Input"], Cell[647901, 27042, 141, 8, 70, "Output", Evaluatable->False] }, Open ]], Cell[648057, 27053, 246, 6, 70, "Input", InitializationCell->True, CellTags->"PartialFractions"], Cell[CellGroupData[{ Cell[648328, 27063, 86, 1, 70, "Input"], Cell[648417, 27066, 198, 9, 70, "Output", Evaluatable->False] }, Open ]], Cell[648630, 27078, 300, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[648955, 27088, 91, 1, 70, "Input"], Cell[649049, 27091, 1520, 42, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[650606, 27138, 132, 3, 70, "Input"], Cell[650741, 27143, 10020, 575, 70, 9862, 570, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[660776, 27721, 202, 4, 70, "Text", Evaluatable->False], Cell[660981, 27727, 236, 12, 70, "Input", Evaluatable->False], Cell[661220, 27741, 547, 9, 70, "Text", Evaluatable->False], Cell[661770, 27752, 616, 11, 70, "Input", InitializationCell->True, CellTags->"StandardZExpand"], Cell[662389, 27765, 263, 6, 70, "Input", InitializationCell->True, CellTags->"StandardZTransform"], Cell[CellGroupData[{ Cell[662677, 27775, 134, 3, 70, "Input"], Cell[662814, 27780, 1036, 31, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[663887, 27816, 184, 3, 70, "Input"], Cell[664074, 27821, 8667, 488, 70, 8509, 483, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[672778, 28314, 185, 3, 70, "Input"], Cell[672966, 28319, 8934, 515, 70, 8776, 510, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[681915, 28837, 606, 10, 70, "Text", Evaluatable->False], Cell[682524, 28849, 919, 25, 70, "Text", Evaluatable->False], Cell[683446, 28876, 183, 4, 70, "Text", Evaluatable->False], Cell[683632, 28882, 198, 10, 70, "Input", Evaluatable->False], Cell[683833, 28894, 902, 21, 70, "Text", Evaluatable->False], Cell[684738, 28917, 167, 4, 70, "Input", InitializationCell->True, CellTags->"BilinearPreWarp"], Cell[CellGroupData[{ Cell[684930, 28925, 95, 1, 70, "Input"], Cell[685028, 28928, 7585, 467, 70, 7427, 462, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[692650, 29400, 72, 1, 70, "Input"], Cell[692725, 29403, 358, 12, 70, "Output", Evaluatable->False] }, Open ]], Cell[693098, 29418, 310, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[693433, 29428, 180, 4, 70, "Input"], Cell[693616, 29434, 649, 19, 70, "Output", Evaluatable->False] }, Open ]], Cell[694280, 29456, 152, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[694457, 29464, 109, 2, 70, "Input"], Cell[694569, 29468, 7550, 434, 70, 7392, 429, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[702134, 29905, 336, 12, 70, "Text", Evaluatable->False], Cell[702473, 29919, 169, 4, 70, "Input", InitializationCell->True, CellTags->"BilinearExpand"], Cell[702645, 29925, 633, 11, 70, "Input", InitializationCell->True, CellTags->"BilinearZTransform"], Cell[703281, 29938, 148, 4, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[703454, 29946, 110, 2, 70, "Input"], Cell[703567, 29950, 756, 22, 70, "Output", Evaluatable->False] }, Open ]], Cell[704338, 29975, 997, 31, 70, "Text", Evaluatable->False], Cell[705338, 30008, 308, 6, 70, "Input", InitializationCell->True, CellTags->"GrabPair"], Cell[705649, 30016, 219, 5, 70, "Input", InitializationCell->True, CellTags->"DropPair"], Cell[705871, 30023, 692, 11, 70, "Input", InitializationCell->True, CellTags->"SosFromBilinearGZP"], Cell[706566, 30036, 314, 6, 70, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[706905, 30046, 101, 1, 70, "Input"], Cell[707009, 30049, 685, 26, 70, "Output", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[707731, 30080, 86, 1, 70, "Input"], Cell[707820, 30083, 8490, 461, 70, 8332, 456, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[716347, 30549, 87, 1, 70, "Input"], Cell[716437, 30552, 7661, 458, 70, 7503, 453, "GraphicsData", "PostScript", "Graphics", Evaluatable->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[724147, 31016, 124, 3, 30, "Subsection", Evaluatable->False, CellTags->"Digital Test Code"], Cell[724274, 31021, 245, 5, 87, "Input", InitializationCell->True], Cell[724522, 31028, 240, 5, 87, "Input", InitializationCell->True], Cell[724765, 31035, 183, 4, 57, "Input", InitializationCell->True], Cell[724951, 31041, 177, 4, 57, "Input", InitializationCell->True], Cell[725131, 31047, 191, 4, 57, "Input", InitializationCell->True], Cell[725325, 31053, 191, 4, 57, "Input", InitializationCell->True], Cell[725519, 31059, 270, 5, 102, "Input", InitializationCell->True], Cell[725792, 31066, 269, 5, 70, "Input", InitializationCell->True], Cell[726064, 31073, 274, 5, 70, "Input", InitializationCell->True], Cell[726341, 31080, 313, 6, 70, "Input", InitializationCell->True], Cell[726657, 31088, 387, 7, 70, "Input", InitializationCell->True], Cell[727047, 31097, 209, 4, 70, "Input", InitializationCell->True], Cell[727259, 31103, 230, 5, 70, "Input", InitializationCell->True], Cell[727492, 31110, 212, 4, 70, "Input", InitializationCell->True], Cell[727707, 31116, 218, 4, 70, "Input", InitializationCell->True], Cell[727928, 31122, 283, 5, 70, "Input", InitializationCell->True], Cell[728214, 31129, 283, 5, 102, "Input", InitializationCell->True], Cell[728500, 31136, 486, 8, 207, "Input", InitializationCell->True], Cell[728989, 31146, 252, 5, 87, "Input", InitializationCell->True], Cell[729244, 31153, 342, 6, 147, "Input", InitializationCell->True], Cell[729589, 31161, 326, 6, 117, "Input", InitializationCell->True] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[729964, 31173, 125, 3, 31, "Section", Evaluatable->False, CellTags->"Acknowledgements"], Cell[730092, 31178, 206, 4, 70, "Text", Evaluatable->False] }, Closed]], Cell[CellGroupData[{ Cell[730335, 31187, 113, 3, 31, "Section", Evaluatable->False, CellTags->"References"], Cell[730451, 31192, 425, 13, 70, "Text", Evaluatable->False], Cell[730879, 31207, 592, 18, 70, "Text", Evaluatable->False], Cell[731474, 31227, 528, 17, 70, "Text", Evaluatable->False], Cell[732005, 31246, 283, 5, 70, "Text", Evaluatable->False], Cell[732291, 31253, 464, 15, 70, "Text", Evaluatable->False], Cell[732758, 31270, 800, 21, 70, "Text", Evaluatable->False], Cell[733561, 31293, 567, 17, 70, "Text", Evaluatable->False] }, Closed]], Cell[CellGroupData[{ Cell[734165, 31315, 108, 3, 31, "Section", Evaluatable->False, CellTags->"References"], Cell[734276, 31320, 2162, 31, 70, "Input"] }, Closed]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)