Demo — ROC Explorer#

This demo turns detection theory into a picture. The top plot is the receiver operating characteristic — \(P_d\) against \(P_{fa}\) — and it climbs toward the perfect-detector corner as SNR rises. The bottom panel shows why: two overlapping distributions, noise-only and signal-plus-noise, with a movable threshold whose tails are exactly \(P_{fa}\) and \(P_d\).

The idea#

Detection is a thresholded comparison of a decision statistic against noise. Raising the threshold lowers both \(P_{fa}\) (the noise tail) and \(P_d\) (the signal tail) — you cannot separate them without more SNR. Integration buys SNR: coherently at \(+10\log_{10}N\) dB, non-coherently at about \(+5\log_{10}N\) dB — roughly \(\sqrt{N}\) at low per-pulse SNR, with the true gain lying between \(\sqrt{N}\) and \(N\).

The model on this page. The decision statistic is a matched-filter output with unit-variance noise: noise-only is \(\mathcal{N}(0,1)\), signal-plus-noise is \(\mathcal{N}(d,1)\), and the separation is \(d = \sqrt{2\,\text{SNR}}\). The threshold \(T\) then gives \(P_{fa} = Q(T)\) and \(P_d = Q(T-d)\), where \(Q\) is the Gaussian tail.

Interactive demo#

Open in full screen

Walkthrough#

  1. Default settings (SNR = 13 dB, N = 1). Slide the threshold and watch the operating point trace the ROC curve while the two PDF tails — \(P_{fa}\) in blue, \(P_d\) in red — grow and shrink.

  2. Drop SNR to 6 dB. The two distributions overlap more, the ROC sags away from the corner, and \(P_d\) collapses at the same \(P_{fa}\). Detection is an SNR business.

  3. Integrate. Set N = 64 and leave it non-coherent: the curve climbs back toward the corner (\(+5\log_{10}64 \approx 9\) dB). Now switch to coherent and watch it climb further (\(+10\log_{10}64 \approx 18\) dB).

  4. Find the rule of thumb. Return to N = 1 and set the threshold for \(P_{fa} = 10^{-6}\). At SNR = 13 dB the readout shows \(P_d = 0.94\); back the SNR down to 12.6 dB and it reads \(P_d = 0.900\) exactly. Either way you have landed on the steady-target operating point from the reading, to within half a dB.

Key observations#

  • Higher SNR pushes the ROC to the top-left. The whole game is separating the signal distribution from the noise distribution.

  • The threshold trades \(P_d\) against \(P_{fa}\) — moving it slides the operating point along a fixed-SNR curve; it cannot move you to a better curve.

  • Integration moves you to a better curve. Coherent integration is twice as efficient in dB as non-coherent, which is why AESAs work hard to stay phase-coherent across the dwell.

Source#

MATLAB bundle · L8_PdPfaAndROC.m

The companion script generates Gaussian noise and a steady target return, sweeps the threshold to measure \(P_d\) and \(P_{fa}\) by Monte Carlo, plots ROC curves for SNR = 0, 6, and 13 dB, and applies non-coherent integration of 16 pulses to watch the curve shift. This page uses an analytical Gaussian-separation approximation so the curve updates instantly. For a single pulse (N = 1) it sits within ~0.5 dB of the Monte-Carlo result at the operating points of interest. For N > 1 the page simply shifts the SNR by the \(+5\log_{10}N\) / \(+10\log_{10}N\) rule of thumb, so the non-coherent curves are a teaching approximation rather than a prediction — the script’s Monte Carlo is the honest number there.