EquirippleFilterKernel

EquirippleFilterKernel[{{{ωL1,ωR1},{ωL2,ωR2},},{a1,a2,}},n]

creates a finite impulse response (FIR) filter kernel of length n with an equiripple amplitude response, given the specified left and right band edge frequencies {ωLi,ωRi} and amplitudes ai.

EquirippleFilterKernel[{{{ωL1,ωR1},{ωL2,ωR2},},{a1,a2,},{w1,}},n]

uses relative weights wi for each frequency band.

EquirippleFilterKernel[{"type",{{{ωL1,ωR1},},},n]

creates a filter of the specified "type".

Details and Options

  • EquirippleFilterKernel returns a numeric list of length n of the impulse response coefficients of an FIR filter that has the minimum Chebyshev (minimax) error.
  • Possible filter specification types are:
  • "Multiband"multiple passband and stopband filter specification (default)
    "Differentiator"differentiator filter
    "Hilbert"Hilbert filter
  • Frequencies should be given in an ascending order such that 0ωL1<ωR1<ωL2<ωR2<<ωRkπ.
  • The lengths of the lists of frequency bands, amplitudes, and weights should be the same.
  • Amplitude values should be non-negative. Typically, values ai=0 specify a stopband, and values ai=1 specify a passband.
  • The kernel ker returned by EquirippleFilterKernel can be used in ListConvolve[ker,data] to apply the filter to data.
  • The following options can be given:
  • "GridDensity"8frequency domain sampling density factor
    WorkingPrecisionMachinePrecisionprecision to use in internal computations

Examples

open allclose all

Basic Examples  (1)

Length-15 equiripple lowpass kernel:

Magnitude plot of the filter:

A Bode plot of the filter's frequency spectrum:

Scope  (6)

An equiripple highpass FIR filter:

Bode plot of the frequency response of the filter:

Create an equiripple bandpass kernel:

Specify different band weights:

Create an even-length, full-band differentiator:

Create a Hilbert transformer:

Phase plot of a Hilbert transformer:

Create an equiripple half-band lowpass filter:

Magnitude plot of the filter and the half-band frequency :

Convert the half-band lowpass filter to highpass:

Magnitude plots of the two half-band filters:

Options  (1)

GridDensity  (1)

Use a less dense grid to increase the speed of computation:

Coarse grids may not return the optimum solution:

Applications  (2)

Create a differentiating filter and apply to a sinusoidal sequence:

Create an orthogonal sequence to x using a Hilbert transformer:

Show that the two sequences are orthogonal:

Create a list of Nyquist filters:

Properties & Relations  (2)

Compare the stopband frequency response behavior of an equiripple (blue) and least-squares (red) realization of a filter:

In a half-band filter of length , coefficients at positions for positive integer values of have zero values:

In a -band filter, coefficients at positions have zero values:

Possible Issues  (4)

Neighboring bands cannot have the same amplitudes:

Edge frequencies of neighboring bands should be distinct:

Filter design using the equiripple method does not always converge:

Uneven transition bands in the Hilbert transformer will lead to an excessive ripple:

Introduced in 2012
 (9.0)