DSPRelated.com
Online · Live + on demand
February 9-11, 2027
Price goes up Nov 1: register now to lock in today's rate
Register Now →

An Efficient Full-Band Sliding DFT Spectrum Analyzer

Rick LyonsRick Lyons ● April 1, 2021●7 comments

Rick Lyons shows two compact sliding DFT networks that compute the 0th bin and all positive-frequency outputs for even and odd N, running sample-by-sample on real input streams. The designs reduce computational workload versus a prior observer-based sliding DFT by using fewer parallel paths, while remaining guaranteed stable and avoiding the traditional comb delay-line. A simple initialization and streaming procedure makes them practical for real-time spectrum analysis.


Update to a Narrow Bandpass Filter in Octave or Matlab

Paul LovellPaul Lovell ● March 29, 2021

Paul Lovell presents an updated, compact Octave/Matlab implementation of a narrow bandpass FIR that runs about four times faster and uses float32 to cut processing cost. The design combines a single matrix IFIR stage with three moving-sum (RRS) stages per baseband, auto-calculates the IFIR expansion factor, and adds easier parameter setup plus WAV I/O and FFT plots. A TensorFlow Colab demo is also provided.


Add a Power Marker to a Power Spectral Density (PSD) Plot

Neil RobertsonNeil Robertson ● February 7, 2021

Read absolute power directly from a PSD plot with a simple MATLAB helper. The author presents psd_mkr, a function that computes the PSD with pwelch and overlays a power marker in three modes: normal for narrowband tones, band-power for integrated power over a specified bandwidth, and 1 Hz for noise density readings. Examples show how bin summing, window loss, and scalloping are handled for accurate measurements.


A Simpler Goertzel Algorithm

Rick LyonsRick Lyons ● February 4, 2021

Rick Lyons presents a streamlined Goertzel algorithm that simplifies computing a single DFT bin by removing the textbook method's extra shift and zero-input steps. The proposed network changes the numerator so you run the main stage N times then perform one final output stage, making the implementation cleaner and slightly cheaper computationally. Rick also points out that common textbook forms differ from Gerald Goertzel's 1958 original.


60-Hz Noise and Baseline Drift Reduction in ECG Signal Processing

Rick LyonsRick Lyons ● January 23, 2021●7 comments

Rick Lyons shows a very efficient way to clean up ECGs when both baseline drift and 60 Hz power-line interference are getting in the way. He starts from a linear-phase DC removal filter, reshapes it into a notch filter that hits both 0 Hz and 60 Hz, and then tests it on a noisy real-world ECG. The payoff is a practical design that uses only two multiplications and five additions per sample.


Find Aliased ADC or DAC Harmonics (with animation)

Neil RobertsonNeil Robertson ● January 11, 2021●2 comments

If a sinewave drives an ADC or DAC, device nonlinearities create harmonics that can fold back as aliases above Nyquist. This post shows a simple Matlab model, using an NCO, a static nonlinearity, and a DFT to generate spectra and reveal aliased harmonics, with animated illustrations to make aliasing intuitive. The approach works for both ADC and DAC measurement setups and highlights realistic effects like quantization noise.


Adaptive Beamforming is like Squeezing a Water Balloon

Christopher HogstromChristopher Hogstrom ● January 9, 2021●4 comments

Think of adaptive beamforming as squeezing a water balloon, a simple analogy that reveals how combining multiple antennas creates focused gains and deep nulls. This post walks through the MVDR (Wiener-filter–based) solution, explains steering and scanning vectors, and shows how array geometry and known signal direction control what you can and cannot cancel. Practical tips highlight limits like the N-1 interferer rule.


Compute Images/Aliases of CIC Interpolators/Decimators

Neil RobertsonNeil Robertson ● November 1, 2020●2 comments

CIC filters provide multiplier-free interpolation and decimation for large sample-rate changes, but their images and aliases can trip up designs. This post supplies two concise Matlab functions and hands-on examples to compute interpolator images and decimator aliases, showing spectra and freqz plots. Readers will learn how interpolation ratio and number of stages alter passband, stopband, and aliasing behavior.


Exploring Human Hearing Range

Stephen MorrisStephen Morris ● October 31, 2020●4 comments

Audacity makes it simple to explore the limits of human hearing by generating and inspecting single-tone audio. This post walks through creating a 9 kHz sine tone, noticing the default 44,100 Hz sample rate, and verifying the result with Audacity's Plot Spectrum tool. Follow the steps and use low playback volume to safely try higher or lower test frequencies yourself.


The DSP Online Conference - Right Around the Corner!

Stephane BoucherStephane Boucher ● September 20, 2020

Three months after a forum post, Stephane Boucher and Jacob Beningo pulled together the DSP Online Conference, a two-day virtual event featuring 14 talks from leading DSP experts. Most sessions are 30 to 60 minutes with a 30-minute Zoom Q&A, while extended deep dives from speakers like fred harris are included. Registered attendees get one-year on-demand access, and free or reduced passes are available.


Computing Large DFTs Using Small FFTs

Rick LyonsRick Lyons ● June 23, 2008●21 comments

Rick Lyons demonstrates a practical trick for computing large N-point DFTs by combining multiple smaller radix-2 FFTs when only limited FFT sizes are available. He walks through 16-point and 24-point examples using two and three 8-point FFTs, shows how to assemble outputs with twiddle factors, and explains a symmetry that reduces twiddle storage to N/4 values. The method supports non-power-of-two DFT lengths.


Take Control of Noise with Spectral Averaging

Sam ShearmanSam Shearman ● April 20, 2018●3 comments

Spectral averaging turns noisy FFT outputs into repeatable, measurable spectra by trading time for noise control. This post explains the practical difference between RMS averaging, which reduces variance without changing the noise floor, and vector averaging, which can lower the noise floor but requires phase-coherent, triggered inputs. It also shows how linear and exponential weighting affect reaction time for live displays and measurement accuracy.


The Most Interesting FIR Filter Equation in the World: Why FIR Filters Can Be Linear Phase

Rick LyonsRick Lyons ● August 18, 2015●17 comments

Rick Lyons pulls back the curtain on a little-known coefficient constraint that makes complex-coefficient FIR filters exhibit linear phase. Rather than simple symmetry of real coefficients, the key is a conjugate-reflection relation involving the filter phase at DC, which collapses to ordinary symmetry for real taps. The post includes derivations, intuition using the inverse DTFT, and a Matlab example to verify the result.


Computing the Group Delay of a Filter

Rick LyonsRick Lyons ● November 19, 2008●17 comments

Rick Lyons presents a neat, practical way to get a filter's group delay directly from its impulse response using only DFTs. The method computes an N-point DFT of h(n) and of n·h(n), divides them in the frequency domain, and takes the real part to obtain group delay in samples, avoiding phase unwrapping. The post includes MATLAB code, a zero-division warning, and a caution that the method is reliable for FIR filters but not always for IIRs.


Frequency-Domain Periodicity and the Discrete Fourier Transform

Eric JacobsenEric Jacobsen ● August 6, 2012

Sampling turns a continuous spectrum into an infinite set of replicas, and this article explains why the DFT and DTFT inevitably show periodic, circular spectra. Eric Jacobsen combines rigorous math with a geometric, wagon-wheel intuition to clarify aliasing, bandlimited sampling, and sampled-IF techniques. Read it to see when center frequency doesn't matter, how cyclic baseband shifts behave, and why bandwidth, not absolute frequency, determines alias-free sampling.


Padé Delay is Okay Today

Jason SachsJason Sachs ● March 1, 2016●6 comments

High-order Padé approximations for time delays break in surprising ways, but the failure is not magic. Jason Sachs walks through why coefficient-based transfer functions and companion-form state-space are numerically fragile, shows how to compute poles and zeros directly from the hypergeometric form with Newton iteration, and demonstrates building modal or block-diagonal state-space realizations to make high-order Padé delays practical while noting remaining limits.


Time Machine, Anyone?

Andor BariskaAndor Bariska ● March 7, 2008●6 comments

Causal filters can look like time machines, but they do not break physics. Andor Bariska reproduces a classic electronic experiment in MATLAB, showing how a minimum-phase peaking filter and its FDLS biquad approximation produce negative group delay bands that make predictable, bandlimited signals appear to emerge early. The post walks through group delay, discretization, pulse and random-signal tests, and why unpredictability restores causality.


Return of the Delta-Sigma Modulators, Part 1: Modulation

Jason SachsJason Sachs ● May 28, 2023●2 comments

Jason Sachs returns to delta-sigma modulators with a hands-on, code-first treatment that focuses on the DAC side of things. Part 1 walks through first- and second-order kernels, linearized analysis, spectra, and practical coefficient choices while illustrating results with Python simulations. Expect clear rules of thumb for A, R, and B, a derivation of noise shaping behavior, and a useful error bound for RC filtering.


Oscilloscope Dreams

Jason SachsJason Sachs ● January 14, 2012●5 comments

Jason Sachs walks through practical oscilloscope buying criteria for embedded engineers, focusing on bandwidth, channel count, hi-res acquisition, and probing. He explains why mixed-signal scopes and hi-res mode matter, when a 100 MHz scope is sufficient and when to keep a higher-bandwidth instrument, and how probe grounding and waveform export can ruin measurements. Real-world brand notes and try-before-you-buy advice round out the guidance.


Noise shaping

Markus NentwigMarkus Nentwig ● December 9, 2012●3 comments

Markus Nentwig presents a compact, practical introduction to noise shaping by treating quantization error as the first sample of a designed impulse response. He shows how to derive a noise shaper from a target spectrum, demonstrates the tradeoff between in-band noise reduction and total noise increase, and includes a Matlab example while highlighting clipping and stability caveats for sigma-delta contexts.