Skip to main content

Module estimation

Module estimation 

Source
Expand description

Channel estimation on the OFDM resource grid.

The receiver knows the pilots: LS estimates $\hat H = Y / X$ at the pilot REs, then an interpolation over the grid — first across the subcarriers of every pilot-carrying symbol, then across the symbols of every subcarrier (linear in time, constant beyond the first and last pilot symbols).

With pilots on every subcarrier (block pattern) LMMSE still smooths the LS estimates (van de Beek et al. 1995); with a comb it interpolates them.

The LMMSE estimator and the band-limited interpolator are built once per set of pilot subcarriers (super::wiener::Wiener2d on the pilots of the symbol, comnum_dsp::interpolation::LowPassInterpolator) and applied to every pilot symbol that shares it.

§Examples

use comnum_waveform::ofdm::estimation::{estimate, FrequencyInterpolation};
use comnum_waveform::ofdm::grid::{PilotPattern, ResourceGrid};
use comnum_math::C64;
let g = ResourceGrid { n_subcarriers: 16, n_symbols: 4, pattern: PilotPattern::Comb { spacing: 4 }, seed: 3 };
// a flat channel 0.5 + 0.5j, no noise: the estimate is exact everywhere
let h = C64::new(0.5, 0.5);
let tx = g.map(&vec![C64::new(1.0, 0.0); g.n_data()])?;
let rx: Vec<C64> = tx.iter().map(|x| x * h).collect();
let est = estimate(&g, &rx, 1e-6, &FrequencyInterpolation::Linear)?;
assert!(est.iter().all(|e| (e - h).norm() < 1e-9));

§References

  1. J.-J. van de Beek, O. Edfors, M. Sandell, S. K. Wilson and P. O. Börjesson, “On channel estimation in OFDM systems,” Proc. IEEE VTC, 815–819, 1995.
  2. O. Edfors, M. Sandell, J.-J. van de Beek, S. K. Wilson and P. O. Börjesson, “OFDM channel estimation by singular value decomposition,” IEEE Trans. Commun., 46(7), 931–939, 1998.
  3. S. Coleri, M. Ergen, A. Puri and A. Bahai, “Channel estimation techniques based on pilot arrangement in OFDM systems,” IEEE Trans. Broadcast., 48(3), 223–229, 2002.

Structs§

PortEstimation
The settings of estimate_port: the interpolation, the noise variance per RE (used by LMMSE) and the transmit port among the ports of the grid.
PowerDelayProfile
A power-delay profile on the sampling grid of the OFDM symbol: checked when it is built, its fields read through getters.
RandomDelayProfile
A channel of paths impulses whose delays are independent and uniform over $[0, L]$ samples of the IFFT (max_delay = $L$), not on the sampling grid, of power $e^{-\tau/\tau_{\mathrm{rms}}}$ (or all equal), the first one at delay 0 when first_at_zero: the “synchronized” (exponential, first at 0) and “uniform” models of Edfors et al. (1998, Sec. II). Its correlation averaged over the delays is, for one random delay of power $w(\tau)$,

Enums§

FrequencyInterpolation
How the pilot estimates are interpolated across the subcarriers.

Functions§

estimate
The channel at every RE of the grid (symbol after symbol) from the received grid rx (the FFT outputs of the active subcarriers), with the noise variance per RE noise_var (used by LMMSE).
estimate_port
estimate for the channel of the port of settings, from its pilots (ResourceGrid::port_pilots): with one receive antenna’s grid rx, the channel between that antenna and the transmit port.