DSPRelated.com

The Discrete Fourier Transform and the Need for Window Functions

Neil RobertsonNeil Robertson November 15, 20212 comments

The FFT alone can mislead: capturing a finite-length signal with a rectangular window smears energy across frequency, producing spectral leakage that hides real components. This post explains the origin of leakage, shows how tapered windows such as the Hanning window suppress sidelobes, and demonstrates the tradeoff between sidelobe suppression and mainlobe widening while covering practical tips on zero-padding and record length.


The 2021 DSP Online Conference

Stephane BoucherStephane Boucher September 29, 20211 comment

Packed with practical talks and hands-on workshops, the 2021 DSP Online Conference gives DSP engineers a quick way to refresh skills and learn new techniques. Registering grants full access to talks, workshops, and Q&A at this year's event plus instant access to last year's videos. Highlights include FIR filter design with Python, software-defined radio, convolution reviews, and DSP/ML tools for IoT, with registration discounts on request.


Modeling Anti-Alias Filters

Neil RobertsonNeil Robertson September 26, 2021

Modeling anti-alias filters brings textbook aliasing examples to life. This post shows how to build discrete-time models G(z) for analog Butterworth and Chebyshev lowpass anti-alias filters, compares bilinear transform and impulse invariance, and simulates ADC input/output including aliasing of sinusoids and Gaussian noise. It concludes that impulse invariance gives better stopband accuracy and includes Matlab helper functions.


In Search of The Fourth Wave

Allen DowneyAllen Downey September 25, 20214 comments

While working on Think DSP the presenter ran into a curious spectral pattern: sawtooth waves have all harmonics with amplitudes that scale like 1/f, square waves keep only odd harmonics with 1/f, and triangle waves keep odd harmonics with 1/f^2. That observation motivates a simple question: is there a basic waveform that has all integer harmonics but a 1/f^2 rolloff? The talk walks through four solution approaches, a fifth idea from the audience, and links to a runnable Colab notebook.


Sampling bandpass signals

Josef HoffmannJosef Hoffmann June 26, 20215 comments

Bandpass signals can be sampled at rates below the usual Nyquist limit, and this note shows how the band-limited spectrum appears in baseband after sampling. Using a simple example figure, it defines the center frequency fc = (fmax + fmin)/2 and bandwidth Δf = fmax - fmin, and highlights that choosing fs less than twice the signal's highest frequency violates the sampling theorem.


Digital Filter Instructions from IKEA?

Neil RobertsonNeil Robertson June 18, 20215 comments

This is a wordless example of a folded FIR filter. Swedish “Bygglek” = build and play.


Simulink-Simulation of SSB demodulation

Josef HoffmannJosef Hoffmann June 13, 20211 comment

This post walks through Simulink models that implement SSB demodulation and modulation, using Richard Lyons' phasing method as a foundation. It shows practical models for simple carrier multiplication and for the phasing method with cosine and -sin paths plus Hilbert filtering, and it highlights sampling, decimation, filter choices, and delay alignment to make the techniques work in simulation.


Setting Carrier to Noise Ratio in Simulations

Neil RobertsonNeil Robertson April 11, 2021

Setting the right Gaussian noise level is easy once you know the math. This post derives simple, practical equations to compute noise density and the rms noise amplitude needed to achieve a target carrier to noise ratio at a receiver output. It shows how to get the noise-equivalent bandwidth from a discrete-time filter, how to compute N0 and sigma, and includes a MATLAB set_cnr function to generate the noise vector.


An Efficient Full-Band Sliding DFT Spectrum Analyzer

Rick LyonsRick Lyons April 1, 20217 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.


An s-Plane to z-Plane Mapping Example

Rick LyonsRick Lyons September 24, 201610 comments

A misleading online diagram prompted Rick Lyons to reexamine how s-plane points map to the z-plane. He spotted apparent errors in the original figure, drew a corrected mapping, and invites readers to inspect both diagrams and point out any remaining mistakes. The short post is a quick visual primer for engineers who rely on accurate s-plane to z-plane mappings in analysis and design.


Evaluate Window Functions for the Discrete Fourier Transform

Neil RobertsonNeil Robertson December 18, 20184 comments

Spectral leakage makes DFTs of continuous sinewaves misleading, and windowing is the practical workaround. This post supplies Matlab code to plot spectra of windowed sinewaves and compute figures of merit, so you can compare windows such as flattop and Chebyshev. See how sidelobe level, mainlobe bandwidth, processing loss, noise bandwidth, and scallop loss trade off to guide your window choice.


Embedded Toolbox: Programmer's Calculator

Miro SamekMiro Samek June 27, 20178 comments

A tiny but powerful cross-platform tool, QCalc evaluates full C-syntax expressions so you can paste results straight into firmware. It handles bitwise ops, mixed hex/decimal/binary constants, and scientific math, and it automatically shows integer results in formatted hex and binary. The post explains key features, variable handling, error messages, and how to run qcalc.tcl with the wish Tk interpreter.


Free Goodies from Embedded World - What to Do Next?

Stephane BoucherStephane Boucher March 6, 20193 comments

Stephane Boucher went on a hunt for free stuff at Embedded World to assemble a giveaway bundle for a lucky reader. This short update shares that haul and asks the embedded community for ideas on what to do next. It is a conversational call for suggestions, aiming to turn conference swag into a useful prize.


Digital PLL's -- Part 2

Neil RobertsonNeil Robertson June 15, 20165 comments

Neil Robertson builds a Z-domain model of a second-order digital PLL with a proportional-plus-integral loop filter, then derives closed-form formulas for KL and KI from the desired loop natural frequency and damping. The post explains the s → (z - 1)/Ts approximation, shows how to form the closed-loop IIR CL(z) for step and frequency responses, and highlights when the linear Z-domain model falls short of nonlinear acquisition behavior.


Linear Feedback Shift Registers for the Uninitiated, Part XVI: Reed-Solomon Error Correction

Jason SachsJason Sachs June 19, 2018

Jason Sachs demystifies Reed-Solomon codes with hands-on examples and pragmatic tips for embedded engineers. The article shows why RS encoding is just polynomial division in GF(2^m), why decoding is mathematically heavier, and how to implement encoders in Python and in C-friendly form using LFSRs and table-driven methods. Read this for working code, generator-polynomial examples, and an embedded-minded view of RS practicalities.


The Power Spectrum

Neil RobertsonNeil Robertson October 8, 2016

You can get absolute power from a DFT, not just relative spectra. In this post Neil Robertson shows how to convert FFT outputs into watts per bin using Parseval's theorem, how to form one-sided spectra, and how to normalize windows so power is preserved. Matlab examples demonstrate bin-centered and between-bin sinusoids, leakage, scalloping, and how to recover component power by summing bins.


A Differentiator With a Difference

Rick LyonsRick Lyons November 3, 200712 comments

Rick Lyons presents a compact, practical FIR differentiator that combines central-difference noise attenuation with a much wider linear range. The proposed ydif(n) doubles the usable frequency range to about 0.34π (0.17fs), uses ±1/16 coefficients so multiplications become simple 4-bit right shifts, and has an exact three-sample group delay for easy synchronization with other signals.


A New Related Site!

Stephane BoucherStephane Boucher September 22, 20224 comments

The post announces the launch of MLRelated, a new Related site dedicated to machine learning and deep learning. It positions MLRelated as complementary to existing Related sites by highlighting cross-cutting interests: TinyML for embedded developers, machine/deep learning applications in signal processing, and FPGA-based AI/ML implementations. The new site debuts with a modest amount of content and is expected to expand rapidly through contributions from the Related community in the form of blogs, forum threads, and webinars. The author invites readers to report navigation errors, share feedback, and propose ideas to help steer MLRelated into a practical, community-driven resource for researchers and practitioners in ML and adjacent domains.


Fractional Delay FIR Filters

Neil RobertsonNeil Robertson February 9, 202017 comments

You can realize arbitrary fractional-sample delays with standard FIR filters by shifting a sinc impulse response and removing symmetry, then windowing the result. This post shows a practical window-method implementation using Chebyshev windows, gives Matlab functions (frac_delay_fir.m and frac_delay_lpf.m) in the appendix, and walks through examples that demonstrate the delay, magnitude trade-offs, and how increasing taps widens the flat-delay bandwidth.


New Code Sharing Section & Reward Program for Contributors!

Stephane BoucherStephane Boucher October 15, 201012 comments

DSPRelated is launching a new code sharing section and looking for contributors to help seed it with useful DSP snippets. Stephane Boucher also introduces a pageview-based reward program, with payouts tied to unique visits so popular code can earn contributors up to $250. It is a practical push to build a high-quality library for the DSP community from the start.


50,000th Member Announced!

Stephane BoucherStephane Boucher January 11, 2010

DSPRelated just crossed a major milestone, 50,000 registered members, and Stephane Boucher celebrates the anniversary by spotlighting the lucky winner, Charlie Tsai, an assistant professor in Taiwan. The post also looks back at more than a decade of community growth and thanks the contributors, authors, and sponsors who helped make the site a go-to DSP resource. It closes with a promise of big improvements ahead in 2010.


Almost 50,000 Members!

Stephane BoucherStephane Boucher November 26, 20091 comment

DSPRelated is about to hit a big milestone, and Stephane Boucher marks the moment with a playful giveaway announcement. The post jokes about a BMW prize for the 50,000th registered member, then reveals the real reward, a copy of Rick Lyons’ Understanding Digital Signal Processing. It is a lighthearted community update built around a membership milestone and a bit of fun.


DSPRelated faster than ever!

Stephane BoucherStephane Boucher March 2, 20094 comments

Stephane Boucher moved DSPRelated's static assets to Amazon CloudFront to shrink page load times worldwide. Images, JavaScript and CSS are now served from the nearest CloudFront edge server, reducing latency especially for readers in Europe and Asia. If you visit regularly, you should notice the speedup, and the author asks readers to report their load-time experience in the comments.


New Papers / Theses Section

Stephane BoucherStephane Boucher March 21, 20081 comment

Stephane Boucher launched a Papers & Theses section on DSPRelated to gather DSP dissertations and papers in one spot. Authors can submit already-hosted documents or upload PDFs for optional hosting, provided they have sharing rights, and help is available for PDF conversion. Listing your work boosts visibility and opportunities, and non-English documents are welcomed while the section is in beta.


New Blog Section!

Stephane BoucherStephane Boucher September 19, 20072 comments

DSPRelated just launched a new blogs section, and it is already starting to take shape. Stephane Boucher says he received around 50 proposals from DSP engineers, chose an initial set of 10 bloggers, and is now setting up their accounts. The section is still in beta, but there is also more on the way, including a future area for sharing quality code in asm, C, and MATLAB.


New Discussion Group: DSP & FPGA

Stephane BoucherStephane Boucher September 11, 20078 comments

Stephane Boucher has launched a new discussion group for engineers implementing DSP functions on FPGAs. It is meant to become a focused place for sharing ideas, but he notes it may take a few weeks before enough members join for the discussion to really get going. If FPGA-based DSP is your thing, this is an open invitation to get involved early.