📈  Low-pass Filtering

Low-pass Filtering#

A filter that keeps low-frequency content and attenuates high-frequency noise in a signal.

Important

✨ AI-generated content. This page was written with the assistance of an AI language model and is provided as a learning aid. Despite careful review, it may still contain mistakes, omissions, or out-of-date information. Whether you are new to the topic, a team lead, or a senior practitioner, treat it as a starting point rather than an authoritative reference: read it critically and independently verify anything you act on (code, commands, figures, and factual claims) against official documentation and primary sources before relying on it.

What it is#

A low-pass filter (LPF) lets low-frequency content through while attenuating high-frequency content. In practice that means smoothing a signal and removing high-frequency noise while keeping the slow-moving structure.

Frequency-domain view#

An ideal low-pass filter keeps everything below a cutoff frequency \(f_c\) and removes everything above it:

\[\begin{split}H(f) = \begin{cases} 1 & |f| \le f_c \\ 0 & |f| > f_c \end{cases}\end{split}\]

Real filters approximate this brick wall with a smoother roll-off.

Time-domain view#

Equivalently, low-pass filtering is convolution with a smoothing kernel — a moving average or a Gaussian window — which is exactly the smoothing used in time-series analysis.

Common filter types#

  • Ideal — perfect sharp cutoff (theoretical only).

  • Butterworth — flat passband, smooth roll-off.

  • Chebyshev — sharper cutoff at the cost of passband ripple.

  • Digital FIR / IIR — the workhorses of practical DSP.

  • Moving average — the simplest crude low-pass filter.

Where it’s used#

Removing hiss from audio, blurring images, extracting long-term trends from noisy time series, isolating frequency bands in communications, and cleaning ECG/EEG signals in biomedicine.

Example#

Daily stock prices wobble with short-term noise; a low-pass filter strips the wobble and leaves the longer-term trend visible.

import numpy as np
from scipy.signal import butter, filtfilt

t = np.linspace(0, 1, 500)
signal = np.sin(2*np.pi*5*t) + 0.5*np.sin(2*np.pi*50*t)   # 5 Hz + 50 Hz
noisy = signal + 0.3*np.random.randn(len(t))

b, a = butter(N=4, Wn=0.1)        # cutoff at 0.1 x Nyquist
clean = filtfilt(b, a, noisy)     # zero-phase filtering

Theme: Signal Processing & Time Series  ·  All terminology


Hint

Mind map — connected ideas

Subsampling · Downsampling · Signal Processing · Time Series


See also

Source article Adapted (context, re-expressed) in our own words from: Low-pass Filtering (insightful-data-lab.com).

Tags: purpose: reference topic: terminology level: advanced