Demo — RCS Aspect Explorer#

RCS is a pattern, not a number, and the whole of Block 3’s signature reasoning turns on one gap: a handful of narrow specular spikes drag the linear mean far above the median, while a search radar sweeping past sees the floor most of the time. This demo puts a real 360° aspect pattern on a polar plot and lets you sweep a sector across it, watching the three summary numbers — max, median, and linear-mean — disagree in exactly the way that matters for detection range.

What the numbers mean#

The pattern is a low, noisy floor (roughly −15 to −27 dBsm) punctuated by four specular spikes at the facet normals 45°, 135°, 225°, and 315°, each reaching +15 dBsm across only a couple of degrees. To summarize a sector honestly, average in the linear domain, then convert back:

\[ \bar{\sigma}_\text{dBsm} = 10\log_{10}\!\left(\frac{1}{N}\sum_i 10^{\,\sigma_i/10}\right). \]

The median tracks the floor; the linear mean is pulled up by whatever spikes fall inside the sector. Detection range keys off the floor, because \(R_\text{max} \propto \sigma^{1/4}\) — so the median is the number a mission planner feeds in.

Interactive demo#

Open in full screen

Dataset · L25_RCSPattern.csv (360 aspect samples)

Walkthrough#

  1. Read the polar plot. Aspect runs clockwise with 0° nose-on. The deep, noisy ring is the floor; the four sharp petals at 45°, 135°, 225°, and 315° are the specular spikes where a facet normal faces the radar.

  2. Sweep the nose sector (±30°). With no spike in view, median and linear-mean agree near −19 dBsm and the max is only −13.5 dBsm of speckle, not a flash. This is the quiet the shaped nose bought.

  3. Sweep the quartering sector (30°–60°). One narrow spike now sits inside a narrow 31-sample window. The max jumps to +15 dBsm and the linear-mean climbs to ~+8 dBsm, while the median resists — it rises only to ~−7 dBsm, still far below the mean, leaving ~15 dB of mean-vs-median gap.

  4. Select the full 360°. All four spikes are in view. Max +15, median ~−19, linear-mean ~+3 dBsm: a ~22 dB gap, manufactured entirely by four narrow petals over a wide quiet floor.

  5. Watch the readouts fight. The demo highlights the median-vs-mean gap as you drag. The question to keep asking: which number would you hand a mission planner, and why?

  6. Open the “IADS exposure” tab. The same 360-point pattern feeds a top-down plan view: each of four notional radars sees the aspect (bearing − heading), and its ring scales as \(R_\text{det} = k\,(\sigma/\sigma_\text{ref})^{1/4}\) with \(\sigma_\text{ref}\) the pattern’s full-360° linear median. Rotate the heading and watch spikes bloom rings over you.

Key observations#

  • The companion script’s table. Nose ±30°: max −13.5, median −19.1, linear-mean −18.9. Quartering 30°–60°: max +15.0, median −7.2, linear-mean +8.1. Full 360°: max +15.0, median ~−19, linear-mean ~+3. The demo reproduces these live.

  • A few spikes distort the mean. Because averaging is linear, a couple of degrees of +15 dBsm outweigh hundreds of degrees of floor. The median ignores them by construction.

  • The median prices detection range. A search radar spends its dwell on the floor, so via \(R_\text{max} \propto \sigma^{1/4}\) the median sets the practical detection ring. The spikes are brief real flashes — hard to detect on, harder to track on.

  • Neither number is wrong. They answer different questions: total-energy (builder), worst-case flash (buyer), and usual-case detection (mission planner). The lesson is to say which one you mean.

Source#

MATLAB bundle · L25_RCSAspectPattern.m

The companion script reads L25_RCSPattern.csv, plots the pattern on a polar axis (with a +30 dB radial offset so polarplot accepts the negative radii), then masks three sectors — nose (±30°), quartering (30°–60°), and full 360° — and prints max, median, and the linear-domain mean for each. That linear-then-dB conversion for the mean is the load-bearing step: it is what makes the mean-vs-median gap appear.