SETTING METHOD OF FILTER COEFFICIENTS AND RELATED FILTER DEVICE

20240106416 ยท 2024-03-28

    Inventors

    Cpc classification

    International classification

    Abstract

    The present invention discloses a method for determining FIR digital filter coefficients providing a compensated amplitude response of a conventional windowing filter. The compensation allows independent control of passband and stopband specifications, while narrowing the transition bandwidths. The method comprises the steps of summing an auxiliary impulse response to a windowing impulse response, wherein the auxiliary impulse response has a phase response identical to that of the windowing impulse response, and an amplitude response comprising frequency shifted pulses positioned to induce the required compensation. The summing is followed by a modulation with a discrete time function to obtain the filter impulse response. The invention discloses a characterization of the pulse compensation on the amplitude response, a filter design method and computer program based on this characterization. The invention discloses an FIR filter device with coefficients set by this method.

    Claims

    1. A method for setting the filter coefficients of an FIR digital filter, with the coefficients being equivalent to the impulse response of the filter, the method comprising the steps of: a) obtaining the ideal impulse response of an idealized model for the desired digital filter; b) applying a window function to said ideal impulse response, thereby obtaining a windowed finite impulse response; c) selecting an auxiliary impulse response characterized by having a finite length that is adjustable to match the length of said windowed finite impulse response, the auxiliary impulse response also producing a transfer function having a phase response that is identical to the phase response of the transfer function of the said windowed finite impulse response, the said transfer function of the auxiliary impulse response also having an amplitude response comprising a plurality of pulses, or the sum or difference thereof, wherein said pulses are characterized by having switchable polarities, adjustable amplitudes, adjustable widths, and adjustable frequency-shifts; d) summing said auxiliary impulse response and windowed impulse response, thereby obtaining a compensated impulse response; e) applying a discrete time modulation function to the compensated impulse response to obtain the impulse response of the filter, wherein said modulation does not exclude using an identity modulation; f) setting the mathematical parameters of the impulse response of the filter; g) setting the filter coefficients of the FIR filter equal to the impulse response of the filter.

    2. A method as claimed in claim 1, wherein the impulse response of the FIR filter is obtained by a method comprising of: a) summing the transfer function of the windowed impulse response and the transfer function of the auxiliary impulse response, thereby obtaining the compensated transfer function; b) convolving the compensated transfer function with the DTFT of the discrete time modulation function, thereby obtaining the transfer function of the filter; c) calculating the impulse response of the filter as the IDTFT of the transfer function of the filter.

    3. A method as claimed in claim 1, wherein the transfer function of the auxiliary impulse response has an amplitude response comprising a plurality of an individual mathematical functional form of a pulse, the pulse being the frequency shifted DTFT of a window function, with one or more pulses being used for each transition band in the amplitude response of the windowed impulse response.

    4. A method as claimed in claim 3, wherein the auxiliary impulse response, upon summing with the windowed impulse response, has the effect of: a) increasing the magnitude of the slope in the transition bands of the amplitude response of the compensated impulse response; b) modifying the ripple magnitudes in the frequency bands outside the transition bands of the amplitude response of the compensated impulse response.

    5. A method as claimed in claim 4, wherein the transfer function of the auxiliary finite impulse response has one of its zeroes match the frequency of each of the cutoff frequencies in the amplitude response of the windowed impulse response.

    6. A method as claimed in claim 4 or claim 5, wherein the method is further limited by employing only impulse responses that are causal and even symmetric.

    7. A method for determining the characteristics of a linear-phase FIR digital filter based on the method claimed in claim 6, the method for determining the filter characteristics comprising the steps of: a) carrying out a plurality of computer numerical simulations to generate transfer functions of the FIR filter by applying the DTFT to the impulse response of the filter; b) assigning the input parameters to the simulations to be the set of independent parameters of the mathematical formulation of the method in claim 6 that define the impulse response of the filter, wherein these are identified to be: the length of the windowed impulse response, the cutoff frequencies of the windowed impulse response, the frequency shift parameters and the amplitude parameters of the plurality of pulses of the amplitude response of the auxiliary impulse response, and the input parameters of a windowing design method, wherein the said windowing design method is known in the art, an example of which being the Kaiser window design method; c) producing a plurality of transfer function simulations, wherein the said input parameter values are stepped iteratively, in a discretized selected range that is unique to each parameter, whereby the simulations cover all chosen input parameter combinations, d) calculating the magnitude response for each of the said plurality of transfer functions; e) determining the set of the output filter characteristics for each magnitude response, wherein each output filter characteristics set includes the magnitude of the band gain, the peak to peak ripple, and the transition width, in all bands and transition regions of the amplitude response; f) creating computer data files of the output filter characteristic sets and the input parameters that produce the said output filter characteristic; g) using the created data files to plot families of multi-variable graphs of the interdependence between the input parameters and output characteristics; h) performing graphical analysis on the said graphs by applying a mathematical technique of multi-variable curve fitting, whereby generating a plurality of mathematical interpolation formulae that model the mapping of the input parameters to the output characteristics;

    8. A method for designing a linear-phase FIR digital filter based on the method claimed in claim 7, wherein the FIR filter has a target set of filter specifications, the method for designing the filter comprising the steps of: a) assigning the values of the target set of filter specifications to be a set of output characteristics of the filter, wherein these are used in conjunction with the said multi-variable interpolation formulae to calculate the specific set of said input parameters that will produce the target filter characteristics; d) using the said specific set of input parameters to calculate the impulse response of the filter;

    9. A computer program to design an FIR digital filter based on the method claimed in claim 8, wherein the program is written in any computer program language known in the art.

    10. A computer program to emulate numerically the filtering action of an FIR digital filter based on the method claimed in claim 8, wherein the program is written in any computer program language known in the art.

    11. An FIR digital filter circuit, wherein the filter coefficients are determined by the method claimed in claim 1 or claim 8, the said circuit comprising M cascaded z.sup.?1 time delay units, M+1 filter multipliers, M multipliers being connected to input terminals of the corresponding time delay units and the remaining multiplier being connected to an output terminal of the last time delay unit, and an adder connected to output terminals of the M multipliers.

    Description

    5. DESCRIPTION OF THE PREFERRED EMBODIMENT

    [0067] Detailed embodiments of the preferred mode are described herein; however, it is to be understood that such embodiments are exemplary of the present disclosure, which may be embodied in various alternative forms. Specific process details disclosed herein are not to be interpreted as limiting, but merely as a representative basis for teaching one skilled in the art to variously employ the present disclosure in any appropriate process.

    [0068] The terms used herein are for the purpose of describing exemplary preferred

    [0069] embodiments only and are not intended to be limiting. As used herein, the singular forms a, an, and the are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the described methods and mathematical forms do not preclude the presence or addition of one or more steps, terms or operations other than a mentioned step, term or operation.

    [0070] The embodiments of the present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific example embodiments.

    5.1 The Preferred Embodiment of a Low-Pass Filter

    [0071] The detailed description of the preferred embodiment includes the design of a low-pass filter. But it is understood that the methods and mathematical formulae of the invention are not limited to this filter type only but can be applied as effectively to other types of band selective filters such as high-pass, band-pass band-stop and other designs.

    [0072] A preferred mode for a low-pass filter is to assign h.sub.w[n] to be the rectangular window impulse response applied to equation (4), which becomes

    [00018] h w [ n ] = 2 f c ? sin c ( 2 ? f c ( n - M 2 ) ) = 2 f c ? sin ( 2 ? f c ( n - M 2 ) ) 2 ? f c ( n - M 2 ) ,

    with n running from 0 to M, and f.sub.c being the normalized cutoff frequency (in Hz),

    [00019] f c = ? c 2 ? .

    [0073] Also, a preferred mode is to assign the auxiliary impulse response h.sub.a[n] to be the doublet impulse response given in equation (5), and rewritten here as

    [00020] h a , doublet [ n ] = ? o cos ( 2 ? ( n - M 2 ) f o ) - ? 1 cos ( 2 ? ( n - M 2 ) f 1 ) ( 6 )

    with n running from 0 to M. This impulse response gives an auxiliary amplitude response having the two pairs of Dirichlet pulses for each of the pairs of transition bands, as explained in [0030].

    [0074] The frequency shifts f.sub.o and f.sub.1 appearing in equation (6) are assigned the values

    [00021] f o = f c - 1 M + 1 and f 1 = f c - 2 M + 1 .

    to make both the first zero of the first pulse, and the second zero of the inverted second pulse to coincide in frequency with the cutoff frequency f.sub.c.

    [0075] To exemplify the action of the auxiliary impulse response embodiment, reference is made to FIG. 3a, with expanded view for positive frequencies in FIG. 3b. They illustrate the zero-frequency amplitude responses of the impulse responses h.sub.w[n], h.sub.a[n] and the compensated impulse response h.sub.c[n], wherein these amplitude responses have been designated as H.sub.w(?), H.sub.a(?) and H.sub.c(?), respectively. The identical phase relationship among them permits writing H.sub.c(?)=H.sub.w(?)+H.sub.a(?), as explained in [0019]. It is evident from FIG. 3b that H.sub.a(?) has the desired effect of increasing the magnitude of the slope of the compensated response in the transition band. In the figure, the pulse amplitudes have been exaggerated for clarity. Furthermore, the passband ripple is observed to be amplified.

    [0076] The next crucial step in the method is the application of the discrete time modulation m[n], acting as a frequency domain averaging that diminishes both the stopband and the amplified passband ripples of the amplitude response of the filter.

    [0077] Also, a preferred mode is to assign the discrete time modulating function m[n] to be defined as a zeroth-order Bessel function of the first kind (also known as Kaiser window) given in normalized form as:

    [00022] m [ n ] = I o [ ? 1 - ( n - M 2 M 2 ) 2 ] I 0 [ ? ] ,

    with n running from 0 to M, and with I.sub.o being the symbol for the zeroth order Bessel function, ? is a bandwidth parameter, and M is the filter order. Reference is made to the equation h[n]=m[n]?(h.sub.w[n]+h.sub.a[n]) in [0014] which defines the impulse response of the filter h[n] as


    h[n]=m[n]?h.sub.w[n]+m[n]?h.sub.a[n].

    The first term m[n]?h.sub.w[n] , being expanded as

    [00023] m [ n ] ? h w [ n ] = 2 f c I o [ ? 1 - ( n - M 2 M 2 ) 2 ] I 0 [ ? ] ? sin ( 2 ? f c ( n - M 2 ) ) ? ( n - M 2 ) .

    is exactly the impulse response of a low-pass filter of the Kaiser windowing method. The second term m[n]?h.sub.a[n] expanded as

    [00024] m [ n ] ? h a [ n ] = I o [ ? 1 - ( n - M 2 M 2 ) 2 ] I o [ ? ] ? ( ? o cos ( 2 ? ( n - M 2 ) f o ) - ? 1 cos ( 2 ? ( n - M 2 ) f 1 ) ) ,

    gives an amplitude response having two pulses each of which corresponds to a frequency shifted DTFT of the Kaiser window.

    [0078] It is concluded from the description in [0069] that the preferred embodiment under consideration is tantamount to a Kaiser windowing method for a low-pass filter that is compensated by two frequency shifted Kaiser window DTFT pulses in each transition band of the filter. A design method can therefore be pursued based on the Kaiser window design method, which is well known in the art. This method stipulates that a low-pass filter having a stopband attenuation SB and a transition bandwidth ?, can be realized by a filter of order M and window bandwidth parameter ?, being given by the two equations

    [00025] M = S B - 8 . 0 2 . 2 8 5 ? ? = { 0.11 0 2 ( S B - 8 .7 ) SB > 50 0.58 4 2 ( S B - 2 1 ) 0.4 + 0 . 0 7 8 8 6 ( S B - 21 ) 21 ? SB ? 5 0 0. SB ? 21 .

    The Kaiser window filter passband ripple is designated PB.sub.K, and is given by the expression, PB.sub.K=20 log(1+?) with

    [00026] ? = 1 0 - S B 2 0 .

    [0079] The inclusion of the auxiliary doublet pulses in the amplitude response of the Kaiser window filter has the effect of narrowing the transition bandwidth ?, and increasing the stopband attenuation SB for a wide range of design values. This occurs at the expense of introducing exactly one prominent passband ripple cycle at the transition band edge, wherein the ripple is larger in magnitude than the characteristic Kaiser window filter passband ripples. This is something that can be tolerated to a certain extent as explained in [0009].

    5.1.1 Characterization of a Filter

    [0080] Also, the preferred embodiment outlines a method for quantifying the effect of the doublet pulse amplitude parameters ?.sub.o and ?.sub.1 on the filter characteristics. First, it is emphasized that ?.sub.o, the amplitude of the first pulse, is treated as an independent parameter, while ?.sub.1, being the amplitude of the second pulse, is treated as a dependent parameter related to ?.sub.o by the relation ?.sub.1=??.sub.o. Here, ? is called the symmetry parameter, and has a typical value in the range 0.3-0.7, being also dependent on SB. According to the present embodiment, ? is adjusted such that the two opposite peaks of the said prominent single passband ripple are symmetrical about their mean passband value.

    [0081] Also, the preferred embodiment includes performing computer simulations for calculating the filter transfer function {tilde over (H)}(e.sup.j?) from the filter impulse response h[n] by applying the DTFT, from which the magnitude response |{tilde over (H)}(e.sup.j?)| is calculated. The filter characteristics comprises the filter's actual passband ripple peak PB.sub.out, the actual transition bandwidth ?.sub.out and the actual stopband attenuation SB.sub.out. These characteristics are determined from the magnitude response |{tilde over (H)}(e.sup.j?)| by using numerical techniques. The magnitude response |{tilde over (H)}(e.sup.j?)|, being equal to |H(?)|, is preferred over the zero-frequency amplitude response H(?) for the purpose of calculating the characteristics because |{tilde over (H)}(e.sup.j?)| is positive definite, thus enabling the use of the standard dB logarithmic scale.

    [0082] In this preferred embodiment, a broad set of filter characteristics is obtained by iterating the Kaiser window design parameter values SB, ? and the auxiliary parameter ?.sub.o, while running the said simulations for the transfer function, and calculating and recording the actual (output) filter characteristics PB.sub.out, ?.sub.out and SB.sub.out. The results quantifying the change from the set window filter values to the output values upon the insertion of the auxiliary pulses are given via the fractional change parameters. These are defined as

    [00027] S B F = S B o u t S B , and ? F = ? out ? .

    While for PB.sub.out, it is convenient to give the output value additively via the change in the passband ripple peak PB as


    PB.sub.out=PB+PB.sub.K, or alternatively PB=PB.sub.out?PB.sub.K.

    SB.sub.out, ?.sub.out and PB.sub.out converge to SB, ? and PB.sub.K, respectively, for the case ?.sub.o=0, i.e. when the auxiliary impulse response is zero. The parameters SB, ? and ?.sub.o are stepped in discretized selected ranges that are unique to each parameter. SB is stepped from 35 to 90 dB, ? is stepped from 0.025 to 0.15 Hz, and ?.sub.o is stepped from zero to a value ?.sub.max that produces a maximum of PB.sub.out=0.5 dB (1 dB passband peak to peak ripple). A parameter ?.sub.F is defined as

    [00028] ? F = ? o ? max .

    Being directly proportional to ?.sub.o, ?.sub.F is instrumental in relating the first pulse amplitude parameter ?.sub.o to the change in the peak passband ripple PB. ?.sub.F ranges from 0 to 1, corresponding to a change in PB.sub.out from PB.sub.K to 0.5 dB, wherein PB.sub.K is a small quantity for most simulations, but still non-negligible in general.

    [0083] FIG. 4 illustrates simulation results, wherein a set of relationships between SB.sub.F and PB are plotted for different values of SB. The numbers (35-90) on the curve lines identify the curve line for the indicated value of SB. The graphs are interpreted as meaning that the inclusion of the auxiliary pulses increases SB.sub.F for most simulations, and hence a larger stopband attenuation SB.sub.out of the filter. This is a sought-after effect from the insertion of the auxiliary pulses. The data are plotted as SB.sub.F vs. PB, being convenient for obtaining suitable interpolation equations necessary for the design process. The interpolation equations for SB.sub.F are obtained in a two variable curve fitting process of SB.sub.F (PB, SB) as a function of the two variables PB and SB. It was found that SB.sub.F depends minimally on ?.

    [0084] FIG. 5 illustrates simulation results, wherein a set of relationships between ?.sub.F and PB are plotted for different values of SB. The numbers (35-80) on the curve lines identify the curve line for the indicated value of SB. The graphs are interpreted as meaning that the larger ?.sub.F (the larger the amplitude of the auxiliary pulses) the smaller ?.sub.F , and hence the narrower the transition bandwidth t out of the filter. This is a sought-after effect from the insertion of the auxiliary pulses. The data are plotted as ?.sub.F vs. PB, being convenient for obtaining suitable interpolation equations necessary for the design process. The interpolation equations for ?F are obtained in a two variable curve fitting process of ?.sub.F (PB, SB) as a function of the two variables PB and SB. It was found that ?.sub.F depends minimally on ? itself.

    [0085] FIG. 6 illustrates simulation results, wherein a set of relationships between ?.sub.max (introduced in [0074]) and the transition bandwidth ? are plotted for different values of SB. The numbers (35-90) on the curve lines identify the curve line for the indicated value of SB. The graphs are necessary for determining the pulse amplitudes to use for any specified value of peak passband ripple PB.sub.out. Interpolation equations for ?.sub.max are obtained in a two variable curve fitting process of ?.sub.max(?, SB) as a function of the two variables ? and SB.

    [0086] FIG. 7 illustrates simulation results, wherein a set relationship between PB and

    [0087] the parameter ?.sub.F (introduced in [0066]) are plotted for different values of SB. The numbers (35-90) on the curve lines identify the curve line for the indicated value of SB. It is observed that the larger ?.sub.F the larger the value of PB. The curve lines can be identified in the lower left half of the graph through their linear extension. The data is plotted in transposed form (i.e. ?.sub.F vs. PB), being convenient for obtaining suitable interpolation equations necessary for the design process. The interpolation equations for ?.sub.F are obtained in a two variable curve fitting process of ?.sub.F (PB, SB) as a function of the two variables PB and SB. It was found that ?.sub.F depends minimally on ?.

    [0088] FIG. 8 illustrates simulation results, wherein a set of relationships between the symmetry parameter ? (introduced in [0072]) and PB are plotted for different values of SB. The numbers (35-90) on the curve lines identify the curve line for the indicated value of SB. The graphs are necessary for determining the amplitude of the second pulse necessary to symmetrize the single passband ripple cycle of the doublet design. Interpolation equations for ? are obtained in a two variable curve fitting process of ?(PB,SB) as a function of the two variables PB and SB. It was found that ? depends minimally on ?.

    5.1.2 Filter Design Method

    [0089] The description of the preferred embodiment includes a non-iterative design method that is based on the archived and plotted characteristics for the Kaiser-window-based doublet displayed in FIG. 4-FIG. 8 and the interpolation equations derived from them. The design equations from the preferred description are repeated in the steps listed herein for completeness and for minimizing referencing. The design method, to be performed in the specified order, comprises the steps of: [0090] a) setting the filter target specification PB.sub.in, SB.sub.in, f.sub.p and f.sub.s; [0091] b) setting the filter output characteristics SB.sub.out=SB.sub.in, PB.sub.out=PB.sub.in and ?.sub.out=?.sub.in?f.sub.s?f.sub.p; [0092] c) estimating SB as SB=SB.sub.EST=SB.sub.out, and estimating PB as

    [00029] P B = P B o u t - P B K , EST . = PB o u t - 20 log ( 1 + 1 0 - S B EST . 2 0 ) ; [0093] d) applying interpolation equation SB.sub.F(PB,SB.sub.EST.) of FIG. 4 to find SB.sub.F and resetting

    [00030] SB = S B o u t S B F , and PB = PB o u t - 20 log ( 1 + 1 0 - S B 2 0 ) ; [0094] e) applying interpolation equation ?.sub.F(PB,SB) of FIG. 5 to find

    [00031] ? = ? o u t ? F ; [0095] f) applying interpolation equation ?.sub.max(?,SB) of FIG. 6 to find ?.sub.max; [0096] g) applying interpolation equation ?.sub.F(PB,SB) of FIG. 7 to find ?.sub.o=?.sub.F??.sub.max; [0097] h) applying interpolation equation ?(PB,SB) of FIG. 8 to find ?.sub.1=???.sub.o; [0098] i) calculating the filter order

    [00032] M = S B - 8 . 0 2 . 2 8 5 ? ; [0099] j) setting the frequency parameters

    [00033] f c = f s - ? 2 , f o = f c - 1 M + 1 and f 1 = f c - 2 M + 1 ; [0100] k) calculating the Kaiser bandwidth parameter

    [00034] ? = { 0.11 0 2 ( S B - 8 .7 ) SB > 50 0.58 4 2 ( S B - 2 1 ) 0.4 + 0 . 0 7 8 8 6 ( S B - 21 ) 21 ? SB ? 5 0 0. SB ? 21 ; [0101] and [0102] l) calculating the impulse response of the filter

    [00035] h [ n ] = I o [ ? 1 - ( n - M 2 M 2 ) 2 ] I o [ ? ] ? ( sin ( 2 ? f c ( n - M 2 ) ) ? ( n - M 2 ) + ? o cos ( 2 ( n - M 2 ) f o ) - ? 1 cos ( 2 ? ( n - M 2 ) f 1 ) ) .

    The referenced interpolation equations in steps d) to h) are included in the computer program description that implements the design method above, where the program being presented in the APPENDIX.

    [0103] The preferred embodiment of the invention also includes a computer program for the design of a doublet type impulse response of a low-pass filter. The executable source code is written in MATHCAD software syntax and is listed in full detail in the APPENDIX.

    5.1.3 Low-Pass Filter Design Example and Results

    [0104] To exemplify the characteristics of the filter and the benefits obtained by the method of this embodiment, the results of a typical design process for a low-pass filter are presented. A typical set of specifications for a low-pass filter are assigned as: [0105] f.sub.S=0.290 Hz; [0106] f.sub.P=0.335 Hz; [0107] stopband attenuation=60 dB; and [0108] passband peak to peak ripple=0.5 dB.
    The design method of the current embodiment proceeds by setting PB.sub.in=0.5 dB, SB.sub.in=60 dB, f.sub.P=0.290 Hz and f.sub.S=0.335 Hz. Although it is not necessary to follow the details of the design parameters to apply the method, since these are automatically generated and applied in the computer program, they are presented here for the purpose of illustration. These are calculated as SB=55.22 dB, ?=0.057 Hz, PB.sub.K=0.015 dB, PB=0.487 dB, and ?=0.5044. In addition, the values of the parameters entering directly into calculation of the impulse response are M=58, ?=5.127, f.sub.c=0.3065 Hz , ?.sub.o=0.00603, ?.sub.1=0.003041, f.sub.1=0.2896 Hz, and f.sub.2=0.2726 Hz.

    [0109] It is instructive to undertake a comparison of the exemplified filter of the preferred embodiment designed above in with filters designed by the two conventional methods referred to in this disclosure, being the Parks-McClellan equiripple and the windowing methods. To achieve this, the two other filter types are designed by their well-known prior art techniques using the same set of specifications listed in [0082].

    [0110] FIG. 9a and FIG. 9b show the linear-scale magnitude responses of the embodiment filter described in [0082] and an equiripple Parks-McClellanfilter designed to have the same specifications, both being plotted on the same graph. The advantage of the preferred embodiment of the invention filter is immediately obvious in the absence of the passband ripple artefact-except for a single symmetrical ripple cycle at the passband edge. The graph shows both magnitude responses to have the same passband peak to peak ripple, the same upper frequency f.sub.p, and almost identical transition band slopes. FIG. 10b is an expanded view of the stopband region showing both filters having the same stopband attenuation, and the same stopband lower frequency f.sub.s. Another visible advantage of the filter of the preferred embodiment of the invention is the larger attenuation in the deep stopband compared to the equiripple filter. The equiripple filter requires 51 taps to implement, whereas the preferred embodiment filter requires 59 taps.

    [0111] FIG. 10a and FIG. 10b show the linear-scale magnitude response of the embodiment filter described in [0082] and an uncompensated Kaiser window filter designed to have the same specifications, both being plotted on the same graph. The window filter shows characteristic flatness in the passband. The two filters show the same passband upper frequency f.sub.p, and the same stopband lower frequency f.sub.s. However, the Kaiser window filter exhibits a larger deviation in the transition band, contributing to about 12% more error signal power being transmitted through the filter. FIG. 11b is an expanded view of the stopband region showing both filters having the same stopband attenuation, and similar deep stopband attenuation behaviour. The Kaiser window filter requires 72 taps, whereas the invention embodiment filter requires 59 taps. In order to reduce the transition band signal energy to the same level as the embodiment filter, the Kaiser window taps would have to be increased to 84.

    [0112] FIG. 11a and FIG. 11b show the dB-scale passband region of the magnitude responses of all three mentioned filters plotted on the same graphs. The characteristics described for each filter type are clearly visible in the graphs. The filters have the same passband tolerance, and a well-defined f.sub.p where all three responses converge. The plot also shows the clear onset of deviation in the transition band slope of the Kaiser windowing response that results in the mentioned transition band error. FIG. 11b expands the responses of the three filters in the stopband region, where all three responses converge again at frequency f.sub.s, thus confirming all three designs to have the same transition bandwidth. The graph also confirms that the three filters have the same stopband attenuation.

    [0113] The table herein provides a comparative summary of the numerical properties of the three filters of figures FIG. 9a,b to FIG. 11a,b:

    TABLE-US-00001 Parks- Kaiser Property McClellan Window Invention passband upper frequency f.sub.p (Hz) 0.2900 0.2900 0.2900 stopband lower frequency f.sub.s(Hz) 0.3350 0.3346 0.3346 stopband attenuation (dB) 60.49 59.95 59.97 passband pk-pk ripple (dB) 0.472 0.502 0.502 transition bandwidth (Hz) 0.0450 0.0446 0.0446 M (for common trans. bandwidth) 50 71 58 M (for common trans. signal error) 50 83 58

    [0114] In order to make a meaningful comparison between the filter tap requirements of the various filters, a reference should be made to the minimum number of taps N.sub.PM needed by the optimal Parks-McClellan equiripple filter that satisfy the specification requirements. We define the savings fraction as

    [00036] savings fraction ? N K W - N I N V N K W - N P M ,

    where N.sub.KW is the number of taps required by the uncompensated Kaiser window filter, and N.sub.INV is the number required by the invention filter embodiment. The larger the savings fraction, the more filter taps that are saved. It was found that the savings depend on the passband ripple and stopband attenuation. FIG. 12 is meant to aid in the decision process for selecting the suitable filter design method as related to the number of taps. In the figure, the abscissa is the stopband attenuation, and the ordinate represents the savings fraction. The dashed lines correspond to peak to peak passband ripple of 1.0 dB, while the solid lines correspond to peak to peak passband ripple passband ripple of 0.5 dB. The lower two lines indicated with BANDWIDTH correspond to Kaiser window filters designed to have the same bandwidth as the invention, whereas the upper two lines indicated with TRANSITION ERROR correspond to Kaiser window filters designed to have the same transition band error signal power.

    5.1.3 Other Applications

    [0115] The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. Examples and limitations disclosed herein are intended to be not limiting in any manner, and modifications may be made without departing from the spirit of the present disclosure. Those skilled in the art will recognize that many variations are possible within the spirit and scope of the disclosure, and their equivalents, in which all terms are to be understood in their broadest possible sense unless otherwise indicated. In the following paragraphs, we set several examples of alternative embodiments.

    [0116] The method of the invention is not limited to using only the Kaiser window but can be applied to any conventional window function. Embodiments were successfully developed for several conventional window functions, wherein the optimal discrete prolate spheroidal sequence (DPSS) window showed the best filter tap efficiency for the same set of specifications. However, the absence of an analytic closed form expression for the DPSS window complicates the design process and makes its utilization more demanding computationally.

    [0117] The design method of the preferred embodiment is not limited to the linear phase low-pass filter type only. Indeed, the method of this embodiment can be thought of a design process for the transition band itself between the bands of a filter, and thus being generalizable to other filter types. By changing the positions and amplitudes of the compensating pulses, it is straightforward for those skilled in the art to adapt the method for designing other filter types. Demonstrations of a band-pass filter and a band-stop filter are shown in FIG.13 and FIG. 14, respectively. In each plot, the magnitude response of the invention filter |H(e.sup.j?)| is plotted alongside that the corresponding uncompensated Kaiser windowing |H.sub.KW(e.sup.j?)| having the same order M.

    [0118] As disclosed in the invention disclosure, the auxiliary pulses are not limited to the doublet scheme of the preferred embodiments, other quantities and sequences of compensating pulses are possible. FIG. 15 shows the passband magnitude responses of the singlet (single compensation pulse) and triplet (three compensation pulses) embodiments of a low-pass filter, along with the fully disclosed doublet embodiment for comparison.

    APPENDIX

    [0119] The appendix lists a computer program code in PTC Mathcad syntax. The program implements the design procedure of the preferred embodiment disclosed in [0089], wherein the corresponding steps are listed in the comments. The program determines the FIR filter coefficients of a linear phase low-pass filter having target specifications. The complete program code comprises of:

    TABLE-US-00002 //comment - step (a) entering the low pass filter target specifications: Pass_Band_Upper_Frequency = 0.290 Stop_Band_Lower_Frequency = 0.335 Pass_Band_Peak_to_Peak_Ripple = 0.5 Stop_Band_Attenuation = 60 //comment - step (b) assigning program variables: SB_in = Stop_Band_Attenuatic fp_in = Pass_Band_Upper_Frequenc fs_in = Stop_Band_Lower_Frequenc: [00037] PB_in = Pass_Band _Peak _to _Peak _Rippl 2 ?_in = fs_in- fp_ir [00038] fc = fp_in + fs_in 2 //comment - step (c) estimating SB and PB: [00039] SB = SB_in ? = 10 - S B 2 0 ?_dB = 20 .Math. log ( 1 + ? ) PB = PB_in - ?_dB //comment - step (d) mapping the target stop band attenuation to the simulation interpolation equations of FIG. 4 and resetting SB and PB: [00040] SB_L = .Math. "\[LeftBracketingBar]" 35 if 35 ? SB < 40 40 if 40 ? SB < 50 50 if 50 ? SB < 60 60 if 60 ? SB < 70 70 if 70 ? SB < 80 80 if 80 ? SB < 90 SB_H = .Math. "\[LeftBracketingBar]" 40 if 35 ? SB < 40 50 if 40 ? SB < 50 60 if 50 ? SB < 60 70 if 60 ? SB < 70 80 if 70 ? SB < 80 90 if 80 ? SB < 90 [00041] SBF_L = .Math. "\[LeftBracketingBar]" 1.00001 + 0.1416 .Math. PB + - 0.28081 .Math. PB 2 + 0.89854 .Math. PB 3 + - 1.95755 .Math. PB 4 + 1.71355 .Math. PB 5 if 35 ? SB < 40 1.00007 + 0.19183 .Math. PB + - 0.48182 .Math. PB 2 + 1.75631 .Math. PB 3 + - 3.31723 .Math. PB 4 + 2.44214 .Math. PB 5 if 40 ? SB < 50 1.00194 + 0.31029 .Math. PB + 2.06735 .Math. PB 2 + - 19.31103 .Math. PB 3 + 66.45816 .Math. PB 4 + - 73.49113 .Math. PB 5 if 50 ? SB < 60 1.00389 + 0.48347 .Math. PB + 4.33844 .Math. PB 2 + - 39.43556 .Math. PB 3 + 98.35123 .Math. PB 4 + - 80.74569 .Math. PB 5 if 60 ? SB < 70 1.007 + 0.58746 .Math. PB + 0.03228 .Math. PB 2 + 2.76098 .Math. PB 3 + - 27.66465 .Math. PB 4 + 37.26344 .Math. PB 5 if 70 ? SB < 80 1.00961 + 1.23535 .Math. PB + - 6.37689 .Math. PB 2 + 6.51669 .Math. PB 3 + 14.00084 .Math. PB 4 + - 23.83482 .Math. PB 5 if 80 ? SB < 90 [00042] SBF_H = .Math. "\[LeftBracketingBar]" 1.00007 + 0.19183 .Math. PB + - 0.48182 .Math. PB 2 + 1.75631 .Math. PB 3 + - 3.31723 .Math. PB 4 + 2.44214 .Math. PB 5 if 35 ? SB < 40 1.00194 + 0.31029 .Math. PB + 2.06735 .Math. PB 2 + - 19.31103 .Math. PB 3 + 66.45816 .Math. PB 4 + - 73.49113 .Math. PB 5 if 40 ? SB < 50 1.00389 + 0.48347 .Math. PB + 4.33844 .Math. PB 2 + - 39.43556 .Math. PB 3 + 98.35123 .Math. PB 4 + - 80.74569 .Math. PB 5 if 50 ? SB < 60 1.007 + 0.58746 .Math. PB + 0.03228 .Math. PB 2 + 2.76098 .Math. PB 3 + - 27.66465 .Math. PB 4 + 37.26344 .Math. PB 5 if 60 ? SB < 70 1.00961 + 1.23535 .Math. PB + - 6.37689 .Math. PB 2 + 6.51669 .Math. PB 3 + 14.00084 .Math. PB 4 + - 23.83482 .Math. PB 5 if 70 ? SB < 80 1.00878 + 0.61038 .Math. PB + - 3.0698 .Math. PB 2 + 4.12111 .Math. PB 3 + - 1.80768 .Math. PB 4 + 0.12358 .Math. PB 5 if 80 ? SB < 90 [00043] SBF = SB_H - SB_in SB_H - SB_L .Math. SBF_L + SB_in - SB_L SB_H - SB_L .Math. SBF_H [00044] SB = SB_in SBF ? = 1 0 - S B 2 0 ?_dB = 20 .Math. log ( 1 + ? ) PB = PB_in - ?_dB //comment - step (e) mapping the target transition bandwidth to the simulation interpolation equations of FIG. 5: A_?_0 = 0.86082 + ?0.00535 .Math. SB + 3.37939 .Math. 10.sup.?5 .Math. SB.sup.2 A_?_1 = 0.01658 + 0.0014 .Math. SB + ?2.40482 .Math. 10.sup.?6 .Math. SB.sup.2 t_?_1 = ?0.02628 + 0.00214 .Math. SB + ?2.21286 .Math. 10.sup.?5 .Math. SB.sup.2 A_?_2 = ?0.02601 + 0.0105 .Math. SB + ?9.70412 .Math. 10.sup.?5 .Math. SB.sup.2 t_?_2 = ?0.07915 + 0.01628.SB + ?1.63398 .Math. 10.sup.?4 .Math. SB.sup.2 [00045] ? F_Calc = A_? _ 0 + A_? _ 1 .Math. e - PB t _? _ 1 + A_? _ 2 .Math. e - PB t _? _ 2 [00046] ? = ?_in ?F_Calc //comment - step (f) determining the maximum amplitude of first pulse required for a maximum passband ripple peak of 0.5 dB from the interpolation equation of FIG. 6: A_m_0 = 0.00213 + ?9.05393 .Math. 10.sup.?5 .Math. SB + 1.1535 .Math. 10.sup.?6 .Math. SB.sup.2 A_m_1 = ?0.1217 +0.00875 .Math. SB + ?6.84652 .Math. 10.sup.?5 .Math. SB.sup.2 A_m_2 = 0.53688 + ?0.0193 .Math. SB + 2.50718 .Math. 10.sup.?4 .Math. SB.sup.2 ?max = A_m_0 + A_m_1 .Math. ? + A_m_2 .Math. ?.sup.2 //comment - step (g) determining the fractional amplitude parameter of the first pulse to give the desired passband ripple from the interpolation equation of FIG. 7: A_?_0 = 0.03377 + ?0.00197 .Math. SB + 2.93054 .Math. 10.sup.?5 .Math. SB.sup.2 + 1.25997 .Math. 10.sup.?8 .Math. SB.sup.3 A_?_1 = 1.92978 + 0.07855 .Math. SB + ?0.00137 .Math. SB.sup.2 + 1.03723 .Math. 10.sup.?5 .Math. SB.sup.3 A_?_2 = 21.09838 + ?1.24226 .Math. SB + 0.0185 .Math. SB.sup.2 + ?1.17641 .Math. 10.sup.?4 .Math. SB.sup.3 A_?_3 = ?56.1102 + 3.32885 .Math. SB + ?0.0531 .Math. SB.sup.2 + 3.57809 .Math. 10.sup.?4 .Math. SB.sup.3 A _?_4 = 57.13164 + ?3.54325 .Math. SB + 0.06103 .Math. SB.sup.2 + ?4.17802 .Math. 10.sup.?4 .Math. SB.sup.3 ?F = A_?_0 + A_?_1 .Math. PB + A_?_2 .Math. PB.sup.2 + A_?_3 .Math. PB.sup.3 + A_?_4 .Math. PB.sup.4 ?0 = ?F .Math. ?max //comment - step (h) determining the amplitude parameter of the second pulse from the interpolation equations of FIG. 8: A_?1_0 = 2.68198 + ?0.08833 .Math. SB + 0.0011 .Math. SB.sup.2 + ?4.59679 .Math. 10.sup.?6 .Math. SB.sup.3 A_?1_1 = ?2.12581 + 0.07315 .Math. SB + ?4.24556 .Math. 10.sup.?4 .Math. SB.sup.2 A_?1_2 = 3.06815 + ?0.08677 .Math. SB + 3.89087 .Math. 10.sup.?4 .Math. SB.sup.2 A_?1_3 = ?2.25646 + 0.05294 .Math. SB + ?1.77807 .Math. 10.sup.?4 .Math. SB.sup.2 ? = A_?1_0 + A_?1_1 .Math. PB + A_?1_2 .Math. PB.sup.2 + A_?1_3 .Math. PB.sup.3 ?1 = ? .Math. ?0 //comment - step (i) and step (j) determining the required filter order and the frequency parameters: [00047] M = ceil ( S B - 8 2 .Math. ? .Math. 2.285 .Math. ? ) [00048] fc = fc - ( ? - ?_in ) 2 [00049] x 1 = 1 M + 1 x 2 = 2 M + 1 f 1 = fc - x 1 f 2 = fc - x 2 ?1 = 2 .Math. ? .Math. f1?2 = 2 .Math. ? .Math. f2 //comment - step (k) determining the Kaiser bandwidth parameter: [00050] ? = .Math. "\[LeftBracketingBar]" 0.1102 .Math. ( SB - 8.7 ) if SB > 50 0.5824 .Math. ( SB - 2 1 ) 0.4 + 0.07886 .Math. ( SB - 21 ) if 21 ? SB ? 50 0 if SB < 21 //comment - step (I) looping to calculate M + 1 filter coefficients: s = 0 .. M [00051] h_rect _window s = sin [ 2 .Math. ? .Math. fc .Math. ( s - M 2 ) ] ? .Math. ( s - M 2 ) [00052] h_rect _window M 2 = 2 .Math. fc [00053] m_kaiser _mod s = I 0 [ ? .Math. 1 - [ .Math. "\[LeftBracketingBar]" s - M 2 .Math. "\[RightBracketingBar]" M 2 ] 2 ] I 0 ( ? ) [00054] h_aux s = [ ?0 .Math. cos [ ( s - M 2 ) .Math. ?1 ] - ? 1 .Math. cos [ ( s - M 2 ) .Math. ?2 ] ] [00055] coefficient s s = m_kaiser _mod s .Math. ( h_rect _window s + h_aux s )