Expand description
MIMO-OFDM: per-subcarrier detection.
With a cyclic prefix longer than the channel, every subcarrier $k$ of every symbol
sees a flat MIMO channel, $y_{k} = H_{k} x_{k} + w_{k}$, with
$H_{k} = \sum_{l} H_{l}, e^{-j 2\pi k d_{l}/N}$. detect applies any detector of
comnum_mimo to every resource element — a thin wrapper, as the detectors know nothing
of the waveform (ADR 0009).
§Examples
use comnum_waveform::ofdm::detection::detect;
use comnum_mimo::detection::Linear;
use comnum_mapping::constellation::Constellation;
use comnum_math::{linalg::{identity, matvec}, C64};
let c = Constellation::qam(4)?.normalized();
let h = vec![identity(2); 3]; // three REs, 2 × 2
let x: Vec<Vec<C64>> = (0..3).map(|i| vec![c.points()[i], c.points()[3 - i]]).collect();
let y: Vec<Vec<C64>> = h.iter().zip(&x).map(|(h, x)| matvec(&h.view(), x)).collect();
let d = detect(&h, &y, 0.01, &Linear::mmse(c))?;
assert_eq!(d[1], vec![1, 2]);§References
- G. L. Stüber, J. R. Barry, S. W. McLaughlin, Y. Li, M. A. Ingram and T. G. Pratt, “Broadband MIMO-OFDM wireless communications,” Proc. IEEE, 92(2), 271–294, 2004.
Functions§
- detect
- Detect every resource element:
h[i]andy[i]are the channel ($n_{r} \times n_{t}$) and the received vector of REi. Returns the labels of every RE.