comnum.ofdm_estimate#

comnum.ofdm_estimate(grid, rx, noise_var, method='linear', *, delays=None, powers=None, max_delay=None, n_fft=None)#

Channel estimation on a resource grid: LS at the pilots, then "linear" interpolation, or "lmmse" across the subcarriers (van de Beek et al. 1995) with the power-delay profile delays, powers, or the robust uniform profile over max_delay samples (Edfors et al. 1998); linear in time.

Parameters:
  • grid (ResourceGrid) – the grid and its pilots.

  • rx (array_like) – the received grid (n_subcarriers, n_symbols), or the symbols of Ofdm.demodulate (symbol after symbol).

  • noise_var (float) – noise variance per resource element.

  • method (str) – "linear", "lmmse", or the interpolations compared by Coleri et al. (2002): "second_order", "spline", "lowpass" (MATLAB interp) and "time_domain" (zero padding of the IDFT, pilots on 0, L, 2L, …).

  • delays (array_like, optional) – delays of the profile (samples of the IFFT of n_fft).

  • powers (array_like, optional) – powers of the profile (linear).

  • max_delay (int, optional) – the length of the uniform profile (samples).

  • n_fft (int, optional) – the size of the IFFT (needed by "lmmse", with delays and powers or max_delay).

Returns:

the channel estimate at every resource element (complex128), in the layout of rx.

Return type:

numpy.ndarray

Raises:

ValueError – for an invalid parameter or input (the message names it).