DSPRelated.com

Noise shaping

Markus NentwigMarkus Nentwig December 9, 20123 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.


Two jobs

Stephane BoucherStephane Boucher December 5, 201223 comments

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.


Coupled-Form 2nd-Order IIR Resonators: A Contradiction Resolved

Rick LyonsRick Lyons November 23, 20127 comments

Rick Lyons resolves a long-standing confusion about the coupled-form 2nd-order IIR resonator by deriving its correct z-domain transfer function and explaining why textbooks can appear to contradict pole plots. He shows that with infinite precision the coupled and standard denominators match, but finite-bit quantization of rcos(Θ) and rsin(Θ) changes the z^-2 coefficient and shifts pole positions. Read to learn the correct H(z) to predict quantized behavior and when the coupled form outperforms the standard design.


Setting the 3-dB Cutoff Frequency of an Exponential Averager

Rick LyonsRick Lyons October 22, 20126 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.


'z' as in 'Zorro': Frequency Masking FIR

Markus NentwigMarkus Nentwig October 2, 2012

Markus Nentwig shows an efficient way to build steep wideband FIR filters by combining upsampled and complementary stages, then masking their spectra. He provides a Matlab and Octave design program that uses a generic least-squares optimizer to place coefficients, letting you explore filter sizes and oversampling while cutting computational cost significantly compared to a conventional symmetric FIR.


Do you like the new Comments System?

Stephane BoucherStephane Boucher September 19, 20124 comments

Stephane Boucher has just rolled out a new comments system for the DSPRelated blogs and wants feedback from readers. He’s asking the community to try it out, share thoughts, and help shake out any issues before it gets expanded to the code snippets and papers sections.


FIR sideways (interpolator polyphase decomposition)

Markus NentwigMarkus Nentwig September 12, 20129 comments

Markus Nentwig presents a compact way to implement a symmetric FIR interpolator by rethinking the usual tapped delay line. The 1:3 polyphase example uses separate delay lines per coefficient to skip multiplies on known zeros and exploit symmetry, cutting multiplications substantially; a Matlab/Octave demo and notes on ASIC-friendly implementation are included to help evaluate real-world cost tradeoffs.


Design of an anti-aliasing filter for a DAC

Markus NentwigMarkus Nentwig August 18, 2012

If you need a practical way to design an anti-aliasing filter for a DAC, this post delivers an Octave/Matlab script that numerically optimizes a Laplace-domain transfer function for linear phase and arbitrary magnitude. The routine models the DAC sample-and-hold sinc response, compensates group delay automatically, and can include an optional multiplierless FIR equalizer. An example shows a 5.4 dB objective improvement and reduced analog Q for easier implementation.


Understanding the 'Phasing Method' of Single Sideband Demodulation

Rick LyonsRick Lyons August 8, 201231 comments

Rick Lyons explains how the phasing method separates overlapping single sideband transmissions using quadrature processing and the Hilbert transform, making SSB demodulation practical in crowded RF environments. After reviewing simple synchronous detection, he walks through spectra and block diagrams that show how complex downconversion produces i and q paths which reinforce the desired sideband and cancel the other. The post also covers DSP implementation tips and BFO error effects.


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.


A Remarkable Bit of DFT Trivia

Rick LyonsRick Lyons December 26, 20133 comments

Rick Lyons highlights a surprising equality: the DFT's worst-case scalloping loss equals 2/π, the same probability that a toothpick crosses a floorboard seam in Buffon's needle problem when the toothpick equals board width. The post sketches the DFT bin-intersection derivation and connects the math to the classic probability puzzle, offering a playful insight that sharpens intuition about bin responses.


A Lesson in Statistics Using Random Sequences

Neil RobertsonNeil Robertson March 14, 20267 comments

Statistics may come naturally to some people, but it is a difficult subject for many of us. Using simulations helps to remove some of the mystery of statistics. Luckily, it is trivial to produce a pseudo-random Gaussian or uniform sequence: a single command in Matlab (or Python) does it. In this article, I try to explain a few concepts using Gaussian and uniform random sequences generated in Matlab. First, we’ll generate a Gaussian sequence, calculate its variance, and plot a histogram and probability density function (PDF). Next, we’ll simulate the roll of a single die to illustrate a uniform distribution. Then we’ll simulate rolling two dice and finally, as an illustration of the Central Limit Theorem, we’ll sum the total when rolling several dice to obtain an approximately Gaussian distribution.


Accelerating Matlab DSP Code on the GPU

Seth Seth March 25, 20102 comments

Seth Benton spent a few days testing Jacket to accelerate MATLAB on NVIDIA GPUs, and found it surprisingly easy to speed up DSP code. He ran 2D FFT and interp2 benchmarks on a MacBook Air with a GeForce 9400M, seeing impressive speedups for large images while hitting GPU memory and precision limits at high sizes. The post shares practical tips on casting to GPU types, minimizing CPU-GPU transfers, and when GPU acceleration is most useful.


Filter a Rectangular Pulse with no Ringing

Neil RobertsonNeil Robertson May 12, 201610 comments

You can filter a rectangular pulse with no ringing simply by using an FIR whose coefficients are all positive, and make them symmetric to get identical leading and trailing edges. This post walks through a MATLAB example that convolves a normalized Hanning window with a 32-sample rectangular pulse, showing that window length controls edge duration and that shorter windows widen the spectrum. It also notes this is not a QAM pulse-shaping solution.


A Direct Digital Synthesizer with Arbitrary Modulus

Neil RobertsonNeil Robertson June 3, 20195 comments

Need exact sampled tones on a coarse grid without a huge sine table? This post shows how to build a Direct Digital Synthesizer with an arbitrary modulus so the output frequency is exactly k·fs/L, using a look-up table as small as 20 entries for the 10 MHz/0.5 MHz-step example. It also explains fixed-point LUT rounding, accumulator bit sizing, and how to produce quadrature outputs when L is multiple of 4.


Phase and Amplitude Calculation for a Pure Complex Tone in a DFT

Cedron DawgCedron Dawg January 6, 2018

Cedron Dawg derives compact, exact formulas to recover the phase and amplitude of a single complex tone from a DFT bin when the tone frequency is known. The paper turns the complex bin value into closed-form expressions using a sine-fraction amplitude correction and a simple phase shift, and includes working code plus a numeric example for direct implementation.


The Discrete Fourier Transform of Symmetric Sequences

Neil RobertsonNeil Robertson December 8, 2024

Symmetric sequences arise often in digital signal processing. Examples include symmetric pulses, window functions, and the coefficients of most finite-impulse response (FIR) filters, not to mention the cosine function. Examining symmetric sequences can give us some insights into the Discrete Fourier Transform (DFT). An even-symmetric sequence is centered at n = 0 and xeven(n) = xeven(-n). The DFT of xeven(n) is real. Most often, signals we encounter start at n = 0, so they are not strictly speaking even-symmetric. We’ll look at the relationship between the DFT’s of such sequences and those of true even-symmetric sequences.


Simple Discrete-Time Modeling of Lossy LC Filters

Neil RobertsonNeil Robertson April 19, 20231 comment

Converting a lossy LC filter into a discrete-time impulse response lets you analyze mixed analog and DSP systems in one time domain. This post walks through computing the LC frequency response via chain (ABCD) parameters including resistive losses, enforcing the Hermitian symmetry required for a real IDFT, and using the IDFT to produce an asymmetrical FIR impulse response. A 5th-order Butterworth example illustrates insertion loss and impulse-shape effects.


Polar Coding Notes: Channel Combining and Channel Splitting

Lyons ZhangLyons Zhang October 19, 2018

Lyons Zhang walks through the core algebra of polar coding, showing how channel combining builds the vector channel W_N from N copies of a binary-input DMC using the polar transform G_N = B_N F^{⊗n}. The notes then define channel splitting, derive the coordinate-channel transition probabilities from the chain rule, and present the recursive formulas that let you compute W_{2N}^{(2i-1)} and W_{2N}^{(2i)} from W_N^{(i)}.


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.