Field Guide · algorithm

Also known as: MRC, maximum ratio combining, ratio squarer

Maximal-ratio combining (MRC) is the optimal way to merge the branches of a diversity receiver when the impairment is additive noise: rotate each branch so the copies add in phase, weight each by its own signal quality, and sum.1 The result is stronger than any single branch — the combined SNR is the sum of the branch SNRs — and a branch deep in a fade still contributes its share instead of being thrown away, which is what separates MRC from simply selecting the best antenna.

x₀ x₁ × conj(h₀) × conj(h₁) Σ SNR = γ₀ + γ₁
Each branch is multiplied by the conjugate of its channel estimate — co-phasing it and scaling it by its own strength — before the sum, so every branch contributes in proportion to its quality.

How it works

If branch k receives x_k = h_k·s + n_k — the transmitted signal s through a complex channel gain h_k, plus independent noise of equal power — the MRC output is

y = Σ conj(h_k)·x_k / Σ |h_k|².

Multiplying by conj(h_k) does two jobs at once: it rotates every branch to a common phase (so the signal copies add coherently, amplitude-on-amplitude) and it weights each branch by |h_k| (so a strong branch counts more than a weak one). Signal amplitudes then add linearly while the independent noises add only in power, and the combined SNR works out to exactly γ₀ + γ₁ + … — the “maximal ratio” that no other linear weighting can beat under additive white noise. Two equal branches gain 3 dB even with no fading; under Rayleigh fading the real win is the diversity order, because both branches must fade simultaneously before the output does.

The price is the h_k themselves: MRC needs a complex channel estimate per branch, which means either a training sequence or a blind estimator, and a full coherent receiver chain per antenna. The cheaper combining rules — selection, switched, equal-gain — exist precisely to avoid that cost; see antenna diversity for the family.

Limits worth knowing

  • MRC assumes the impairment is noise. Against a directional co-channel interferer it is actively wrong — it weights the branch where the interferer is loudest the most. Nulling interference instead requires interference rejection combining.
  • A single complex weight is frequency-flat. Combining a wideband stream with one scalar per branch is exact only if the branches differ by a frequency-flat constant. Antennas metres apart give each carrier its own phase difference, so a scalar aligns whichever carrier dominates the cross-power and partially cancels the rest; the fix is combining per channel, after the DDC.
  • A delay is not a gain. A constant inter-branch timing skew dilutes broadband coherence even though per-frequency coherence stays near 1, and no scalar weight can represent it — the branches must be time-aligned first (see fractional-delay filter).

Relevance to SDR

MRC is the receive-side workhorse of Wi-Fi, cellular and MIMO systems, and it is exactly what a dual-channel SDR front end (USRP with two daughterboards, a dual-channel AD9361) makes possible in software. GopherTrunk implements wideband MRC in its SoapyRemote driver (internal/dsp/diversity/mrc.go, enabled with diversity: mrc or mrc-static on a two-channel device): branch gains are estimated by least squares against a reference branch, gated on measured coherence rather than absolute level, and either frozen once (mrc-static, right for shared-LO front ends) or tracked continuously (mrc, right for independent-PLL daughterboards). The reference branch’s weight is pinned to 1+0j, which anchors the output phase and keeps the combiner safe ahead of differential decoders. The practical lessons — coherence gates, skew alignment, and when MRC cannot help — are collected in MRC diversity gotchas.

Sources

  1. Maximal-ratio combining — Wikipedia, on conjugate-weight combining and the summed-SNR optimality result. 

See also