Topics
Standalone explorations of specific DSP problems
Each topic is self-contained: theory, clean Python code, and a notebook with runnable experiments. Read them in any order. Topics marked [HW] include embedded C/C++ implementations for ESP32-S3 and STM32F4.
The tone here is research-flavored. Open questions are flagged, not hidden. Where something doesn’t work well, we say so.
- Outlier detection: streaming anomaly detection using robust statistics
- Noise whitening: characterising and whitening 1/f^α noise
- Adaptive filtering: LMS, NLMS, and RLS for system identification and noise cancellation [HW]
- Matched filtering: detecting known signals in noise, from bat echolocation to LIGO [HW]
- Beamforming: direction-of-arrival estimation with sensor arrays, inspired by the scorpion [HW]
- Biquad filters: the universal building block for IIR filtering [HW]
- Gammatone filters: the cochlea as a bank of bandpass filters, one auditory channel per four biquads [HW]
- Gabor filters: oriented visual-cortex receptive fields, from the uncertainty principle to 2-D convolution on hardware [HW]
- PSO for filter design: particle swarm optimization for the non-convex IIR designs where gradients get stuck, plus on-device adaptation [HW]
- Smoothing: moving averages, Savitzky-Golay, exponential smoothing, and kernel methods [HW]
- Detrending: removing slow drifts for stationarity and clean spectra
- Zero-phase filtering: forward-backward filtering without phase distortion
- Zero-crossing detection: frequency estimation, event detection, and hysteresis
- Multirate systems: decimation, interpolation, polyphase decomposition, and CIC filters [HW]
- Pitch detection: estimating fundamental frequency from autocorrelation to real-time embedded systems [HW]
- Pole-zero explorer: interactive tool for exploring how pole and zero placement shapes the frequency response
- Empirical mode decomposition: data-driven decomposition into intrinsic mode functions
- PPG signal processing: a complete DSP pipeline for heart rate extraction, case study with ESP32 and MAX30102 [HW]