SignalProcessing - Maple Programming Help

Home : Support : Online Help : Science and Engineering : Signal Processing : Filtering : SignalProcessing/GenerateButterworthTaps

SignalProcessing

 GenerateButterworthTaps
 generate a taps array for a Butterworth infinite impulse response filter
 GenerateChebyshev1Taps
 generate a taps array for a Chebyshev Type 1 infinite impulse response filter

 Calling Sequence GenerateButterworthTaps( order, freq ) GenerateChebyshev1Taps( order, freq, ripple )

Parameters

 order - integer[1..12], order of the filter to generate freq - realcons, the cutoff frequency for a low-pass or high-pass filter; f must satisfy 0 < f and f < 1/2. ripple - realcons, ripple in the pass band for Chebyshev1 filters

Options

 • filtertype : "lowpass" or "highpass", the type of filter (can also be specified as a name)
 • normalize : truefalse, whether to normalize
 • container : Array, predefined Array for holding the result

Description

 • The GenerateButterworthTaps( order, freq ) command generates a taps array for an order order Butterworth filter with cutoff frequency freq.  The resulting taps array may be used with the command InfiniteImpulseResponseFilter to effect filtering operations on a sample.
 • The GenerateChebyshev1Taps( order, freq, ripple ) command generates a taps array for an order order Chebyshev1 filter with cutoff frequency freq.  The resulting array may be used with the command InfiniteImpulseResponseFilter to effect filtering operations on a sample.
 • For both commands, the resulting taps array has 2*(order + 1) elements.
 • The cutoff frequency freq must be strictly positive and less than $\frac{1}{2}$.
 • The ripple argument specifies the possible ripple in the pass band for Chebyshev1 filters.  Its value must be positive and less than $29$.
 • Specify the type of filter with the filtertype option.  It can take either of the values "lowpass" and "highpass".  The default value is "lowpass". The values can also be specified as the names lowpass or highpass.
 • The normalize option specifies whether to normalize the filter coefficients produced, and can either of the values true or false.  The default is normalize = true.
 • If the container=C option is provided, then the results are put into C and C is returned. With this option, no additional memory is allocated to store the result. The container must be an Array of size 2*(order+1) having datatype float[8].

 • The SignalProcessing[GenerateButterworthTaps] and SignalProcessing[GenerateChebyshev1Taps] commands are thread-safe as of Maple 17.

Examples

 > with( SignalProcessing ):
 > GenerateButterworthTaps( 4, 0.1 );
 $\left[\begin{array}{cccccccccc}0.004824343357716232& 0.019297373430864927& 0.02894606014629739& 0.019297373430864927& 0.004824343357716232& 1.0& -2.3695130071820376& 2.31398841441588& -1.0546654058785676& 0.18737949236818494\end{array}\right]$ (1)
 > C := Array( 1 .. 10, datatype = float[ 8 ], order = C_order ):
 > GenerateButterworthTaps( 4, 0.1, container = C );
 $\left[\begin{array}{cccccccccc}0.004824343357716232& 0.019297373430864927& 0.02894606014629739& 0.019297373430864927& 0.004824343357716232& 1.0& -2.3695130071820376& 2.31398841441588& -1.0546654058785676& 0.18737949236818494\end{array}\right]$ (2)
 > C;
 $\left[\begin{array}{cccccccccc}0.004824343357716232& 0.019297373430864927& 0.02894606014629739& 0.019297373430864927& 0.004824343357716232& 1.0& -2.3695130071820376& 2.31398841441588& -1.0546654058785676& 0.18737949236818494\end{array}\right]$ (3)
 > GenerateButterworthTaps( 9, 300/1000, filtertype = "highpass" );
 $\left[\begin{array}{cccccccccccccccccccc}0.0010653945235978043& -0.00958855071238024& 0.03835420284952096& -0.08949313998221556& 0.13423970997332335& -0.13423970997332335& 0.08949313998221556& -0.03835420284952096& 0.00958855071238024& -0.0010653945235978043& 1.0& 1.791581352788599& 2.5318998808981164& 2.118229420341918& 1.3707562943932108& 0.6090389130764522& 0.19933155696294377& 0.04310473101527608& 0.005804261654307692& 0.00035558060425748875\end{array}\right]$ (4)
 > GenerateChebyshev1Taps( 4, 0.2, 3 );
 $\left[\begin{array}{cccccccccc}0.015556732335765735& 0.06222692934306294& 0.0933403940145944& 0.06222692934306294& 0.015556732335765735& 1.0& -1.9326699462723567& 2.2553963376268102& -1.45623417849859& 0.48509928307879135\end{array}\right]$ (5)
 > C := Array( 1 .. 10, 'datatype' = float[ 8 ], order = C_order ):
 > GenerateChebyshev1Taps( 4, 0.2, 3, container = C );
 $\left[\begin{array}{cccccccccc}0.015556732335765735& 0.06222692934306294& 0.0933403940145944& 0.06222692934306294& 0.015556732335765735& 1.0& -1.9326699462723567& 2.2553963376268102& -1.45623417849859& 0.48509928307879135\end{array}\right]$ (6)
 > C;
 $\left[\begin{array}{cccccccccc}0.015556732335765735& 0.06222692934306294& 0.0933403940145944& 0.06222692934306294& 0.015556732335765735& 1.0& -1.9326699462723567& 2.2553963376268102& -1.45623417849859& 0.48509928307879135\end{array}\right]$ (7)
 > GenerateChebyshev1Taps( 5, 0.4, 15, filtertype = "highpass" );
 $\left[\begin{array}{cccccccccccc}0.00003473072875775224& -0.0001736536437887612& 0.0003473072875775224& -0.0003473072875775224& 0.0001736536437887612& -0.00003473072875775224& 1.0& 4.442411242716592& 8.330401102247667& 8.213587936576669& 4.256290410642678& 0.9295809502768357\end{array}\right]$ (8)
 >

Compatibility

 • The SignalProcessing[GenerateButterworthTaps] and SignalProcessing[GenerateChebyshev1Taps] commands were introduced in Maple 17.