Python scipy.signal IIR Filter Design Cont.
Christopher Felton continues his practical tour of SciPy's iirdesign, moving beyond lowpass examples to show highpass, bandpass, and stopband designs with concise, code-focused explanations. He highlights how ellip and cheby2 let you tighten specifications for sharper transitions, and shows that the iirdesign workflow is consistent across filter types. Read for clear, reusable examples to produce IIR filter coefficients with scipy.signal.
TCP/IP interface (Matlab/Octave)
Markus Nentwig supplies a compact set of mex C functions that let you control Ethernet-enabled measurement instruments directly from Matlab or Octave on Windows. The code opens raw TCP/IP sockets, sends SCPI commands, and handles ASCII and binary replies including binary-length headers. It intentionally avoids instrument-control toolboxes and timeouts for simplicity, and includes instrIf_socket, instrIf_write, instrIf_read and instrIf_close with simple usage examples.
Understanding and Relating Eb/No, SNR, and other Power Efficiency Metrics
Eric Jacobsen untangles the common confusion around Eb/N0, SNR, Es/No and related power-efficiency metrics, showing when each metric applies and how to convert between them. He covers practical measurement techniques including spectrum-analyzer and slicer-based estimates, the impact of symbol rate, modulation order and FEC code rate, and offers simple sanity checks to catch common dB and factor-of-two errors. Engineers get a concise toolkit for accurate comparisons.
How Discrete Signal Interpolation Improves D/A Conversion
Digital interpolation can drastically simplify the analog filtering that follows a DAC, lowering cost and improving output quality. Rick Lyons explains how inserting zeros and applying a digital lowpass filter (interpolation-by-two) raises the effective sample rate, reduces the DAC sin(x)/x droop, and widens the analog filter transition band. The post gives practical intuition and spectral illustrations engineers can reuse in real designs.
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.
How Not to Reduce DFT Leakage
Rick Lyons debunks a proposed 'data-flipping' fix for DFT spectral leakage, demonstrating with MATLAB that it can produce higher sidelobes and a troubling mainlobe dip for some input frequencies. He explains that windowing's goal is to reduce amplitude discontinuities in a periodic extension, not merely to force end samples to zero, and concludes the method is frequency-dependent and not recommended.
Python scipy.signal IIR Filter Design
Christopher Felton walks through designing infinite impulse response filters using scipy.signal in Python, focusing on practical specs and functions rather than theoretical derivations. He explains normalized passband and stopband definitions, gpass and gstop, and shows how iirdesign and iirfilter differ. Plots compare elliptic, Chebyshev, Butterworth and Bessel responses, highlighting steep transitions versus near-linear phase tradeoffs.
Instant CIC
Modeling CIC decimators in floating point is simpler than you might think, Markus Nentwig shows, if you treat the filter as a finite FIR by sampling its impulse response. The post compares a naive float time-domain implementation, an FFT-based frequency-domain approach, and the recommended method of computing the impulse response and using an off-the-shelf FIR filter, with code and plots.
Curse you, iPython Notebook!
Christopher Felton shares a cautionary tale about losing an ipython 0.12 notebook session after assuming the browser would save his interactive edits. He explains that notebooks at the time required clicking the top Save button to persist sessions, and autosave was not yet available. He recommends basing interactive work on scripts, saving often, and testing export behavior to avoid redoing text, LaTeX, and plots.
Engineering the Statistics
Statistical analysis can get messy fast when theory and MATLAB simulations refuse to agree. This post shares a graduate student’s hard-earned shortcuts for taming random variables, from deriving a CDF or moments to using Gaussian or Gamma approximations, and falling back on Chernoff bounds when the exact PDF stays out of reach.
Bank-switched Farrow resampler
Markus Nentwig proposes a bank-switched variant of the Farrow resampler that breaks each impulse-response segment into multiple sub-segments, enabling accurate interpolation with lower-order polynomials and fewer multiplications per output. This trades increased total coefficient storage for computational savings. The post explains the concept, connects it to polyphase FIR interpolation, and provides Matlab/Octave and C example code for practical evaluation.
Three Bin Exact Frequency Formulas for a Pure Complex Tone in a DFT
Cedron Dawg derives closed-form three-bin frequency estimators for a pure complex tone in a DFT using a linear algebra view that treats three adjacent bins as a vector. He shows any vector K orthogonal to [1 1 1] yields a = (K·Z)/(K·D·Z) and derives practical K choices including a Von Hann (Pascal) kernel and a data-driven projection. The post compares estimators under noise and gives simple selection rules.
A Recipe for a Basic Trigonometry Table
Cedron Dawg walks through building a degree-based sine and cosine table from first principles, showing both recursive and multiplicative complex-tone generators. The article highlights simple drift-correction tricks such as mitigated squaring and compact normalization, gives series methods to compute one-degree and half-degree values, and includes practical C code that ties the table to DFT usage and frequency estimation.
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.
Matlab Programming Contest
Love puzzles or want to sharpen your MATLAB skills? Christopher Felton highlights MathWorks' biannual MATLAB programming contest, a week-long set of clever algorithm challenges that require only base MATLAB. Whether you're experienced or new, you can compete, compare solutions, or simply study others' code when later phases disclose submissions. No toolboxes or mex files allowed, so it's a pure programming playground for learning and bragging rights.
Fibonacci trick
Tim Wescott shares a compact, surprising trick linking Fibonacci numbers and difference equations. Start with any two consecutive Fibonacci numbers, negate the larger-magnitude one, and iterate the usual recurrence; after a few steps you'll arrive at the standard Fibonacci sequence or its negative. This behavior is specific to the Fibonacci recurrence and makes a great illustrative example for teaching linear recurrences.
Compute the Frequency Response of a Multistage Decimator
This post shows a practical way to compute the full frequency response of a multistage decimator by representing every stage at the input sample rate. The author walks through upsampling lower-rate FIR coefficients, convolving to form the overall impulse response, and taking a DFT, then demonstrates how aliasing and stopband placement affect the aliased components. Example Matlab code and plots illustrate each step.
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.
A Wide-Notch Comb Filter
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.
The Risk In Using Frequency Domain Curves To Evaluate Digital Integrator Performance
Frequency-response curves can be misleading when selecting a digital integrator, Rick Lyons shows, and he proves it with counterexamples using seven test signals. By comparing methods such as Simpson's 1/3 rule, Al-Alaoui, and Tick's rule on definite-integral tasks, Lyons demonstrates that a close match to the ideal frequency response does not guarantee accurate integrals, because input signal traits strongly affect results.
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.
Simultaneously Computing a Forward FFT and an Inverse FFT Using a Single FFT
Rick Lyons presents a compact seven-step algorithm to compute a forward FFT and an inverse FFT at the same time using a single radix-2 complex FFT. The method builds intermediate sequences v(n) and z(n), exploits conjugate symmetry, and requires only one N-point FFT plus about 2N additions or subtractions. A clear MATLAB implementation accompanies the explanation so you can try it immediately.
Fibonacci trick
Tim Wescott shares a compact, surprising trick linking Fibonacci numbers and difference equations. Start with any two consecutive Fibonacci numbers, negate the larger-magnitude one, and iterate the usual recurrence; after a few steps you'll arrive at the standard Fibonacci sequence or its negative. This behavior is specific to the Fibonacci recurrence and makes a great illustrative example for teaching linear recurrences.
A Two Bin Exact Frequency Formula for a Pure Complex Tone in a DFT
Cedron Dawg derives an exact two-bin frequency formula for a pure complex tone in the DFT, eliminating amplitude and phase to isolate frequency via a complex quotient and the complex logarithm. He presents an adjacent-bin simplification that replaces a complex multiply with a bin offset plus an atan2 angle, and discusses integer-frequency handling and aliasing. C source and numerical examples show the formula working in practice.
Three Bin Exact Frequency Formulas for a Pure Complex Tone in a DFT
Cedron Dawg derives closed-form three-bin frequency estimators for a pure complex tone in a DFT using a linear algebra view that treats three adjacent bins as a vector. He shows any vector K orthogonal to [1 1 1] yields a = (K·Z)/(K·D·Z) and derives practical K choices including a Von Hann (Pascal) kernel and a data-driven projection. The post compares estimators under noise and gives simple selection rules.
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.
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.
Overview of my Articles
Cedron presents a guided tour of his DSPRelated articles that teach the discrete Fourier transform through derivations, numerical examples, and sample code. The collection centers on novel "bin value" formulas and exact frequency estimators for complex and real tones, with methods for phase and amplitude recovery and iterative multitone resolution. The overview also points to a zeroing-sine window family and an integer pseudo-differentiator for efficient peak and zero-crossing detection.
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 post announces the fifth annual DSP Online Conference, marking the event’s 5th anniversary and featuring renowned DSP practitioners including fred harris, Rick Lyons, Julius Orion Smith III, and Dan Boschen. It outlines access options—purchased passes provide on-demand viewing of all sessions through September 2025—and explains the daily release structure, with new sessions posted at 6 AM EDT and a chat/forum for each presentation. The article describes select live Q&A interactions hosted via Zoom (informal, 30-minute sessions) and lists three scheduled live presentations: Dan Boschen’s workshop on October 30 at 11 AM EDT and Fred Harris’s talks on October 31 at 10 AM and noon EDT. Recordings of live presentations are promised to appear on-demand shortly after they conclude.















