Skip to main content

Module metrics

Module metrics 

Source
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 none

The 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.
MetricKindDefinition
berratehard-decision bit errors (Gray labels) over the window
serratesymbol errors
snr_dbmean$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_dbmean$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)
evmmean$\sum \lvert z - x \rvert^{2} / \sum \lvert x \rvert^{2}$ per trial (power ratio, metrics::evm_data_aided)
msemeanthe mean of $\lvert z - x \rvert^{2}$ per trial (metrics::mse)
gmimeangeneralised mutual information (bits/symbol) per trial
ngmimeanGMI per bit of information, $\mathrm{GMI} / H(X)$
entropymeanentropy $H(X)$ of the source (bits/symbol): $\log_{2} M$, or less with shaping
mimeansymbol-wise mutual information (bits/symbol) per trial
coded_berrateinformation bits decoded in error (fec_decode)
blerratecoded blocks with at least one information bit in error
airmeanrate of a decoder that uses the receiver’s own posterior (bits/symbol)
air_bmdmeanthe same with the bit-wise LLRs of that posterior
air_opt, air_bmd_optmeanthe same with the best scaling $s$ of the posterior, per block
posterior_calibrationmean$\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.