Controlling a DSP Network's Gain: A Note For DSP Beginners
Rick Lyons calls out a simple but costly mistake beginners make when normalizing digital networks, scaling the input instead of the output. Using fixed-point examples he shows that pre-multiplying an A/D output by 1/8 throws away bits and costs about 18 dB of SQNR. The practical guidance is to place gain control as the final multiplication stage and beware a faulty Simpson's 1/3 integrator example.
Generating Partially Correlated Random Variables
Designing signals to match a target covariance is simpler than it sounds. This post shows how to build partially correlated complex signals by hand for the two-signal case, then generalizes to N signals using the Cholesky decomposition. Short MATLAB examples demonstrate the two-line implementation and the article highlights numerical caveats when a covariance is only positive semidefinite.
Free Goodies from Embedded World - Full Inventory and Upcoming Draw Live-Streaming Date
Stephane came back from Embedded World with a massive haul of development kits, tools and swag and decided to give it away to multiple winners. Read the full inventory, learn how to enter by liking or sharing the LinkedIn and Twitter posts, and tune in Friday March 29 at 1pm EST on EmbeddedRelated.tv for the live draw where winners will pick their prizes.
Angle Addition Formulas from Euler's Formula
Complex numbers are rotations and scalings in the plane, and Cedron Dawg walks through polar and Cartesian representations to make that concrete. Using Euler's formula, the article shows how multiplying complex numbers multiplies magnitudes and adds angles, and how that directly yields the sine and cosine angle-addition formulas. Practical notes cover using atan2/arg and a brief Gambas example to verify results.
Demonstrating the Periodic Spectrum of a Sampled Signal Using the DFT
This post makes a basic DSP principle tangible by computing the DFT over an extended set of bins and plotting the results. It demonstrates that a sampled signal's spectrum repeats every sampling rate, explains the k-to-frequency mapping, and contrasts common bin ranges such as 0..N-1 and -N/2..N/2-1. The write-up also highlights symmetry for real sequences and recommends using the FFT for efficiency.
Free Goodies from Embedded World - What to Do Next?
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.
Back from Embedded World 2019 - Funny Stories and Live-Streaming Woes
Stephane Boucher tried live-streaming multiple talks from Embedded World 2019 and turned a chaotic experiment into a useful set of lessons for embedded engineers. Between broken tripods, flaky venue WiFi, tricky German SIM purchases, and audio nightmares, he learned practical fixes for reliable streams and better video quality. Read this if you want candid, tactical advice on streaming hardware, connectivity, and on-site troubleshooting.
Spread the Word and Run a Chance to Win a Bundle of Goodies from Embedded World
EmbeddedRelated is turning Embedded World into a live-streaming experiment, and the more engineers help spread the word, the better the coverage could get. Stephane Boucher is asking readers to follow updates on Twitter and LinkedIn, where every like, share, or repost adds another chance to win a box of vendor goodies. The prize mix includes t-shirts, dev kits, gadgets, and plenty of pens.
Launch of EmbeddedRelated.tv
Stephane Boucher launches EmbeddedRelated.tv to host live broadcasts from Embedded World, starting next week. The site will show a constantly evolving schedule, a Live! tab to find ongoing streams, and ad-hoc demos added from the show floor. Expect schedule conflicts and small hiccups, and plan to refresh the page and join the forum thread for real-time updates and feedback.
Stereophonic Amplitude-Panning: A Derivation of the 'Tangent Law'
Rick Lyons presents a clear geometrical derivation of the stereophonic amplitude-panning Tangent Law, filling a gap left by common references. Using vector components and the equidistant speaker assumption to keep signals in phase, he arrives at the Tangent Law and isolates practical gain formulas gL and gR needed to place an apparent source at a desired panning angle. Engineers can apply Eqs. (12) and (14) directly.
Python number crunching faster? Part I
Christopher Felton walks through simple benchmarks comparing raw Python, numpy, and PyPy for numeric workloads, and shares what surprised him about performance. He shows that idiomatic Python optimizations such as list comprehensions and built-ins plus the PyPy JIT can sometimes beat a numpy approach for small tests, and explains why native PyPy numpy progress matters for scientific users.
Deesspee #5
Peter Kootsookos's Deesspee #5 is a very short micro-post simply titled "Computers". It acts as a minimalist flag in the Deesspee series pointing readers toward the computing topic on DSPRelated; click through to view the original entry and any context or discussion. This compact post is useful if you track the author's brief topic markers or short-format updates.
Why is Fourier transform broken
Many engineers know the Gibbs phenomenon without grasping its root cause. This post shows that the problem comes from using the incomplete metric space of continuous functions, C[a,b], for Fourier series, and explains how switching to Lp spaces resolves convergence in the mean but allows functions to differ on sets of measure zero. It also reminds readers that Fourier analysis gives no time localization, so be mindful of its limits.
Simplest Calculation of Half-band Filter Coefficients
Half-band FIR filters put the cutoff at one-quarter of the sampling rate, and nearly half their coefficients are exactly zero, which makes them highly efficient for decimation-by-2 and interpolation-by-2. This post shows the straightforward window-method derivation of half-band coefficients from the ideal sinc impulse response, providing a clear, hands-on explanation for engineers learning filter design. It also points to equiripple options such as Matlab's firhalfband and a later Parks-McClellan implementation.
The Beginning of a New Chapter
After years of hesitation, Stephane Boucher and Jacob Beningo finally turned their virtual events into an in-person reality with the inaugural Signal Processing Summit and Embedded Systems Summit at the Sonesta Silicon Valley. The post captures the logistics, a last-minute travel scare during a US government shutdown, the joy of meeting speakers like Fred Harris, and practical lessons for future technical events. It closes by inviting community feedback and venue suggestions.
Phase or Frequency Shifter Using a Hilbert Transformer
A Hilbert transformer converts a real input into an analytic I+jQ pair, enabling phase shifts and frequency shifts while keeping real inputs and outputs. This article shows Matlab implementations (31-tap FIR with Hamming or Blackman windows), derives y = I cosθ - Q sinθ for phase and frequency shifting, and highlights practical limits from finite taps and coefficient/NCO quantization.
ES Week Emphasis on Component Based Design
ES Week in Salzburg brought a strong theme into focus, component based design and automation for embedded and MPSoC systems. Praveen Raghavan highlights a few standout keynotes and industry talks, from SDR evolution at Infineon to Tensilica’s push toward instruction set extension and MPSoC assembly. He also notes Toshiba’s new VLIW vector processor for image and video front ends, along with the compiler challenges that come with it.
Model a Sigma-Delta DAC Plus RC Filter
Sigma-delta digital-to-analog converters (SD DAC’s) are often used for discrete-time signals with sample rate much higher than their bandwidth. For the simplest case, the DAC output is a single bit, so the only interface hardware required is a standard digital output buffer. Because of the high sample rate relative to signal bandwidth, a very simple DAC reconstruction filter suffices, often just a one-pole RC lowpass. In this article, I present a simple Matlab function that models the combination of a basic SD DAC and one-pole RC filter. This model allows easy evaluation of the overall performance for a given input signal and choice of sample rate, R, and C.
Hidden Linear Algebra in DSP
Linear algebra is hiding in plain sight inside many DSP techniques, not just abstract theory. By treating linear systems as matrix operators y = A x you reveal Toeplitz structure in LTI systems, connect to covariance matrices, and gain geometric intuition via eigenvalues and eigenvectors. This matrix viewpoint complements convolution-based thinking and offers practical tools for filter and channel analysis.
A Fast Guaranteed-Stable Sliding DFT Algorithm
Rick Lyons presents a compact, computationally efficient sliding DFT that computes a single N-point DFT bin output for each input sample in real time. The design replaces the traditional complex resonator with a 2nd-order real resonator and uses pole/zero cancellation to match the DFT bin response. Crucially, the resonator poles remain on the z-plane unit circle even with quantized coefficients, guaranteeing numerical stability.
Design a DAC sinx/x Corrector
Neil Robertson provides a compact Matlab function and coefficient tables for designing linear-phase FIR sinx/x correctors to undo the DAC sinc roll-off. The post explains the sinc_corr(ntaps,fmax,fs) call, shows worked examples with ntaps=5 and different fmax values, and demonstrates fixed-point quantization including a k=512 example and CSD digit guidance. Practical notes cover corrector gain and input back-off to avoid clipping.
Understanding Radio Frequency Distortion
Markus Nentwig breaks down how analog RF nonlinearities appear in a complex baseband model so you can simulate and predistort real transmitters. The article shows that even-order terms vanish in-band under narrowband assumptions, while odd-order products collapse to |BB(t)|^(n-1) BB(t) and do not depend on the carrier frequency. It also explains bandwidth scaling and includes a MATLAB example plus measured PA coefficients.
Digital PLL's, Part 3 -- Phase Lock an NCO to an External Clock
Phase-locking a numerically controlled oscillator to an external clock that is unrelated to system clocks is practical and largely unexplored. Neil Robertson presents a time-domain digital PLL that converts the ADC-sampled clock into I/Q with a Hilbert transformer and measures phase error with a compact complex phase detector. The post shows loop-filter coefficient formulas and simulations that reveal how ADC quantization and Gaussian clock noise map into NCO phase noise and how loop bandwidth shapes the result.
Angle Addition Formulas from Euler's Formula
Complex numbers are rotations and scalings in the plane, and Cedron Dawg walks through polar and Cartesian representations to make that concrete. Using Euler's formula, the article shows how multiplying complex numbers multiplies magnitudes and adds angles, and how that directly yields the sine and cosine angle-addition formulas. Practical notes cover using atan2/arg and a brief Gambas example to verify results.
Two jobs
Stephane Boucher explains why EmbeddedRelated went quiet for a few months after a volunteer project demanded more of his time. He and his wife organized a clown-gymnastics show with 15 kids, sold more than 700 of 800 tickets, and raised $2,700 for the Tree of Hope. Now the shows are done and he plans to resume regular posting with new site features.
Waveforms that are their own Fourier Transform
Steve Smith admits a long-standing mistake and overturns the claim that only Gaussians are their own Fourier transform. He gives trivial and nontrivial examples, explains why infinitely many such waveforms exist, and shows a quick discrete construction using the DFT with a 1/sqrt(N) normalization. Engineers get an intuitive 30-second argument plus a practical recipe to build self-Fourier signals.
Using the DFT as a Filter: Correcting a Misconception
Some sources claim the DFT, when used as a filter, shifts spectral energy down to DC. Rick Lyons shows that this is not true for consecutive DFT-bin outputs and explains the cause of the confusion: the FIR interpretation requires reversing the usual twiddle-factor order. He derives the DFT-bin frequency response, shows the bandpass center at 2πm/N, and explains when decimation does produce a translation to zero Hz.
5G NR QC-LDPC Encoding Algorithm
Lyons Zhang breaks down the 5G NR QC-LDPC encoding structure, emphasizing the circulant permutation matrices and why QC-LDPC suits simple hardware. The post defines the Q(P) and Q(-1) notation, summarizes BG1 and BG2 dimensions and selection rules, and shows how the parity-check matrix is partitioned for practical encoder implementations.
The First-Order IIR Filter -- More than Meets the Eye
While we might be inclined to disdain the simple first-order infinite impulse response (IIR) filter, it is not so simple that we can’t learn something from it. Studying it can teach DSP math skills, and it is a very useful filter in its own right. In this article, we’ll examine the time response of the filter, compare the first-order IIR filter to the FIR moving average filter, use it to smooth a noisy signal, compute the functional form of the impulse response, and find the frequency response.
Why Time-Domain Zero Stuffing Produces Multiple Frequency-Domain Spectral Images
Zero stuffing in the time domain creates spectral copies, and Rick Lyons walks through why that happens using DFT and DFS viewpoints. He shows that inserting L-1 zeros between samples yields a longer DFT with replicated spectral blocks, and that true interpolation requires lowpass filtering to remove those images. The post uses a concrete L=3 example and an inverse-DFT summation proof to make the effect intuitive.


















