Wiki Spectrum analyzer
Detectors
A detector decides how many spectra become one point on the screen. The app has eleven of them, and they work in three places: the main detector folds spectra into a waterfall row, every trace has its own, and one more reduces bins to pixels. Each one shows something and hides something — this page says what exactly.
Three places where a detector works
In one second the receiver delivers hundreds or thousands of spectra, while the screen has a few hundred waterfall rows and one curve. Spectra are not thrown away: they are folded by a detector, and the app shows the fold factor.
- Detector — the main one
- The Spectrum analyzer tab, the Resolution bandwidth group. It folds K spectra over time into one waterfall row; in a sweep, the spectra of one segment. The default is
rms. How many spectra a row holds is shown by the Fold field at the bottom of the group and by the trust bar: Detectorrms ×11. The "?" hint next to the switch changes with the selection and names the price of that particular detector. - Trace detector
- The second list in the row of each of the traces T1…T4 in the Traces group. The same list of eleven, but every trace has its own — see below.
- Detector ↔px
- Reduces bins to a pixel along frequency when there are more bins than pixels:
peak,neg,sampleoravg. See Bins per pixel.
The eleven detectors
| In the list | What it does with K spectra | The question it answers | What it hides |
|---|---|---|---|
peak | Maximum | Whether a burst happened | The true noise level: the floor is raised by a few dB, and every spur of the receiver itself shows |
neg | Minimum | Where the dips and the floor are | Signals: they disappear |
sample | One spectrum — the last | What was there at one instant | Everything that happened between samples |
rms | Mean power | What the level is | Short bursts: they weaken the more, the larger the fold |
avg_log | Mean of decibels | What a program without metrology would show | The true noise level: it reads low |
median | Median | What is there all the time: the floor and carriers | Isolated bursts |
p90 | 90th percentile | What comes in bursts | A single random outlier |
qp | CISPR 16-1-1 quasi-peak | A preliminary EMC estimate of interference | The instantaneous spectrum: a row is a meter reading |
cav | CISPR-average: mean of the envelope voltage | The same, as an average value | The true noise level: it reads 1.05 dB low |
crms | CISPR RMS-average | The same, as an RMS value | With a long step between spectra, noise reads up to 1 dB low |
floor | Local noise floor | What the noise is in this particular region | Narrow signals: it is a floor trace, not a spectrum |
peak, neg, sample, rms, avg_log
peak- Loses no narrow signal, but also shows every one of the receiver's own spurs and raises the noise floor by a few dB. Use it when looking for weak narrow or short signals.
neg- Holds the minima: signals disappear, dips and the floor become visible. A mode for diagnostics, not for searching.
sample- Takes one spectrum out of K. Fast, but a signal can drop out entirely — between samples.
rms- Averages power: the floor is smooth and unbiased, random outliers fade. A narrow peak weakens the more, the larger the fold. The default main detector.
avg_log- Averages decibels rather than power. It underestimates noise depending on the fold — by up to 2.51 dB in the limit. It is kept on purpose, so that the difference from
rmscan be seen on screen; for level measurements usermsorpeak.
median and p90
median- The median of K spectra: a single burst does not show, the steady floor and carriers remain. Noise reads below its mean power; the limit is −1.59 dB.
p90- The 90th percentile of K spectra: bursty signals show as with
peak, but one random outlier does not make the picture. Noise reads above its mean power.
qp, cav, crms: the CISPR detectors
These are weighted detectors per CISPR 16-1-1 computed in the time domain: every bin has a detector stage and a meter with time constants. They carry memory between frames, so after a retune their state is reset: the charge built up on the previous frequency is not carried over, and the stages are seeded from the first spectrum on the new frequency. The app takes the constants by the tuned frequency:
| Band of the standard | Tuned frequency | Charge | Discharge | Meter | RBW per the standard (−6 dB) |
|---|---|---|---|---|---|
| A | up to 150 kHz | 45 ms | 500 ms | 160 ms | 200 Hz |
| B | 0.15–30 MHz | 1 ms | 160 ms | 160 ms | 9 kHz |
| C/D | 30–1000 MHz | 1 ms | 550 ms | 100 ms | 120 kHz |
| — | from 1 GHz | the C/D constants; the standard does not define quasi-peak there | |||
qp— quasi-peak- A model of a diode detector with a critically damped meter; against the standard's pulse-response table it is within its tolerances. A waterfall row here is the meter reading with a discharge constant of hundreds of milliseconds, not an instantaneous spectrum: a signal sweeping through the band leaves a trail across its whole width. The heaviest detector: about half a CPU core at 20 MS/s, and that price is per consumer: the main detector and every trace set to
qpcompute their own. cav— CISPR-average- The linear mean of the envelope voltage with the band's meter time constant. It reads a carrier exactly and noise 1.05 dB below its mean power.
crms— RMS-average- Root-mean-square above the corner frequency (100 Hz in bands B–D), linear average below it. It reads noise without bias as long as the step between spectra is well under 2.5 ms; at narrow sample rates with a large N the step is longer and noise reads up to 1 dB low.
This is a preliminary estimate, not a compliance measurement. The standard requires a bandwidth of 200 Hz, 9 kHz or 120 kHz at −6 dB and a particular filter shape. Here the RBW is set by N and the window, and a pulse shorter than the FFT frame is smeared across one or two spectra — so impulsive interference is weighted differently than in a receiver built to the standard. For steady and slowly modulated signals the readings agree with peak and average, as they should. The app says the same in the hint of each of these detectors.
floor: the local noise floor
floor gives not a spectrum but a floor trace: the median of blocks of bins (64 bins with eight or more spectra in the fold, up to 512 with one), converted to mean power. Narrow signals, and anything raised that is narrower than five blocks, do not enter it. Measured: it lies 0.1–0.2 dB below the true floor.
Its main use is the excess over the local noise. Give floor to the second trace and switch on the a/b math with that trace for the first: you get the excess over the noise of that very region in decibels (see trace math).
Bias on noise
Every detector gives its own answer to "what is the noise level here", and the difference between them is not an error but a property of the operation itself. The trust bar states it as a number: the Bias field shows by how many decibels the main detector, at the current fold, shifts the noise level relative to its mean power.
| Detector | Fold ×2 | Fold ×8 | Fold ×32 |
|---|---|---|---|
peak | +1.76 dB | +4.34 dB | +6.08 dB |
neg | −3.01 dB | −9.03 dB | −15.05 dB |
avg_log | −1.05 dB | −2.09 dB | −2.40 dB |
median | 0.00 dB | −1.19 dB | −1.49 dB |
p90 | +1.46 dB | +3.05 dB | +3.42 dB |
- For
rmsandsamplethe bias is zero at any fold, and forpeak,neg,avg_log,medianandp90at a fold of ×1; the field is then absent from the bar. cavin tuned mode reads noise 1.05 dB low at any fold.- For
qpin tuned mode, forfloor, and forcrmswhen the step between spectra is too long (above 1 GHz the threshold is ten times stricter), there is no simple answer. The bar then says undefined instead of hiding the field: a hidden row would read as "zero". - The fold depends on the sample rate, N and the Rows/s slider. By changing the waterfall rate you change the fold — and with it the noise level shown by
peak,neg,avg_log,medianandp90. - The number applies to the main detector. The bar shows no separate bias for the traces.
A detector of its own for every trace
One trace in peak tells whether a burst happened, another in rms tells what the noise level is, and both are on screen at once — that is a measurement, not a picture. This is why the detector is chosen separately for each of the four traces: T1 and T2 have peak by default, T3 has neg, T4 has rms. The FFT is computed once, and all the traces and the waterfall get the same spectra — only the fold differs.
Changing the detector resets what that trace has accumulated. The weighted detectors keep their state separately in every trace. What a trace does with the folded row next — Max hold, Average, math — is on the Traces page.
With a tinySA 0.9.25 no detector can be chosen: the instrument returns an already folded row, and the trace lists and the trust bar say instrument.
Detectors in a sweep
In a sweep the receiver stays on a segment for milliseconds, so the detectors work differently.
- Over time the main detector folds only the spectra of one segment — while no blocks are lost, no fewer than the Sweep: spectra slider sets (the actual number stands in the trust bar next to the detector). With one spectrum per segment there is nothing to fold:
median, for example, gives that same spectrum. - Along frequency, on a wide span the stitched grid has more bins than a trace has points (75 bins per point on the full span of a HackRF One), and the same detector reduces them. The trace detector acts here too: it decides how the grid bins are reduced into a point of that trace.
- Detectors that are statistics over time are replaced along frequency by a counterpart:
p90andqpreduce bins by peak,median,cav,crmsandfloorby mean power.peak,neg,sample,rmsandavg_logstay themselves. - The weighted detectors run without memory in a sweep — the time constants have no time to act.
qpshows peak, that is the upper bound of quasi-peak;cavis the voltage mean over the spectra of one segment only;crmsis the mean power over those spectra, i.e. rms.
Which detector to choose
- Looking for weak narrow or short signals —
peak. - Measuring the level of noise or of a wide signal —
rms. - Want to see bursty signals without reacting to a single outlier —
p90. - Want to see only what is there all the time —
median. - Need the excess over the local noise —
flooron the second trace anda/bon the first. - Making a preliminary EMC estimate of interference —
qp,cav,crms, keeping the bandwidth in mind. - The default pair of traces already answers two questions at once: T1 in
peak— whether a burst happened, T4 inrmswith averaging — what the mean level is. - PRO Measuring noise density, band power, OBW or ACPR with the SDR SA PRO markers — the trace must carry mean power: the
rmsorsampledetector, a mode other than Max hold or Min hold, and Averaging set to Power. Otherwise the measurement comes with a caveat that says what is wrong. See Trace markers.
Limits
qp,cavandcrmsare a preliminary estimate, not a compliance measurement: the RBW is not the standard's, and above 1 GHz the standard does not define quasi-peak.- In a sweep the weighted detectors have no memory:
qpthere is peak. - When Spectrum from blocks skips blocks,
qp,cavandcrmsfreeze during the gap: their time constants run on processed time. - The choice of detectors is not kept between launches: the main one always starts as
rms, the traces with their defaults. - The detectors are only those in the list; a percentile or time constants of your own cannot be set.
- With a tinySA the app's detectors do not act: the instrument folds the row itself.