WOLFRAM

LeastSquaresFilterKernel[{{ω1,,ωk-1},{a1,,ak}},n]

creates a k-band finite impulse response (FIR) filter kernel of length n designed using a least squares method, given the specified frequencies ωi and amplitudes ai.

LeastSquaresFilterKernel[{"type",spec},n]

uses the full filter specification {"type",spec}.

Details and Options

  • LeastSquaresFilterKernel returns a numeric list of length n of the impulse response coefficients of an FIR filter that has the minimum mean-squared error.
  • The impulse response of the filter is computed using the inverse discrete-time Fourier transform.
  • In LeastSquaresFilterKernel[{"type",spec},n], filter specification can be any of the following:
  • {"Lowpass",ωc}lowpass filter with cutoff frequency ωc
    {"Highpass",ωc}highpass filter with cutoff frequency ωc
    {"Bandpass",{ωc1,ωc2}}bandpass filter with passband from ωc1 to ωc2
    {"Bandpass",{{ω,q}}}bandpass filter with center frequency ω and quality factor q
    {"Bandstop",{ωc1,ωc2}}bandstop filter with stopband from ωc1 to ωc2
    {"Bandstop",{{ω,q}}}bandstop filter with center frequency ω and quality factor q
    {"Multiband",{ω1,,ωk-1},{a1,,ak}}multiband filter specification with k bands
    {"Differentiator",ωc}differentiator filter with cutoff frequency ωc
    {"Hilbert",ωc}Hilbert filter with cutoff frequency ωc
  • If "type" is omitted, "Multiband" is assumed.
  • Frequencies should be given in an ascending order such that 0ω1<ω2<<ωk-1π.
  • Amplitude value a1 corresponds to the frequency band 0 to ω1, and amplitude ak corresponds to the frequency band ωk-1 to π.
  • Amplitude values should be non-negative. Typically, values ai=0 specify a stopband, and values ai=1 specify a passband.
  • The quality factor q is defined as , with being the center frequency of a bandpass or bandstop filter. Higher values of q give narrower filters.
  • The kernel ker, returned by LeastSquaresFilterKernel, can be used in ListConvolve[ker,data] to apply the filter to data.
  • LeastSquaresFilterKernel takes a WorkingPrecision option, which specifies the precision to use in internal computations. The default setting is WorkingPrecision->MachinePrecision.

Examples

open allclose all

Basic Examples  (2)Summary of the most common use cases

A lowpass FIR kernel:

Out[1]=1

Magnitude plot of the filter and its ideal lowpass prototype:

Out[2]=2

A Bode plot of the filter:

Out[3]=3

A multiband FIR kernel:

Out[1]=1

Magnitude plot of the filter and its "brickwall" specification:

Out[2]=2

Scope  (6)Survey of the scope of standard use cases

A highpass FIR kernel:

Out[1]=1

Magnitude plot of the filter:

Out[2]=2

A bandpass FIR kernel:

Out[1]=1

Magnitude plot of the filter:

Out[2]=2

Same filter using center frequency and quality factor specification:

Out[3]=3

A bandstop FIR kernel:

Out[1]=1

Magnitude plot of the filter:

Out[2]=2

Same filter using center frequency and quality factor specification:

Out[3]=3

A differentiator FIR kernel:

Out[1]=1

Magnitude plot of the filter:

Out[2]=2

A full-band Hilbert FIR kernel:

Out[1]=1

Magnitude plot of the filter:

Out[2]=2

Plot of the imaginary part of the filter:

Out[3]=3

A half-band lowpass FIR kernel:

Out[1]=1

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

Out[2]=2

Convert the half-band lowpass filter to highpass:

Out[3]=3

Magnitude plots of the two half-band filters:

Out[4]=4

Generalizations & Extensions  (1)Generalized and extended use cases

Improve stopband attenuation by using a Blackman window:

Out[4]=4

Applications  (4)Sample problems that can be solved with this function

Create a lowpass FIR filter with cutoff frequency of and length n=15:

Out[2]=2

Taper the filter using a Blackman window to improve stopband attenuation:

Normalize:

Out[5]=5

Log-magnitude plot of the power spectra of the two filters:

Out[6]=6

Triple the length of the filter to match the bandwidth of the non-windowed sequence:

Out[10]=10

Lowpass filtering of a dual-tone multi-frequency (DTMF) signal:

Out[1]=1

This shows the spectrum of the dual-tone signal:

Out[2]=2

Create a windowed lowpass filter kernel with a cutoff frequency of 953 Hz for a sound sampled at 8000 Hz:

Out[4]=4

Here is the spectrum of the filtered signal:

Out[5]=5

Create a list of Nyquist filters:

Out[2]=2

Take a derivative of the rows of an image:

Out[1]=1
Out[2]=2

Properties & Relations  (3)Properties of the function, and connections to other functions

Specifying the list of frequencies and amplitudes creates a multiband filter kernel:

Out[1]=1

Increasing quality factors leads to narrower filters:

Out[1]=1

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

Out[1]=1
Out[2]=2

In a -band filter, coefficients at positions are zero:

Out[3]=3
Out[4]=4

Interactive Examples  (1)Examples with interactive outputs

Build an audio equalizer:

Out[16]=16
Wolfram Research (2012), LeastSquaresFilterKernel, Wolfram Language function, https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html (updated 2015).
Wolfram Research (2012), LeastSquaresFilterKernel, Wolfram Language function, https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html (updated 2015).

Text

Wolfram Research (2012), LeastSquaresFilterKernel, Wolfram Language function, https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html (updated 2015).

Wolfram Research (2012), LeastSquaresFilterKernel, Wolfram Language function, https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html (updated 2015).

CMS

Wolfram Language. 2012. "LeastSquaresFilterKernel." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html.

Wolfram Language. 2012. "LeastSquaresFilterKernel." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html.

APA

Wolfram Language. (2012). LeastSquaresFilterKernel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html

Wolfram Language. (2012). LeastSquaresFilterKernel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html

BibTeX

@misc{reference.wolfram_2024_leastsquaresfilterkernel, author="Wolfram Research", title="{LeastSquaresFilterKernel}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html}", note=[Accessed: 10-January-2025 ]}

@misc{reference.wolfram_2024_leastsquaresfilterkernel, author="Wolfram Research", title="{LeastSquaresFilterKernel}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html}", note=[Accessed: 10-January-2025 ]}

BibLaTeX

@online{reference.wolfram_2024_leastsquaresfilterkernel, organization={Wolfram Research}, title={LeastSquaresFilterKernel}, year={2015}, url={https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html}, note=[Accessed: 10-January-2025 ]}

@online{reference.wolfram_2024_leastsquaresfilterkernel, organization={Wolfram Research}, title={LeastSquaresFilterKernel}, year={2015}, url={https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.html}, note=[Accessed: 10-January-2025 ]}