Also known as: matched filter, correlation filter, correlator
A matched filter is the linear filter that maximises the signal-to-noise ratio at a chosen sampling instant when the shape of the wanted signal is known and the noise is white.1 Its impulse response is simply a time-reversed, conjugated copy of the pulse it is matched to, and it is the single most important filter in a digital receiver: every symbol decision is only as good as the SNR the matched filter delivers to the slicer.
How it works
Filtering with a time-reversed copy of the target pulse is mathematically identical to correlating the input against that pulse: at each instant the filter output measures how well the incoming samples line up with the template. When the wanted pulse is present and aligned, all of its energy adds coherently into a single tall peak, while white noise — which does not correlate with the template — averages toward zero. The result is the largest possible ratio of peak signal power to noise power at the sampling instant, and no linear filter can do better against white noise. This is why the matched filter is called optimal: it is a provable, not heuristic, result.
Two ways of seeing the same operation:
- Filter view — convolve the received signal with
h(t) = s(T − t), the flipped pulse. Convolving with a flipped template is exactly correlation. - Correlator view — multiply the input by the stored template and integrate over the symbol. For a rectangular pulse this is a plain “integrate-and-dump”; for a shaped pulse it is the shaped correlation.
The peak’s height gives the detection statistic (is the symbol a one or a zero, is the sync word present) and its location in time gives timing — which is why matched filtering underpins both symbol slicing and frame synchronisation.
Variants: symbol shaping vs. sequence detection
For linearly-modulated data the matched filter is the receive pulse-shaping filter. When the transmitter uses root-raised-cosine shaping, the receiver’s RRC is the matched filter — the same square-root split that gives zero ISI also gives optimal SNR, which is the elegant reason RRC is split symmetrically across the link.
For detection of a known sequence — a preamble, sync word, or spreading code — the “pulse” is an entire code word and the matched filter is a correlator against it. This is how a receiver finds a Barker code preamble or despreads a maximal-length sequence: correlate against the known code and watch for the peak. Radar reuses the identical idea (pulse compression), correlating the echo against the transmitted chirp to trade a long, low-power pulse for fine range resolution.
In practice
The matched filter is where receiver sensitivity is won or lost. Its benefit is greatest for weak signals and long, structured pulses; its one prerequisite is that you actually know the pulse or code shape, so it applies to the deterministic parts of a waveform (shaping, preambles, sync, spreading codes) rather than to the random payload itself.
Relevance to SDR
Matched filtering is a standard receive step in essentially every digital SDR decode chain, improving demodulation of weak signals and enabling reliable frame sync. GopherTrunk applies receive matched/pulse-shaping filters for the linear modes it decodes and uses correlation against known sync patterns to find frame boundaries in the trunking control and voice streams it follows.
Sources
-
Matched filter — Wikipedia, on the SNR-optimal time-reversed correlation filter and its derivation for white noise. ↩