- See Also
-
Related Guides
- Linear and Nonlinear Filters
- Sound and Sonification
- Image Filtering & Neighborhood Processing
- Audio Processing
- Signal Processing
- Signal Filtering & Filter Design
- Scientific Data Analysis
- Time Series Processing
- Video Editing
- Speech Computation
- Event Series Processing
- Video Computation: Update History
-
- See Also
-
Related Guides
- Linear and Nonlinear Filters
- Sound and Sonification
- Image Filtering & Neighborhood Processing
- Audio Processing
- Signal Processing
- Signal Filtering & Filter Design
- Scientific Data Analysis
- Time Series Processing
- Video Editing
- Speech Computation
- Event Series Processing
- Video Computation: Update History
LowpassFilter[data,ωc]
applies a lowpass filter with a cutoff frequency ωc to an array of data.
LowpassFilter[data,ωc,n]
uses a filter kernel of length n.
LowpassFilter[data,ωc,n,wfun]
applies a smoothing window wfun to the filter kernel.
LowpassFilter
LowpassFilter[data,ωc]
applies a lowpass filter with a cutoff frequency ωc to an array of data.
LowpassFilter[data,ωc,n]
uses a filter kernel of length n.
LowpassFilter[data,ωc,n,wfun]
applies a smoothing window wfun to the filter kernel.
Details and Options
- Lowpass filtering is typically used for smoothing or denoising data, which works by diminishing high-frequency content from the data.
- LowpassFilter convolves a digital signal with a finite impulse response (FIR) kernel created using the window method.
- The data can be any of the following:
-
list arbitrary-rank numerical array tseries temporal data such as TimeSeries and TemporalData image arbitrary Image or Image3D object audio an Audio or Sound object video a Video object - Smaller cutoff frequencies typically result in greater smoothing. Longer kernels result in a better frequency discrimination. »
- LowpassFilter[data,ωc] uses a filter kernel length and smoothing window suitable for the cutoff frequency ωc and the input data.
- Typical smoothing windows wfun include:
-
BlackmanWindow smoothing with a Blackman window DirichletWindow no smoothing HammingWindow smoothing with a Hamming window (default) {v1,v2,…} use a window with values vi f create a window by sampling f between
and 
- When applied to images and multidimensional arrays, filtering is applied successively to each dimension, starting at level 1. LowpassFilter[data,{ωc1,ωc2,…}] uses the frequency ωci for the

dimension. - The following options can be given:
-
Padding "Fixed" the padding value to use SampleRate Automatic sample rate assumed for the input - By default, SampleRate->1 is assumed for images as well as lists. For audio signals and time series, the sample rate is either extracted or computed from the input data.
- With SampleRatesr, the cutoff frequency ωc should be between 0 and
. »
Examples
open all close allBasic Examples (3)
Lowpass filtering of a noisy square wave:
data = Table[SquareWave[i / 100], {i, 225}] + RandomReal[{-0.1, 0.1}, 225];
GraphicsRow[ListLinePlot /@ {data, LowpassFilter[data, 0.5]}]LowpassFilter[\!\(\*AudioBox[""]\), Quantity[1000, "Hertz"]]Lowpass filtering of an image:
LowpassFilter[[image], 0.5, 15]//ImageAdjustScope (14)
Data (9)
data = BoxMatrix[5, {41}];
ListLinePlot[{data, LowpassFilter[data, 0.5, 15]}]data = Table[UnitBox[(n/7), (m/7)], {n, -7, 7}, {m, -7, 7}];
ListPlot3D[data]LowpassFilter[data, 0.5, 15]//ListPlot3DFilter a TimeSeries:
ts = TemporalData[TimeSeries, {{{0., -0.27267267057145633, -0.6672983789995302, -0.5338541947930846,
-0.6117404489279314, -0.6755527076595494, -0.02125421294486496, -0.10792797291843935,
-0.6138271235477938, -0.3248568606554575, -0.08843449054 ... 2053424, -0.49980440691873723, -0.5388679788215971,
-0.4101602764645551}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];
filtered = LowpassFilter[ts, Quantity[10, "Hertz"]];ListLinePlot[{ts, filtered}, PlotLegends -> {"original data", "filtered"}]Smoothing of an Audio object of a triangle wave:
a = AudioGenerator[{"Triangle", 440}]AudioPlot[a, PlotRange -> {{0, 0.01}, All}]Use a low cutoff frequency to remove most of the signal harmonics:
AudioPlot[LowpassFilter[a, Quantity[500, "Hertz"]], PlotRange -> {{0, 0.01}, All}]Lowpass filtering of a Sound object of a dual-tone multi-frequency (DTMF) signal:
s = Sound[SampledSoundList[Table[Sin[2 π 697 t] + Sin[2 π 1209 t], {t, 0., 0.3, 1 / 8000.}], 8000]]Use a cutoff frequency midway between two dial tones, a filter length of 99 and a Blackman window:
LowpassFilter[s, Quantity[953, "Hertz"], 99, BlackmanWindow]Lowpass filtering of a color halftone image:
LowpassFilter[[image], 0.5]LowpassFilter[Video["ExampleData/fish.mp4"], .5]Lowpass filtering of a 3D image:
LowpassFilter[[image], 0.5]LowpassFilter[{0, 0, 0, 1, 1, 1, 0, 0, 0}, Pi / 2, 3]Parameters (5)
A numeric cutoff frequency is interpreted as a quantity in units of radians per second:
a = \!\(\*AudioBox[""]\);LowpassFilter[a, 2000 π] === LowpassFilter[a, Quantity[2000*Pi, "Radians"/"Seconds"]] === LowpassFilter[a, Quantity[1000, "Hertz"]]Filter a white noise signal using a cutoff frequency of
:
noise = AudioGenerator["White", 0.2];
Periodogram[noise]Periodogram[LowpassFilter[noise, Quantity[5000, "Hertz"]]]Periodogram[LowpassFilter[noise, Quantity[10000, "Hertz"]]]By default, the length of the filter and its frequency discrimination depend on the cutoff frequency:
noise = AudioGenerator["White", 0.2];
Periodogram[LowpassFilter[noise, Quantity[2000, "Hertz"]]]Higher cutoff frequencies result in shorter filter kernels, a wider transition band and poorer frequency discrimination:
Periodogram[LowpassFilter[noise, Quantity[5000, "Hertz"]]]Increase frequency discrimination by using a longer kernel:
Periodogram[LowpassFilter[noise, Quantity[5000, "Hertz"], 55]]Vary the amount of stopband attenuation by using different window functions:
a = AudioGenerator[Sin[11025 2 π #^2]&];
Periodogram[LowpassFilter[a, Quantity[10000, "Hertz"], 33, #]& /@ {DirichletWindow, HammingWindow, BlackmanWindow}, PlotLegends -> {"Dirichlet", "Hamming", "Blackman"}]Increase filter length to improve frequency discrimination:
a = AudioGenerator[Sin[11025 2 π #^2]&];
n = 33;
Periodogram[MapThread[LowpassFilter[a, Quantity[10000, "Hertz"], #1, #2]&, {{n, 2n, 3n}, {DirichletWindow, HammingWindow, BlackmanWindow}}], PlotLegends -> {"Dirichlet", "Hamming", "Blackman"}]Vary the amount of attenuation by using the adjustable Kaiser window:
Periodogram[Table[LowpassFilter[a, Quantity[10000, "Hertz"], 33, KaiserWindow[#, b]&], {b, {3, 5, 7}}], PlotLegends -> {3, 5, 7}]Specify the window function as a numeric list:
Periodogram[LowpassFilter[a, Quantity[10000, "Hertz"], 33, ConstantArray[1, {33}]]]Use different cutoff frequencies in each dimension:
LowpassFilter[[image], {.5, 1.5}]Options (4)
Padding (2)
Use no padding to eliminate border artifacts:
LowpassFilter[[image], 0.2, Padding -> #]& /@ {Automatic, None}Different padding methods result in different edge effects:
ramp = Range[21] / 21. + RandomReal[.1, 21];
GraphicsRow@(ListLinePlot[{ramp, LowpassFilter[ramp, 0.5, Padding -> #]}, ...]& /@ {"Fixed", "Periodic", 0})SampleRate (2)
Use a lowpass half-band filter of length 5, assuming a normalized sample rate of
:
LowpassFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, π / 2., 5]LowpassFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, 3 π / 2., 5, SampleRate -> 3]Apply a half-band lowpass filter to audio sampled at a rate of
:
noise = AudioGenerator["White", 0.2];
sr = QuantityMagnitude@AudioSampleRate[noise]LowpassFilter[noise, sr π / 2.]//PeriodogramApplications (6)
Reduce audio noise by using a cutoff frequency of 1000 Hz:
input = ExampleData[{"Audio", "Apollo11ReturnSafely"}];
Spectrogram[input]LowpassFilter[input, Quantity[1000, "Hertz"]]//SpectrogramUse LowpassFilter to make an audio object sound less harsh:
cello = \!\(\*AudioBox[""]\);LowpassFilter[cello, Quantity[800, "Hertz"]]On a modern 88-key piano, key 55 (note C5) has a fundamental frequency of approximately 523 Hz. Use LowpassFilter to effectively remove all the harmonics of this key while retaining the fundamental in the following audio clip:
key55 = \!\(\*AudioBox[""]\);Use a filter of length 59 with a cutoff frequency midway between the fundamental (523 Hz) and its first harmonic at 1046 Hz:
f = 1.5 523;
res = LowpassFilter[key55, 2 π f, 59]Compare the frequency spectra of the two audio clips:
Periodogram[{key55, res}, PlotRange -> All, GridLines -> All, PlotLegends -> {"original", "filtered"}, Epilog -> {Red, InfiniteLine[{{f, 0}, {f, 1}}]}]image = [image];
LowpassFilter[image, .5]Remove moiré patterns and high spatial frequencies:
LowpassFilter[[image], 2]i = [image];2i - LowpassFilter[i, .5]Properties & Relations (8)
Using a cutoff frequency of 0 returns a zero sequence:
LowpassFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, 0]Use a cutoff frequency of π or greater to create an all-pass filter:
LowpassFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, π]Create a lowpass filter using LeastSquaresFilterKernel and a Hamming window:
n = 5;
ω = 1.;
win = Array[HammingWindow, n, {-1 / 2, 1 / 2}];
ker = Normalize[win LeastSquaresFilterKernel[{"Lowpass", ω}, n], Total]ListConvolve[ker, {0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, Ceiling[n / 2], 0]Compare with the result of LowpassFilter:
LowpassFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, ω, n, win, Padding -> 0]Impulse response of a half-band lowpass filter of length 21:
h = LowpassFilter[ArrayPad[{1}, 10], π / 2., 21]ListPlot[h, PlotRange -> All, Filling -> 0]Magnitude spectrum of the filter:
Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}]Impulse response of a half-band lowpass filter of length 21 without a smoothing window:
h = LowpassFilter[ArrayPad[{1}, 10], π / 2., 21, None]ListPlot[h, PlotRange -> All, Filling -> 0]Magnitude spectrum of the filter:
Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}]Impulse response of an even-length filter without a smoothing window:
h = LowpassFilter[ArrayPad[{1}, 10], π / 2., 20, None]ListPlot[h, PlotRange -> All, Filling -> 0]Magnitude spectrum of the filter:
Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}]The frequency discrimination of the lowpass filter improves as its length is increased:
Manipulate[
ListLinePlot[Abs[Fourier[LowpassFilter[ArrayPad[{1.}, 128], Pi / 2, n, DirichletWindow], FourierParameters -> {1, -1}]][[ ;; 129]], ...], {{n, 21}, 3, 63, 1}]The length of the impulse response increases as the bandwidth of the filter is decreased:
Manipulate[ListPlot[DeleteCases[LowpassFilter[ArrayPad[{1.}, 65], ω, Padding -> 0], 0.], Filling -> 0, Axes -> {True, False}, Ticks -> None], {{ω, 1., "SubscriptBox[ω, c]"}, 0.125, 1.0}]Possible Issues (1)
Using PaddingNone will result in an output that is shorter in length than the input:
LowpassFilter[{0, 0, 0, 1, 0, 0, 0}, 1., 7, Padding -> None]Using kernels longer than the input will result in an empty list:
LowpassFilter[{0, 0, 0, 1, 0, 0, 0}, 1., 11, Padding -> None]Related Guides
-
▪
- Linear and Nonlinear Filters ▪
- Sound and Sonification ▪
- Image Filtering & Neighborhood Processing ▪
- Audio Processing ▪
- Signal Processing ▪
- Signal Filtering & Filter Design ▪
- Scientific Data Analysis ▪
- Time Series Processing ▪
- Video Editing ▪
- Speech Computation ▪
- Event Series Processing ▪
- Video Computation: Update History
History
Introduced in 2012 (9.0) | Updated in 2015 (10.2) ▪ 2016 (11.0) ▪ 2025 (14.3)
Text
Wolfram Research (2012), LowpassFilter, Wolfram Language function, https://reference.wolfram.com/language/ref/LowpassFilter.html (updated 2025).
CMS
Wolfram Language. 2012. "LowpassFilter." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/LowpassFilter.html.
APA
Wolfram Language. (2012). LowpassFilter. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LowpassFilter.html
BibTeX
@misc{reference.wolfram_2026_lowpassfilter, author="Wolfram Research", title="{LowpassFilter}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/LowpassFilter.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_lowpassfilter, organization={Wolfram Research}, title={LowpassFilter}, year={2025}, url={https://reference.wolfram.com/language/ref/LowpassFilter.html}, note=[Accessed: 12-June-2026]}