The History of CIC Filters: The Untold Story
Hogenauer's 1981 paper is the canonical CIC reference, but this post uncovers an earlier, practical origin story: engineer Richard Newbold used and documented a CIC decimation filter in late 1979. Rick Lyons recounts how Newbold’s HP-35 calculations produced the now-familiar frequency-response plot that appeared in Hogenauer's paper, why managers feared a pole at DC, and how demonstrations won adoption.
scipy.signal calling all developers
SciPy’s signal-processing toolbox is at a crossroads, and Christopher Felton is urging developers to jump in. He points to active discussion on scipy-dev, the possibility of a separate scikit-signal effort, and the broad set of functions already in scipy.signal. If you work in DSP and like open-source software, this is a good moment to look at the package, and maybe help shape it.
Oscilloscope Dreams
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.
[Book Review] Numpy 1.5 Beginner's Guide
Christopher Felton's review gives a pragmatic take on Ivan Idris's Numpy 1.5 Beginner's Guide, praising its hands-on, exercise-driven approach while flagging several shortcomings. He finds the book a useful starting point for newcomers to Python numerical computing thanks to practical examples and a chapter on testing, but warns the title, incomplete installation guidance, and some factual errors may mislead readers.
Design study: 1:64 interpolating pulse shaping FIR
Markus Nentwig presents a practical 1:64 root-raised cosine interpolator built from cascaded FIR stages that slashes computational cost. By separating pulse shaping from rate conversion, designing each interpolator to suppress only known alias bands, and equalizing the pulse shape, the design achieves just 4.69 MACs per output, roughly 12 percent of a straight polyphase implementation while meeting EVM targets.
Accurate Measurement of a Sinusoid's Peak Amplitude Based on FFT Data
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 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.
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.
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.
More free Ebooks
A handy roundup of free engineering ebooks and journals, with a focus on where DSPRelated readers might actually find useful material. The post points to InTechOpen, highlights several MATLAB books, and even calls out a numerical methods title plus some sensor fusion content. If you like browsing for practical references, this is a good place to start.
Ancient History
Technology moves fast, and the tools, platforms, and assumptions you rely on can become outdated almost overnight. In this reflective post, the author contrasts the rapid evolution of embedded development with the much slower pace of social change, from programming turnaround times to the underrepresentation of women in engineering. It is a reminder to keep learning, but also to think about how we work and who gets included.
Polar Coding Notes: Channel Combining and Channel Splitting
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)}.
Autocorrelation and the case of the missing fundamental
A short hands-on exploration shows why we perceive the fundamental pitch even when it's absent from the spectrum. Using saxophone recordings, high-pass filtering, and autocorrelation plots, the post demonstrates that the highest ACF peak often predicts perceived pitch rather than the strongest spectral line. The experiments also show that removing high harmonics eliminates the effect, and that autocorrelation is a useful but incomplete model of pitch perception.
Design Square-Root Nyquist Filters
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.
Computing an FFT of Complex-Valued Data Using a Real-Only FFT Algorithm
Rick Lyons shows a compact trick to get an N-point complex FFT using only real-input FFT routines by transforming the real and imaginary parts separately and recombining their outputs. The post presents a one-line recombination formula, Xc(m) = real[Xr(m)] - imag[Xi(m)] + j{imag[Xr(m)] + real[Xi(m)]}, and an algebraic derivation based on the two-real-in-one-complex FFT identity. Useful for systems that only provide real-only FFTs.
Add a Power Marker to a Power Spectral Density (PSD) Plot
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.
More free Ebooks
A handy roundup of free engineering ebooks and journals, with a focus on where DSPRelated readers might actually find useful material. The post points to InTechOpen, highlights several MATLAB books, and even calls out a numerical methods title plus some sensor fusion content. If you like browsing for practical references, this is a good place to start.
The 2024 DSP Online Conference
The DSP Online Conference returns for a fourth year, running October 29–31, with a program designed for students, engineers, hobbyists, and experts. Organized into four tracks—general DSP theory, communications, audio, and DSP with deep learning—the event accepts short MicroTalks through two-hour Workshops and offers early-bird registration plus immediate archive access for registrants.
Phase and Amplitude Calculation for a Pure Complex Tone in a DFT
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.
How precise is my measurement?
Precision is quantifiable, not guesswork. This post walks through practical, measurement-oriented statistics you can apply to static or dynamic signals to answer the question, "How precise is my measurement?" It focuses on using multiple samples, checking distribution assumptions, and constructing confidence intervals and levels so you can trade measurement time for a desired precision.
New Code Sharing Section & Reward Program for Contributors!
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.
The 2024 DSP Online Conference
The DSP Online Conference returns for a fourth year, running October 29–31, with a program designed for students, engineers, hobbyists, and experts. Organized into four tracks—general DSP theory, communications, audio, and DSP with deep learning—the event accepts short MicroTalks through two-hour Workshops and offers early-bird registration plus immediate archive access for registrants.
Two Bin Exact Frequency Formulas for a Pure Real Tone in a DFT
Cedron Dawg derives exact, closed-form frequency formulas that recover a pure real tone from just two DFT bins using a geometric vector approach. The method projects bin-derived vectors onto a plane orthogonal to a constraint vector to eliminate amplitude and phase, yielding an explicit cos(alpha) estimator; a small adjustment improves noise performance so the estimator rivals and slightly betters earlier two-bin methods.
'z' as in 'Zorro': Frequency Masking FIR
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.
A Table of Digital Frequency Notation
Rick Lyons compiles a compact, practical table that untangles the many algebraic frequency notations used in DSP. The reference lines up continuous and discrete sinusoid forms, shows the frequency variable names and units, and lists valid ranges and conversions like Ω = 2πf and normalized forms with fs. A printable PDF of the table is available for easy desk reference.
DFT Bin Value Formulas for Pure Complex Tones
Cedron Dawg derives closed-form DFT bin formulas for single complex exponentials, eliminating the need for brute-force summation and showing how phase acts as a uniform rotation of all bins. He also gives a Dirichlet-kernel form that yields the magnitude as (M/N)|sin(δN/2)/sin(δ/2)|, explains the large-N sinc limit, and includes C code to verify the results.
Constrained Integer Behavior
Overflow and underflow are not always bugs, they can be useful in DSP when fixed-width integers wrap during processing. Christopher Felton demonstrates with moving-average (recursive-windowed-averager) and CIC filter examples how 2's complement wraparound in MyHDL's modbv cancels between an integrator and a comb via pole-zero cancellation. He also covers fixed-point resizing choices, saturation versus wrap, and how rounding error can accumulate.
New Discussion Group: DSP & FPGA
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.
TI DSP Predictions
Jeff Brower lays out two bold predictions for Texas Instruments that could reshape the DSP developer ecosystem. He argues TI will offer a supported real-time Linux on their C6x DSPs now that legal obstacles have eased, and that TI may acquire an FPGA company to own the board space around its chips. Read to weigh the technical and strategic impact.
Evaluate Noise Performance of Discrete-Time Differentiators
Differentiators can be wildly different at rejecting noise, even when they share the same usable bandwidth. Neil Robertson introduces the Differentiator Noise Power Ratio, a practical Gaussian-noise metric and a compact formula that uses the filter coefficients to quantify output noise and SNR loss. The post also gives MATLAB guidance for designing and comparing FIR differentiators so you can pick or build filters with much better noise performance.



















