Interpolation is the process of increasing the sample rate of a discrete-time signal by inserting new samples between existing ones, typically using a filter to reconstruct a smooth, band-limited result. (Upsampling, strictly speaking, refers to the rate-increase step alone, often by zero-stuffing; interpolation encompasses the full process including the filtering needed to estimate the new sample values.) The inserted samples are computed from a set of surrounding known samples rather than measured from an analog source.
In practice
In embedded signal processing, interpolation appears whenever two subsystems operate at different sample rates and a higher-rate signal must be synthesized from a lower-rate one. Common examples include DAC output stages (where oversampling the digital data before conversion reduces the analog reconstruction filter's complexity), audio sample-rate conversion (e.g., 44.1 kHz to 48 kHz), and motor control loops that need smoother command updates between slower planning cycles. The blog post "How Discrete Signal Interpolation Improves D/A Conversion" covers the DAC use case in detail.
The naive approach inserts L-1 zeros between each input sample (zero-stuffing, or "upsampling by L") and then applies a lowpass filter with a cutoff at pi/L to suppress the spectral images that zero-stuffing creates. The filter is the critical piece: omitting it or choosing an inadequate stopband leaves image energy in the output, which appears as distortion or aliasing artifacts. The post "Interpolator Design: Get the Stopbands Right" addresses why stopband attenuation requirements are easy to underestimate.
For modest upsampling ratios, a polyphase decomposition of the interpolation filter is the standard efficiency technique. It restructures the computation so that multiplications operate at the input (lower) rate rather than the output (higher) rate, typically reducing the multiply-accumulate count by a factor of L. The "Polyphase filter / Farrows interpolation" post covers polyphase structures alongside the Farrow filter, which handles non-integer or continuously variable rate changes.
Linear interpolation is the simplest non-trivial kernel: new samples are computed as a weighted average of two neighbors. It is cheap enough to run on 8-bit or 16-bit MCUs with no FPU, but its frequency response (that of a triangular/first-order hold kernel) rolls off at high frequencies and does not fully suppress spectral images, so it is best suited to slowly varying signals or applications where image rejection requirements are loose. Higher-quality kernels (raised cosine, windowed sinc) give better image rejection at higher computational cost. "An Efficient Linear Interpolation Scheme" and "Interpolation Basics" provide entry points for both levels of complexity.
Discussed on DSPRelated
Frequently asked
What is the difference between upsampling and interpolation?
The terms are often used interchangeably, but there is a technical distinction. Upsampling strictly refers to increasing the
sample rate, which can be done by zero-stuffing alone. Interpolation includes the subsequent
lowpass filtering step that estimates and fills in the new sample values and removes spectral images. In practice, the combined operation (zero-stuff plus filter) is what most engineers mean when they say either word.
Why does zero-stuffing create spectral images, and why must they be filtered out?
Inserting L-1 zeros between each sample scales the spectrum so that copies (images) of the original
baseband signal appear at multiples of the original
sample rate within the new, wider
Nyquist band. If those images are not removed by a
lowpass filter before the signal reaches a
DAC or downstream process, they appear as spurious frequency content indistinguishable from real signal energy.
How do I choose between linear interpolation and a windowed-sinc (FIR) interpolator?
Linear interpolation is O(1) per output sample, requires no filter coefficient storage, and is adequate when the signal changes slowly relative to the input
sample rate or when image rejection below roughly 20-30 dB is acceptable. A windowed-sinc
FIR interpolator can achieve substantially higher image rejection (60-100+ dB is achievable depending on filter length and window choice, but is not guaranteed), at the cost of N multiply-accumulate operations per output sample, where N is the filter length. On resource-constrained MCUs without a DSP MAC or FPU, linear interpolation is often the practical ceiling; on Cortex-M4/M7 or DSP cores, polyphase FIR is commonly viable.
What is a polyphase interpolation filter and why is it more efficient?
A
polyphase decomposition splits an L-times upsampling
FIR filter of length N into L sub-filters (phases), each of length N/L. Each sub-filter computes one of the L output samples per input sample, so all multiplications operate at the lower input rate. This reduces the total multiply-accumulate work by a factor of L compared to applying the full filter at the output rate, without changing the mathematical result.
What is a Farrow filter and when would I use one instead of a polyphase FIR?
A Farrow filter implements interpolation using a polynomial basis, which allows the fractional delay between input and output samples to be varied continuously at runtime rather than being fixed to a rational ratio. It is the standard choice for arbitrary or time-varying rate conversion, such as synchronizing two asynchronous clocks or correcting for clock drift in communications receivers. Polyphase
FIR filters work well for fixed integer or simple rational ratios (e.g., upsample by 4, then decimate by 3), but recomputing the filter bank each time the ratio changes is impractical.
Differentiators vs similar concepts
Interpolation is often confused with
decimation, which is the complementary operation of reducing the
sample rate. Together they form the basis of multirate signal processing: interpolation increases the rate (upsampling +
lowpass filter), decimation decreases it (lowpass filter + downsampling). Interpolation is also distinct from extrapolation: interpolation estimates values within the range of known samples, while extrapolation predicts beyond the last known sample, a significantly less reliable operation that rarely appears in DSP pipelines.