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 →

The Zeroing Sine Family of Window Functions

Cedron DawgCedron Dawg ● August 16, 2020●2 comments

A previously unrecognized family of DFT window functions is introduced, built from products of shifted sines that deliberately zero out tail samples and control nonzero support. Cedron Dawg presents recursive and semi-root constructions, runnable code, and numerical examples, and shows that the odd-N member L=(N-1)/2 numerically matches a discrete Hermite-Gaussian DFT eigenvector. The post highlights practical properties, an even-N fix, and applications to spectrograms and tone decomposition.


Design Square-Root Nyquist Filters

Neil RobertsonNeil Robertson ● July 13, 2020

A multirate signal processing textbook presents a neat method for designing square-root Nyquist FIR filters that combine zero ISI with strong stopband attenuation. This post walks through the principle that matched transmit and receive filters need square-root Nyquist responses, gives the key design relations for excess bandwidth and stopband edge, and includes a Matlab implementation to produce practical FIR matched filters for QAM-style systems.


Make Hardware Great Again

Jeff BrowerJeff Brower ● June 29, 2020●4 comments

US weakness in 5G and the coming AI race stems from a deeper problem, hardware decline and lack of CPU innovation. Jeff Brower argues that the software-only narrative has hollowed out semiconductor leadership, leaving only a few chipmakers and blocking vital R&D. He calls for targeted government action, funding for neural-net chips, and an industrial Hardhattan Project to rebuild CPU and hardware capabilities.


A Fast Real-Time Trapezoidal Rule Integrator

Rick LyonsRick Lyons ● June 13, 2020●4 comments

Rick Lyons presents a compact, recursive real-time Trapezoidal Rule integrator that computes N-sample discrete integration using only four arithmetic operations per input sample. The proposed network yields a finite-length, linear-phase impulse response with constant group delay (N-1)/2 and cuts substantial computation compared with a tapped-delay implementation, making it useful for speeding Romberg-based digital filters.


Third-Order Distortion of a Digitally-Modulated Signal

Neil RobertsonNeil Robertson ● June 9, 2020

Amplifier third-order distortion is a common limiter in RF and communications chains, and Neil Robertson walks through why it matters using hands-on MATLAB simulations. He shows how a cubic nonlinearity creates IMD3 tones, causes spectral regrowth and degrades QAM constellations, and gives practical notes on estimating k3, computing ACPR from PSDs, and sampling considerations.


A Narrow Bandpass Filter in Octave or Matlab

Paul LovellPaul Lovell ● June 1, 2020●6 comments

Building very narrow FIR bandpass filters at high sample rates often yields extremely long impulse responses. This post shows a practical Octave/Matlab implementation that uses complex downconversion to baseband plus a multistage Matrix IFIR and running-sum cascade to slash computation. With the provided example (48 kHz, 850 Hz center, 10 Hz passband) you get <1 dB ripple and >60 dB stopband while running 20x to 100x faster than a single-stage FIR.


Second Order Discrete-Time System Demonstration

Neil RobertsonNeil Robertson ● April 1, 2020●2 comments

Want a hands-on way to see how continuous second-order dynamics appear in discrete time? Neil Robertson converts a canonical H(s) to H(z), shows z-plane pole mapping for different damping ratios, and walks through impulse-invariance scaling and zero placement. The post includes a MATLAB function so_demo.m that computes numerator and denominator coefficients, plots poles, and compares impulse and frequency responses so you can experiment with sampling effects.


A Beginner's Guide To Cascaded Integrator-Comb (CIC) Filters

Rick LyonsRick Lyons ● March 26, 2020●79 comments

Rick Lyons breaks down cascaded integrator-comb filters into clear, practical terms, showing why they are the efficient choice for high-rate decimation and interpolation in hardware. The post explains CIC structure, its sinc-like frequency response, multistage tradeoffs, register-bit-width rules, and simple FIR compensation tricks. Hands-on tips and references make it easy for engineers to design and implement robust CIC-based decimators and interpolators.


Are DSPs Dead ?

Jeff BrowerJeff Brower ● March 25, 2020●8 comments

Jeff Brower argues that the science of digital signal processing is far from dead, but commercial DSP chips lost momentum when Texas Instruments refused to embrace server-centric AI and 5G markets. He traces how TI's embedded-only culture, halted multicore CPU roadmaps, and lack of server-class products pushed customers to GPUs and FPGAs. A comeback would demand PCIe cards, VM and container support, open-source engagement, and bold leadership.


Digging into an Audio Signal and the DSP Process Pipeline

Stephen MorrisStephen Morris ● March 9, 2020●6 comments

Zooming into an audio waveform can be misleading if you rely on only one view. This post compares Audacity with a simple C++ WAV reader and shows how the same samples can look like zero in a GUI, while the raw data reveals a small nonzero value. It is a practical reminder that multiple tools help you inspect and verify signal data more accurately.


Spectral Flipping Around Signal Center Frequency

Rick LyonsRick Lyons ● November 7, 2007●5 comments

Most DSP engineers know that multiplying a real signal by (-1)^n inverts its spectrum about fs/4, but that trick fails when you need to flip around a specific carrier. Rick Lyons presents two practical techniques: a multirate upsample-by-two solution using paired lowpass filters and cosine mixing, and a computationally heavier complex-multiply plus real-part method attributed to Dirk Bell, both yielding the desired fcntr-centered flip.


An Efficient Linear Interpolation Scheme

Rick LyonsRick Lyons ● December 27, 2017●25 comments

A simple trick slashes the cost of linear interpolation to at most one multiply per output sample, and often to none. The post shows a zero-order-hold based network that preserves input samples, has a short L-1 transient, and lets 1/L scaling be implemented as a binary shift when L is a power of two. It also gives a fixed-point layout that moves scaling to the end to reduce quantization distortion.


IIR Bandpass Filters Using Cascaded Biquads

Neil RobertsonNeil Robertson ● April 20, 2019●11 comments

This post provides a Matlab function that builds Butterworth bandpass IIR filters by cascading second-order biquad sections. The biquad approach, implemented in Direct Form II, reduces sensitivity to coefficient quantization, which matters most for narrowband filters. The included biquad_bp function computes each section's feedforward and feedback coefficients plus gains from a lowpass prototype order, center frequency, bandwidth, and sampling rate.


Design IIR Highpass Filters

Neil RobertsonNeil Robertson ● February 3, 2018●2 comments

Neil Robertson walks through a compact, six-step procedure to synthesize IIR Butterworth highpass filters using pre-warping and the bilinear transform. The post gives the pole transformations, the placement of N zeros at z=1, the scaling to unity gain at fs/2, and a ready-to-run MATLAB hp_synth implementation that reproduces MATLAB's butter results.


Accurate Measurement of a Sinusoid's Peak Amplitude Based on FFT Data

Rick LyonsRick Lyons ● December 14, 2011●12 comments

Measuring a sinewave's peak from FFT data can be severely biased by scalloping loss, producing errors up to 36.3 percent. Rick Lyons demonstrates how to apply a flat-top window via frequency-domain convolution to the FFT bins, cutting maximum amplitude error to about 0.02 dB compared with 3.9 dB for rectangular windows. The post includes Matlab code and practical caveats for reliable use.


Generating Complex Baseband and Analytic Bandpass Signals

Rick LyonsRick Lyons ● November 2, 2011●2 comments

Rick Lyons gathers and compares practical methods for creating complex baseband and analytic bandpass signals in one compact reference. The post clarifies definitions, lists time and frequency domain techniques from quadrature sampling to FFT-based analytic generation, and notes implementation tradeoffs such as sample-rate constraints, Hilbert transformer use, and phase linearity concerns. Engineers get a quick Hit Parade of options and pointers to deeper references.


Phase and Amplitude Calculation for a Pure Real Tone in a DFT: Method 1

Cedron DawgCedron Dawg ● May 21, 2015●1 comment

Cedron Dawg shows how to get exact amplitude and phase for a real sinusoid whose frequency does not land on an integer DFT bin. The method treats a small neighborhood of DFT bins as a complex vector, builds two basis vectors from the cosine and sine transforms, and solves a 2x2 system using conjugate dot products to recover real coefficients that give amplitude and phase. A C++ example and sample output verify the formulas.


Setting the 3-dB Cutoff Frequency of an Exponential Averager

Rick LyonsRick Lyons ● October 22, 2012●6 comments

Many engineers use a simple exponential averager but need the correct α to achieve a specified 3-dB cutoff. Rick Lyons compares a common approximation with the exact closed-form solution, shows when the approximation is valid, and derives the exact α in the appendix. The approximation works well for fc < 0.1fs, but it becomes noticeably inaccurate as the normalized cutoff increases.


A Simplified Matlab Function for Power Spectral Density

Neil RobertsonNeil Robertson ● March 3, 2020●4 comments

Neil Robertson provides a tiny Matlab wrapper around pwelch that simplifies PSD computation by preselecting a Kaiser window, default overlap, and converting units from W/Hz to dBW/bin. Call psd_simple(x,nfft,fs) to get PdB and a frequency vector, with nfft controlling whether DFT averaging is used. The post includes examples showing the effect of averaging and explains the Kaiser window processing loss.


Peak to Average Power Ratio and CCDF

Neil RobertsonNeil Robertson ● May 17, 2016●4 comments

Setting digital modulator levels depends on peak-to-average power ratio, because random signals produce occasional high peaks that cause clipping. This post shows how to compute the CCDF of PAPR from a signal vector, with MATLAB code and examples for a sine wave and Gaussian noise. The examples reveal the fixed 3.01 dB PAPR of a sine and the need for large sample counts to capture rare AWGN peaks.