DSPRelated.com

Adventures in Signal Processing with Python

Jason SachsJason Sachs June 23, 201311 comments

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 BoucherStephane Boucher May 30, 2013

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 FeltonChristopher Felton May 19, 2013

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

Rick LyonsRick Lyons April 12, 201366 comments

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 Kyle March 19, 201310 comments

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 LyonsRick Lyons March 13, 20137 comments

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!

Stephane BoucherStephane Boucher February 20, 20132 comments

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

Rick LyonsRick Lyons February 18, 201316 comments

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

Rick LyonsRick Lyons January 14, 20135 comments

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 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.


The Beginning of a New Chapter

Stephane BoucherStephane Boucher October 22, 20255 comments

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.


A Wide-Notch Comb Filter

Rick LyonsRick Lyons November 24, 201918 comments

Traditional comb filters make very narrow stopband notches, which limits their ability to suppress broader interfering tones. Rick Lyons presents a linear-phase comb filter that produces wider stopband notches than the conventional design while preserving linear-phase behavior. The post also reviews the traditional cascaded recursive running-sum architecture, its co-located dual poles and zeros on the z-plane, and the placement of nulls at integer multiples of fs/D.


A Two Bin Solution

Cedron DawgCedron Dawg July 12, 2019

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.


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.


Radio Frequency Distortion Part II: A power spectrum model

Markus NentwigMarkus Nentwig October 11, 20101 comment

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.


Weighted least-squares FIR with shared coefficients

Markus NentwigMarkus Nentwig May 23, 2012

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.


Multi-Decimation Stage Filtering for Sigma Delta ADCs: Design and Optimization

AHMED SHAHEINAHMED SHAHEIN March 1, 20176 comments

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

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.


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.