Expand description
The receiver of a link: one detector applied channel use after channel use, with soft outputs.
Receiver detects the layers of every channel use $y = H x + w$ (spatial
multiplexing) or every block of Alamouti’s code, and accumulates a SoftOutput:
- the estimate of every transmitted symbol: the estimate of the detector when it forms
one (
MimoDetector::soft_estimate: the unbiased linear estimate of ZF and MMSE, the decoupled channel of AMP and OAMP), the decided point with the other detectors; - its noise variance: that of the estimate, or the noise variance of the channel for a decision;
- optionally the bit LLRs of the detector (ZF, MMSE, ML, K-best, AMP, OAMP, Alamouti:
MimoDetector::has_soft_output).
§Examples
use comnum_mimo::receiver::{DetectorKind, Receiver, SoftOutput};
use comnum_mapping::constellation::Constellation;
use comnum_math::C64;
use ndarray::array;
let c = Constellation::qam(4)?.normalized();
let rx = Receiver::new(DetectorKind::Ml, c.clone(), true)?;
let h = array![[C64::new(1.0, 0.0), C64::new(0.2, 0.1)], [C64::new(-0.3, 0.0), C64::new(0.9, 0.0)]];
let x = [c.points()[1], c.points()[2]];
let y: Vec<C64> = (0..2).map(|r| h[[r, 0]] * x[0] + h[[r, 1]] * x[1]).collect();
let mut out = SoftOutput::default();
rx.layers(&h.view(), &y, 1e-3, &mut out)?;
assert_eq!(out.symbols, x.to_vec());
assert_eq!(out.llr.len(), 4);Structs§
- Receiver
- A detector applied channel use after channel use (see the module).
- Soft
Output - The accumulated output of a
Receiver: theEstimatesof the channel uses one after the other (the same fields), and their bit LLRs.
Enums§
- Detector
Kind - A detector of
crate::detection.