Adventures in Signal Processing with Python
Jason Sachs shows how PyLab (numpy, scipy, matplotlib) can handle many signal-processing and visualization tasks engineers usually reach for MATLAB to do. He walks through practical examples including PWM ripple, two pole RC filters, and symbolic math with SymPy, and shares real-world installation tips and trade-offs. The post closes with pointers to IPython and pandas to speed interactive analysis and data handling.
Collaborative Writing Experiment: Your Favorite DSP Websites
Stephane Boucher invites the DSPRelated community to a live Google Docs experiment to crowdsource the best DSP websites. After a successful run with EmbeddedRelated, he opens a shared document where members can add, edit, and curate links in real time. The post explains the simple rules, notes revision rollback protection, and asks readers to refresh and help keep the list useful and spam-free while watching it evolve.
Python scipy.signal IIR Filtering: An Example
Christopher Felton walks through using scipy.signal IIR filters to demodulate PWM signals, using spectrum and spectrogram analysis to show what works and what does not. He demonstrates using filtfilt to avoid phase delay, compares a single narrow IIR to a very high order FIR, and shows how staged IIR filtering and multirate ideas give much better attenuation. Includes an FPGA-ready MyHDL PWM model.
A Quadrature Signals Tutorial: Complex, But Not Complicated
Quadrature signals are essential in modern communications, yet complex numbers and the j operator intimidate many engineers. In this tutorial Rick Lyons uses phasor geometry, three-dimensional time and frequency plots, and practical I/Q sampling examples to demystify complex exponentials, negative frequency, and how to generate baseband complex signals. Read to get physical intuition and hands-on rules you can apply to modulation, demodulation, and DSP implementations.
Polyphase Filters and Filterbanks
Kyle walks through practical polyphase filtering and analysis filterbanks, complete with Python code using numpy, scipy and matplotlib. The post shows how splitting an FIR into M polyphase legs gives identical, more efficient decimation while avoiding aliasing, and it flags the subtle reordering, zero padding and FFT versus IDFT ordering issues that trip many implementers. Includes runnable reference code and links for deeper theory.
Beat Notes: An Interesting Observation
Rick Lyons overturns a common intuition about beat notes, showing that adding two nearby audio tones yields an average-frequency tone whose amplitude fluctuates, rather than a separate low-frequency sinusoid. He contrasts multiplication and summation of sines, provides simple trigonometric insight, and includes Matlab audio demos to explain why aircraft engine "whump" sounds are amplitude fluctuations of the average engine frequency.
DSPRelated Finally on Twitter!
After resisting social networks, Stephane Boucher announces DSPRelated's move to Twitter and a few site improvements. Users can now sign in once to access DSPRelated, FPGARelated and EmbeddedRelated with the same account, and the site will post updates from @dsprelated, @embeddedrelated and @fpgarelated. To encourage followers, Boucher will occasionally tweet links that award prizes to the first visitors.
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.
The Little Fruit Market: The Beginning of the Digital Explosion
A small fruit market in Mountain View became an unlikely cradle for the modern electronics era. Rick Lyons recounts how William Shockley’s lab at 391 San Antonio prompted the Traitorous Eight to form Fairchild, seeding Silicon Valley and spawning an industry whose transistor production quickly dwarfed grains of rice. The post ties that history to the everyday ubiquity of semiconductor devices.
Noise shaping
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.
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.
Embedded World 2018 - The Interviews
Stephane Boucher brought video gear to Embedded World 2018 and teamed up with Jacob Beningo to capture concise vendor interviews that focus on real product news. The videos showcase Percepio's new Tracealyzer with a drone demo, Intrinsic ID's method for creating device-unique IDs from manufacturing variations, and SEGGER's broader toolset including embOS now certified by TÜV SÜD. Watch for short demos and expert explanations.
The DFT Output and Its Dimensions
The DFT gives N outputs for N samples, yet for real-valued signals most of those outputs are redundant. This post explains how conjugate symmetry organizes the output into a real DC bin, N/2-1 complex positive-frequency bins, a real Nyquist bin for even N, and then the conjugate mirror bins. A 64-point example illustrates which bins carry unique information and which can be discarded.
Some Thoughts on a German Mathematician
Rick Lyons revisits the remarkable career of Carl Friedrich Gauss, mixing memorable anecdotes with technical highlights. The post links Gauss’s work on the Gaussian curve, complex-plane representation, orbit prediction, and early telegraph experiments to ideas familiar to DSP engineers, and notes historical evidence that he developed trigonometric series before Fourier. It’s a short, engaging reminder of Gauss’s broad influence.
Signal Processing Summit - Cancellation Policy
The post announces a flexible cancellation policy for the inaugural Signal Processing Summit, an intimate DSP event limited to 70 seats and scheduled in Silicon Valley this October. It explains refundable options designed to give attendees confidence when registering early: a full refund minus a $95 processing fee for cancellations before the end of September, a 50% refund for cancellations in October before October 6, and no refunds after that date. The policy is positioned to help prospective attendees lock in the Early Bird rate, secure discounted hotel accommodations, and plan travel with reduced risk. The announcement frames the policy as a way to remove barriers to commitment and encourages readers who have been undecided to register now and attend the Summit.
Differentiating and integrating discrete signals
Think DSP's new chapter digs into discrete differentiation and integration, using first differences, convolution, and FFTs to compare time and frequency domain views. The author reproduces diff via convolution then explores cumsum as its inverse and runs into two puzzling mismatches: noisy FFT amplitude ratios for nonperiodic data, and a time-domain convolution that does not reproduce cumsum for a sawtooth despite matching frequency responses. The post includes IPython notebooks and invites troubleshooting.
Frequency Translation by Way of Lowpass FIR Filtering
Rick Lyons shows how you can translate a signal down in frequency and lowpass filter it in a single operation by embedding cosine mixing values into FIR coefficients. The post explains how to build the translating FIR, how to choose the number of coefficient sets, and how decimation can dramatically reduce storage needs while noting practical constraints like the requirement that ft be an integer submultiple of fs.
ESC Boston's Videos are Now Up
Stephane Boucher shares the videos he produced from ESC Boston, including a short highlight montage, a booth video for DLOGIC, and full talk clips from the conference. He also reflects on what he learned shooting on the show floor, especially the challenge of getting engineers on camera. It’s a quick behind-the-scenes look at technical event videography, with a preview of his next stop in Germany.
The 2021 DSP Online Conference
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.
Feedback Controllers - Making Hardware with Firmware. Part 3. Sampled Data Aspects
This article digs into practical sampled-data issues you must address when building feedback controllers for circuit emulation. It highlights a common MATLAB versus Simulink discrepancy caused by DAC holding, explains why FOH (ramp-invariant) c2d conversion matters, and surveys latency, bit depth, filter and precision trade-offs. It also lists candidate ADCs, DACs and FPGAs used in a real evaluation platform to guide hardware choices.
Coefficients of Cascaded Discrete-Time Systems
Multiplying discrete-time transfer functions is just polynomial multiplication, and polynomial multiplication is convolution. Neil Robertson shows that the numerator and denominator coefficients of cascaded systems come from convolving the individual coefficient vectors, then demonstrates the idea with MATLAB code and a 2nd-order IIR cascade that yields a 4th-order response. The approach makes computing time and frequency responses straightforward.
A Two Bin Solution
Cedron Dawg shows how a real sinusoid's frequency, amplitude and phase can be recovered from only two adjacent DFT bins. The article derives exact two-bin formulas, gives a clear Gambas reference implementation, and demonstrates that accurate parameters can be obtained with very few samples when the tone lies between the bins. It also explains when the method breaks down and how the real-valued unfurling improves robustness.
Radio Frequency Distortion Part II: A power spectrum model
Markus Nentwig presents a power-spectrum model that predicts RF nonlinear distortion from spectral power values instead of time-domain signals. The model computes distortion as repeated convolutions with a frequency-reversed replica and uses an FFT/IFFT trick with real-valued arithmetic for very high efficiency, making it suitable for system-level simulations and interference-aware radios. It is accurate for OFDM-like, Gaussian-amplitude signals when spectral binning is sufficiently fine; narrowband cases require denser bins.
A Direct Digital Synthesizer with Arbitrary Modulus
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.
Weighted least-squares FIR with shared coefficients
Markus Nentwig demonstrates how to design FIR filters that share coefficients across delay taps, allowing multiplier reuse and reduced implementation cost. He reimplements Lawson's iterative reweighted least-squares for complex-valued FIRs and provides Matlab/Octave code you can adapt for nonstandard constraints. The post explains iteration weight logic, the Toeplitz special-case with Levinson-Durbin, and practical trade-offs between multiplier count and stopband performance.
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.
Multi-Decimation Stage Filtering for Sigma Delta ADCs: Design and Optimization
A Matlab toolbox streamlines the design and optimization of multi-stage decimation filters for sigma-delta ADCs. MSD-toolbox automates stage-count and decimation-factor selection, generates Parks-McClellan equiripple FIR coefficients, and iteratively selects coefficient quantization to meet in-band noise constraints. It accepts sigma-delta bitstream stimuli for spectral and intra-stage analysis, includes cost estimation routines, and is published open-source on MathWorks with examples and a dissertation reference.
Filter a Rectangular Pulse with no Ringing
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.
Compute Images/Aliases of CIC Interpolators/Decimators
CIC filters provide multiplier-free interpolation and decimation for large sample-rate changes, but their images and aliases can trip up designs. This post supplies two concise Matlab functions and hands-on examples to compute interpolator images and decimator aliases, showing spectra and freqz plots. Readers will learn how interpolation ratio and number of stages alter passband, stopband, and aliasing behavior.
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)}.


















