<b>Measurements</b>

A measurement is a statistic of the <i>visible window</i> of one signal, recomputed as that
window moves. The pane lists them with their values; each can also draw its result on the plot.

<b>How to reach it</b>

The measurements button in the toolbar, or <tt>m</tt>. The pane's <tt>+</tt> adds one; clicking
a row opens the dialog where the signal, the type, the threshold share and the on-plot marks are
set, with <b>Save</b> and <b>Delete</b>.

<b>Worth knowing</b>

• The types are average, top, bottom, min, max, peak to peak, amplitude, pulse duration, period
  and frequency. <i>top</i> and <i>bottom</i> are the means of the upper and lower halves, which
  is why a unit sine reads 0.637 (2/π) rather than 1.
• The on-plot marks come in two kinds and the mix is the reading: a <i>level</i> mark is a ruler
  at a value, a <i>time</i> mark is a marker at a position. An average draws one level mark; a
  max draws a level mark <i>and</i> a time mark at the first sample that reached it.
• Marks cannot be dragged. A measurement mark says what the measurement measured, so it is
  created unselectable — as is the trigger marker.
• A pass is throttled to a cadence rather than run every frame, so a ruler over a live view is
  <i>stepped</i>. The number and the ruler come from the same pass, so they always agree.
• An invalid pass keeps its <i>level</i> marks and drops its <i>time</i> marks. A level is a
  property of the signal and outlives the window; a position inside the window does not. That is
  what stops the rulers blinking off at a mode change.
• A crossing is counted with <i>hysteresis</i>, not on a bare level: the thresholds are a tenth of
  the window's peak to peak either side of the share, and an edge is counted only once the signal
  has passed the far one. Period, frequency and pulse duration all depend on it. The mid level is
  exactly where a waveform moves fastest, so any interferer faster than the fundamental recrosses a
  single level several times per real crossing — a 5 Hz sine with a 500 Hz tone at a tenth of the
  amplitude reads 39 Hz without the band and 5 Hz with it. The band holds to an interferer a third
  of the waveform's own size.
• The band is clamped to stay inside the data, which is what keeps a threshold set near an extreme
  usable: a fixed band there would sit above every sample and the measurement would read nothing.
  A share near an extreme still leaves the band little room, so it rejects less — which is one
  reason period and frequency offer no share to set.
• A window with too few crossings reads <tt>invalid</tt> / <tt>--</tt> rather than a plausible
  invented number. Frequency over a window holding one edge is the usual case.
• <tt>frequency</tt> is reported in Hz and <tt>period</tt>/<tt>pulse duration</tt> in seconds;
  every other type carries the channel's own unit. A value is written with a <i>metric prefix</i>
  so its digits sit in <tt>1..999</tt> — <tt>636.62 mV</tt>, not <tt>0.64 V</tt> — including when
  the stream declares no unit at all, which is always the case for a math channel: there the
  prefix goes tight against the number (<tt>636.62m</tt>), since two decimals of an unprefixed
  small value is <tt>0.00</tt>.
• Cost is bounded by reading the summary pyramid the producer already maintains, not the raw
  window. The values are still exact: a bucket's sum is a sum.
• <b>Statistics</b> adds a second line to every measurement showing <tt>n</tt>, the mean, the
  standard deviation and the range. Each observation is one <i>recompute</i> of the pane, so
  <tt>n</tt> counts windows measured, not samples — a mean frequency over many windows is what
  that claims to be. <b>Reset</b> clears every accumulator and starts fresh. A change of display
  window, a CONFIG or a measurement edit also resets; a pause, a resume, a zoom, a pan and the
  toggle itself do not, so turning the line off to read the plot and back on again keeps the history.

<b>Example</b>

On a 1 Hz ±1 sine: <tt>average=0</tt>, <tt>top=0.636620</tt>, <tt>bottom=-0.636620</tt>,
<tt>max=1</tt>, <tt>min=-1</tt>, <tt>peak to peak=2</tt>, <tt>amplitude=1</tt>,
<tt>pulse duration=0.5 s</tt> (duty 0.5), <tt>period=1 s</tt>, <tt>frequency=1 Hz</tt>. Over a
2 M-sample window those two passes read about 0.1% of the samples.
