This class provides a set of functions which generates FIR::Coefficients and IIR::Coefficients, of highorder lowpass filters. More...
Classes  
struct  IIRPolyphaseAllpassStructure 
The structure returned by the function designIIRLowpassHalfBandPolyphaseAllpassMethod. More...  
Public Types  
using  FIRCoefficientsPtr = typename FIR::Coefficients< FloatType >::Ptr 
using  IIRCoefficients = typename IIR::Coefficients< FloatType > 
using  WindowingMethod = typename WindowingFunction< FloatType >::WindowingMethod 
Static Public Member Functions  
static FIRCoefficientsPtr  designFIRLowpassWindowMethod (FloatType frequency, double sampleRate, size_t order, WindowingMethod type, FloatType beta=static_cast< FloatType >(2)) 
This method generates a FIR::Coefficients for a lowpass filter, using the windowing design method, applied to a sinc impulse response. More...  
static FIRCoefficientsPtr  designFIRLowpassKaiserMethod (FloatType frequency, double sampleRate, FloatType normalisedTransitionWidth, FloatType amplitudedB) 
This a variant of the function designFIRLowpassWindowMethod, which allows the user to specify a transition width and a negative gain in dB, to get a lowpass filter using the Kaiser windowing function, with calculated values of the filter order and of the beta parameter, to satisfy the constraints. More...  
static FIRCoefficientsPtr  designFIRLowpassTransitionMethod (FloatType frequency, double sampleRate, size_t order, FloatType normalisedTransitionWidth, FloatType spline) 
This method is also a variant of the function designFIRLowpassWindowMethod, using a rectangular window as a basis, and a spline transition between the pass band and the stop band, to reduce the Gibbs phenomenon. More...  
static FIRCoefficientsPtr  designFIRLowpassLeastSquaresMethod (FloatType frequency, double sampleRate, size_t order, FloatType normalisedTransitionWidth, FloatType stopBandWeight) 
This method generates a FIR::Coefficients for a lowpass filter, by minimizing the average error between the generated filter and an ideal one using the least squares error criterion and matrices operations. More...  
static FIRCoefficientsPtr  designFIRLowpassHalfBandEquirippleMethod (FloatType normalisedTransitionWidth, FloatType amplitudedB) 
This method generates a FIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Design of HalfBand FIR Filters for Signal Compression" from Pavel Zahradnik, to get an equiripple like high order FIR filter, without the need of an iterative method and convergence failure risks. More...  
static ReferenceCountedArray< IIRCoefficients >  designIIRLowpassHighOrderButterworthMethod (FloatType frequency, double sampleRate, FloatType normalisedTransitionWidth, FloatType passbandAmplitudedB, FloatType stopbandAmplitudedB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band and in the stop band. More...  
static ReferenceCountedArray< IIRCoefficients >  designIIRLowpassHighOrderButterworthMethod (FloatType frequency, double sampleRate, int order) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band and in the stop band. More...  
static ReferenceCountedArray< IIRCoefficients >  designIIRHighpassHighOrderButterworthMethod (FloatType frequency, double sampleRate, int order) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase highpass filter without any ripple in the pass band and in the stop band. More...  
static ReferenceCountedArray< IIRCoefficients >  designIIRLowpassHighOrderChebyshev1Method (FloatType frequency, double sampleRate, FloatType normalisedTransitionWidth, FloatType passbandAmplitudedB, FloatType stopbandAmplitudedB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the stop band only. More...  
static ReferenceCountedArray< IIRCoefficients >  designIIRLowpassHighOrderChebyshev2Method (FloatType frequency, double sampleRate, FloatType normalisedTransitionWidth, FloatType passbandAmplitudedB, FloatType stopbandAmplitudedB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band only. More...  
static ReferenceCountedArray< IIRCoefficients >  designIIRLowpassHighOrderEllipticMethod (FloatType frequency, double sampleRate, FloatType normalisedTransitionWidth, FloatType passbandAmplitudedB, FloatType stopbandAmplitudedB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIR::Filters, providing a minimum phase lowpass filter with ripples in both the pass band and in the stop band. More...  
static IIRPolyphaseAllpassStructure  designIIRLowpassHalfBandPolyphaseAllpassMethod (FloatType normalisedTransitionWidth, FloatType stopbandAmplitudedB) 
This method generates arrays of IIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Digital Signal Processing Schemes for efficient interpolation and decimation" from Pavel Valenzuela and Constantinides. More...  
This class provides a set of functions which generates FIR::Coefficients and IIR::Coefficients, of highorder lowpass filters.
They can be used for processing directly audio as an equalizer, in resampling algorithms etc.
see FIRFilter::Coefficients, FIRFilter, WindowingFunction, IIRFilter::Coefficients, IIRFilter
using dsp::FilterDesign< FloatType >::FIRCoefficientsPtr = typename FIR::Coefficients<FloatType>::Ptr 
using dsp::FilterDesign< FloatType >::IIRCoefficients = typename IIR::Coefficients<FloatType> 
using dsp::FilterDesign< FloatType >::WindowingMethod = typename WindowingFunction<FloatType>::WindowingMethod 

static 
This method generates a FIR::Coefficients for a lowpass filter, using the windowing design method, applied to a sinc impulse response.
It is one of the simplest method used to generate a high order lowpass filter, which has the downside of needing more coefficients than more complex method to perform a given attenuation in the stop band.
It generates linear phase filters coefficients.
Note: The flatTop WindowingMethod generates an impulse response with a maximum amplitude higher than one, and might be normalised if necessary depending on the applications.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
order  the order of the filter 
type  the type, must be a WindowingFunction::WindowingType 
beta  an optional additional parameter useful for the Kaiser windowing function 

static 
This a variant of the function designFIRLowpassWindowMethod, which allows the user to specify a transition width and a negative gain in dB, to get a lowpass filter using the Kaiser windowing function, with calculated values of the filter order and of the beta parameter, to satisfy the constraints.
It generates linear phase filters coefficients.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
amplitudedB  the maximum amplitude in dB expected in the stop band (must be negative) 

static 
This method is also a variant of the function designFIRLowpassWindowMethod, using a rectangular window as a basis, and a spline transition between the pass band and the stop band, to reduce the Gibbs phenomenon.
It generates linear phase filters coefficients.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
order  the order of the filter 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
spline  between 1.0 and 4.0, indicates how much the transition is curved, with 1.0 meaning a straight line 

static 
This method generates a FIR::Coefficients for a lowpass filter, by minimizing the average error between the generated filter and an ideal one using the least squares error criterion and matrices operations.
It generates linear phase filters coefficients.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
order  the order of the filter 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
stopBandWeight  between 1.0 and 100.0, indicates how much we want attenuation in the stop band, against some oscillation in the pass band 

static 
This method generates a FIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Design of HalfBand FIR Filters for Signal Compression" from Pavel Zahradnik, to get an equiripple like high order FIR filter, without the need of an iterative method and convergence failure risks.
It generates linear phase filters coefficients.
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
amplitudedB  the maximum amplitude in dB expected in the stop band (must be negative) 

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band and in the stop band.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
passbandAmplitudedB  the highest gain in dB expected in the pass band (must be negative) 
stopbandAmplitudedB  the gain in dB expected in the stop band (must be negative) 

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band and in the stop band.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
order  the order of the resulting IIR filter, providing an attenuation of 6 dB times order / octave 

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase highpass filter without any ripple in the pass band and in the stop band.
frequency  the cutoff frequency of the highpass filter 
sampleRate  the sample rate being used in the filter design 
order  the order of the resulting IIR filter, providing an attenuation of 6 dB times order / octave 

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the stop band only.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
passbandAmplitudedB  the highest amplitude in dB expected in the pass band (must be negative) 
stopbandAmplitudedB  the lowest amplitude in dB expected in the stop band (must be negative) 

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band only.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
passbandAmplitudedB  the highest amplitude in dB expected in the pass band (must be negative) 
stopbandAmplitudedB  the lowest amplitude in dB expected in the stop band (must be negative) 

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIR::Filters, providing a minimum phase lowpass filter with ripples in both the pass band and in the stop band.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
frequency  the cutoff frequency of the lowpass filter 
sampleRate  the sample rate being used in the filter design 
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
passbandAmplitudedB  the highest amplitude in dB expected in the pass band (must be negative) 
stopbandAmplitudedB  the lowest amplitude in dB expected in the stop band (must be negative) 

static 
This method generates arrays of IIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Digital Signal Processing Schemes for efficient interpolation and decimation" from Pavel Valenzuela and Constantinides.
The result is a IIRPolyphaseAllpassStructure object.
The two members of this structure directPath and delayedPath are arrays of IIR::Coefficients, made of polyphase second order allpass filters and an additional delay in the second array, that can be used in cascaded filters processed in two parallel paths, which must be summed at the end to get the high order efficient lowpass filtering.
The gain of the resulting passband is 6 dB, so don't forget to compensate it if you want to use that method for something else than two times oversampling.
normalisedTransitionWidth  the normalised size between 0 and 0.5 of the transition between the pass band and the stop band 
stopbandAmplitudedB  the maximum amplitude in dB expected in the stop band (must be negative) 