DSPRelated.com

The First-Order IIR Filter -- More than Meets the Eye

Neil RobertsonNeil Robertson November 16, 20257 comments

While we might be inclined to disdain the simple first-order infinite impulse response (IIR) filter, it is not so simple that we can’t learn something from it. Studying it can teach DSP math skills, and it is a very useful filter in its own right. In this article, we’ll examine the time response of the filter, compare the first-order IIR filter to the FIR moving average filter, use it to smooth a noisy signal, compute the functional form of the impulse response, and find the frequency response.


Learn to Use the Discrete Fourier Transform

Neil RobertsonNeil Robertson September 28, 2024

Discrete-time sequences arise in many ways: a sequence could be a signal captured by an analog-to-digital converter; a series of measurements; a signal generated by a digital modulator; or simply the coefficients of a digital filter. We may wish to know the frequency spectrum of any of these sequences. The most-used tool to accomplish this is the Discrete Fourier Transform (DFT), which computes the discrete frequency spectrum of a discrete-time sequence. The DFT is easily calculated using software, but applying it successfully can be challenging. This article provides Matlab examples of some techniques you can use to obtain useful DFT’s.


Pentagon Construction Using Complex Numbers

Cedron DawgCedron Dawg October 13, 2023

A method for constructing a pentagon using a straight edge and a compass is deduced from the complex values of the Fifth Roots of Unity. Analytic values for the points are also derived.


Algebra's Laws of Powers and Roots: Handle With Care

Rick LyonsRick Lyons September 25, 202319 comments

Rick Lyons shows that familiar power and root rules from algebra can break down when exponents are complex. He tests common identities for two scenarios, real and fully complex exponents, with positive and negative mantissas, and compiles a table of cases that sometimes fail. The post includes MATLAB examples that reproduce counterexamples and a clear warning to numerically verify algebraic steps involving complex powers.


Simple Concepts Explained: Fixed-Point

Leandro StefanazziLeandro Stefanazzi January 24, 202312 comments

Fixed-point is the bridge between real-world values and integer arithmetic, and this post makes that bridge tangible with a hands-on ADC-to-gain example. It walks through mapping voltages to Q-format integers, choosing gain resolution in bits, and how multiplication adds bit growth and produces quantization error. Read it to build intuition for practical fixed-point choices when implementing DSP on FPGA or ASIC.


Candan's Tweaks of Jacobsen's Frequency Approximation

Cedron DawgCedron Dawg November 11, 2022

Cedron Dawg shows how small tweaks to Jacobsen's three-bin frequency estimator turn a popular approximation into an exact formula, and how a modest cubic correction yields a near-exact, low-cost alternative. The article derives an arctan/tan exact recovery, relates it to Candan's 2011/2013 tweaks, and supplies reference C code and numerical tables so engineers can see when each formula is sufficient.


A Recipe for a Basic Trigonometry Table

Cedron DawgCedron Dawg October 4, 2022

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.


Filtering Noise: The Basics (Part 1)

Aditya DuaAditya Dua September 17, 20223 comments

How do you pull signals out of random noise? This post builds intuition from first principles for discrete-time white Gaussian noise and shows how simple linear FIR filtering (averaging) reduces noise. You’ll get derivations for the output mean, variance and autocorrelation, learn why the uniform moving-average minimizes noise under a unity-DC constraint, and why its sinc spectrum can be problematic. Part 1 of a short series.


Determination of the transfer function of passive networks with MATLAB Functions

Josef HoffmannJosef Hoffmann December 7, 20212 comments

Starting the calculation from the output makes deriving a passive network transfer function simple, and this post shows how to do it in MATLAB using a sixth-order low-pass example. The walkthrough uses tf('s') to build a symbolic H(s), extracts coefficients with tfdata, and shows numerical frequency-response plotting via freqs or direct j*omega evaluation, with code and component values to reproduce the results.


Sampling bandpass signals

Josef HoffmannJosef Hoffmann June 26, 20215 comments

Bandpass signals can be sampled at rates below the usual Nyquist limit, and this note shows how the band-limited spectrum appears in baseband after sampling. Using a simple example figure, it defines the center frequency fc = (fmax + fmin)/2 and bandwidth Δf = fmax - fmin, and highlights that choosing fs less than twice the signal's highest frequency violates the sampling theorem.


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.


A Fixed-Point Introduction by Example

Christopher FeltonChristopher Felton April 25, 201122 comments

Christopher Felton walks through binary fixed-point representation with clear examples and a simple W=(wl,iwl,fwl) notation. He argues for designing to range and resolution rather than bit counts, then shows how multiplication and addition affect bit growth and alignment. These concrete examples make it easy to see why rounding, resizing, and radix-point bookkeeping are essential in DSP implementations.


Sum of Two Equal-Frequency Sinusoids

Rick LyonsRick Lyons September 4, 20146 comments

Rick Lyons exposes a frequent trig mistake and delivers complete closed-form expressions for collapsing two equal-frequency sinusoids into a single sinusoid. Using complex-exponential phasor addition and equating real and imaginary parts, he compiles easy-to-use tables for cosine+cosine, sine+sine, and cosine+sine cases and shows how to derive each form. Engineers get corrected identities and compact derivations useful for analysis and communications.


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.


A Beginner's Guide to OFDM

Qasim ChaudhariQasim Chaudhari May 1, 20176 comments

Orthogonal Frequency Division Multiplexing made modern high-speed wireless practical by turning one fast serial bitstream into many slow parallel streams carried on orthogonal sinusoids. This beginner guide explains, with minimal math, how the iDFT/DFT pair builds OFDM, how spectral slicing makes each subcarrier effectively flat so equalization reduces to simple divisions, and why a cyclic prefix prevents inter-symbol interference.


The Exponential Nature of the Complex Unit Circle

Cedron DawgCedron Dawg March 10, 20155 comments

Euler's equation links exponential scaling and rotation by translating a distance along the unit-circle circumference into a complex value. Cedron Dawg develops an intuitive geometric view, using integer and fractional powers of i to show how points, roots of unity, and multiplication behave as additive moves along that circumference. The article also connects this picture to radians and the conventional Taylor-series proof for broader perspective.


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.


Delay estimation by FFT

Markus NentwigMarkus Nentwig September 22, 200750 comments

Markus Nentwig presents a practical FFT-based algorithm to estimate and correct integer and fractional sample delays between two signals, returning a scaled, aligned replica and delay estimate. The method combines coarse cross-correlation with a phase-slope linear regression on weighted spectra to achieve subsample timing accuracy. The article also discusses accuracy limits, phase-unwrapping pitfalls, and how to use the error-vector spectrum to reveal distortion in lab measurements.


Python scipy.signal IIR Filter Design

Christopher FeltonChristopher Felton May 13, 20124 comments

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.


Polyphase filter / Farrows interpolation

Markus NentwigMarkus Nentwig September 18, 200714 comments

Markus Nentwig shows how polyphase filtering and the Farrow interpolator provide a practical, computation‑efficient way to realize sub-sample delays and variable resampling. He starts from the upsample-filter-decimate view, explains how polyphase decomposition reduces per-phase work, then describes how the Farrow structure fits polynomials to coefficient banks for continuous fractional-delay control. The post includes warnings about filter choices and links to code and references.