Also known as: channel estimate, CSI estimation
Channel estimation is the receiver’s measurement of what the radio channel did to the signal — the complex gain, phase rotation, delay spread, or full impulse response between transmitter and receiver — so that later stages can undo it or exploit it.1 Almost every coherent technique stands on a channel estimate: an equalizer needs one to invert ISI, maximal-ratio combining needs one per branch to co-phase and weight, and interference rejection combining needs one just to define what the interference is.
How it works
The workhorse is least squares against known symbols. If the receiver knows the
transmitted training block s and observes x = h·s + n, the LS estimate is
ĥ = Σ x·conj(s) / Σ |s|² — a correlation against the known pattern, normalised. Its
accuracy improves with training length N (the estimate’s phase error shrinks roughly as
1/√(SNR·N)), which is the quantitative reason standards spend airtime on pilots: GSM and
TETRA put a known midamble
(training sequence) in the middle of every burst,
OFDM systems scatter pilot subcarriers across the grid, and P25/DMR receivers can treat
their frame sync words as free training. An MMSE
refinement folds in noise statistics; interpolation extends pilot estimates across time and
frequency as the channel changes.
When no training exists, blind estimation falls back on statistics — the constant modulus of a PSK constellation (as the CMA equalizer does), cyclostationarity, or cross-correlation between diversity branches. Blind estimates are cheaper in airtime but structurally weaker: they converge slower, leave ambiguities a statistic cannot see (a blind estimate cannot recover absolute phase), and — critically — they are contaminated by interference, because a correlation cannot tell the wanted signal from a co-channel one and returns a power-weighted blend of both channels. That single limitation is why blind IRC fails while trained IRC works.
In practice
Three habits separate estimates that hold up from ones that mislead:
- Remove DC before correlating. Two receiver branches share LO leakage; an uncentred cross-correlation on independent noise plus a common DC term reports near-perfect coherence and “estimates” the ratio of the DC offsets — confidently measuring nothing.
- Gate on the estimate’s own error, not on signal level. The projected phase error
√((1−ρ²)/(2Nρ²))from measured coherence ρ and window length N says whether an estimate is trustworthy, independent of gain staging or bandwidth. - Track when the channel moves. A one-shot estimate is only right while the hardware holds still; independent PLLs, tuner retunes, and fading all demand re-estimation with smoothing.
Relevance to SDR
In GopherTrunk the same LS machinery appears at two scales. Per diversity branch, the
SoapyRemote MRC combiner estimates one complex gain per ~2 ms window against a reference
branch (internal/dsp/diversity/tracking.go), coherence-gated and smoothed — a wideband,
frequency-flat channel estimate. Per burst, the TETRA traffic extractor trains a short
FIR channel inverse on the burst’s known midamble
(snapshot equalization via SnapshotLMS), a
frequency-selective estimate valid for one burst. Both illustrate the same trade: training
symbols buy an estimate that interference and noise cannot silently corrupt, and where no
training exists, every downstream conclusion inherits the blind estimate’s blind spots.
Sources
-
Channel state information — Wikipedia, on estimating channel properties from training-based and blind methods and their use in coherent receivers. ↩