Expand description
The metrics of a declarative link.
The metrics compare the samples at the end of the link with the transmitted
symbols. The samples must be at one sample per symbol and aligned on the symbols
(after decimation and, when the receiver introduces a delay, frame
synchronisation). The comparison uses the symbols $n$ with
$s_{\mathrm{start}} \le n < N - s_{\mathrm{end}}$ (skip_start, skip_end) that no
block excluded (pilots, preambles).
metrics:
report: [ber, ser, snr_db, gmi] # default [ber, ser, snr_db]
skip_start: 64 # edges of the filters
skip_end: 64
scale: power # power (default), ls or noneThe names of the metrics and of the scalings are read without case. Before the decisions the samples $z_{n}$ are scaled:
power: to the power of the transmitted symbols $x_{n}$ on the window (blind);ls: by the least-squares complex gain $\sum_{n} x_{n} z_{n}^{*} / \sum_{n} \lvert z_{n} \rvert^{2}$, which also removes a constant phase (genie-aided);none: as they are.
| Metric | Kind | Definition |
|---|---|---|
ber | rate | hard-decision bit errors (Gray labels) over the window |
ser | rate | symbol errors |
snr_db | mean | $10 \log_{10} \left( \sum \lvert x \rvert^{2} / \sum \lvert z - x \rvert^{2} \right)$ per trial, after the scaling (metrics::snr_db; a trial without error gives $+\infty$, which the record drops and counts) |
snr_eff_db | mean | $10 \log_{10} \left( \rho^{2} / (1 - \rho^{2}) \right)$, $\rho^{2} = \lvert \sum z x^{*} \rvert^{2} / \left( \sum \lvert z \rvert^{2} \sum \lvert x \rvert^{2} \right)$ per trial: the effective SNR after the least-squares gain of $x$ onto $z$ (Häger & Pfister; independent of the scaling) |
evm | mean | $\sum \lvert z - x \rvert^{2} / \sum \lvert x \rvert^{2}$ per trial (power ratio, metrics::evm_data_aided) |
mse | mean | the mean of $\lvert z - x \rvert^{2}$ per trial (metrics::mse) |
gmi | mean | generalised mutual information (bits/symbol) per trial |
ngmi | mean | GMI per bit of information, $\mathrm{GMI} / H(X)$ |
entropy | mean | entropy $H(X)$ of the source (bits/symbol): $\log_{2} M$, or less with shaping |
mi | mean | symbol-wise mutual information (bits/symbol) per trial |
coded_ber | rate | information bits decoded in error (fec_decode) |
bler | rate | coded blocks with at least one information bit in error |
air | mean | rate of a decoder that uses the receiver’s own posterior (bits/symbol) |
air_bmd | mean | the same with the bit-wise LLRs of that posterior |
air_opt, air_bmd_opt | mean | the same with the best scaling $s$ of the posterior, per block |
posterior_calibration | mean | $\hat{\sigma}^{2}$ over the mean of $\lvert z - x \rvert^{2}$: 1 for a calibrated receiver, below 1 for an over-confident one |
The air metrics need a block that declares the receiver’s posterior (a learned
receiver, or noise_estimate after a classic receiver) and use the samples as they are, without
scaling (see metrics::posterior_rates). Compared with mi and gmi (genie gain
and variance), they show what the receiver loses by its own estimates.
With a shaped source (source with mb_lambda, or pas_encode), the information
rates, the soft demapper and the posterior use the probabilities of the points, and
awgn_ebn0 counts the energy per bit of information (the entropy $H(X)$).
The information rates use the least-squares channel gain of
metrics::information_rates (consistent at every SNR, independent of the
scaling), not the power normalisation of OptiCommPy’s estimators.
With two polarisations (source with pols: 2) the metrics pool both: the samples
of x then those of y, against the symbols of x then those of y, the window
(skip_start, skip_end) applying to each polarisation.
The coded metrics compare the decoded information bits with the transmitted ones and need no aligned symbols: a coded link may report them alone.
The rates are counted over all the trials (Wilson intervals, usable by the
min_errors stopping rule); the other metrics are means of per-trial values.
Structs§
- Metrics
- The metrics of a link (see the module documentation).
Enums§
- Metric
- A metric of a declarative link (see the module documentation).
Constants§
- METRICS
- The names of the metrics a link can report, in the order of
Metric::ALL.