comnum.RobustDesign#

class comnum.RobustDesign(k, tmax_ts, fmax_tf)#

The robust channel estimator of Li, Cimini & Sollenberger (1998): designed for the worst channel of delay spread tmax_ts (over the useful duration) and maximum Doppler fmax_tf (over the block rate), a uniform delay profile on the taps 0 to floor(K tmax_ts) of the DFT grid and a flat band-limited Doppler spectrum.

Parameters:
  • k (int) – the tones.

  • tmax_ts (float) – the design delay spread over the useful duration.

  • fmax_tf (float) – the design Doppler over the block rate, in [0, 1/2].

Raises:

ValueError – without tones, for a negative spread or a Doppler outside [0, 1/2].

Example

>>> import comnum
>>> d = comnum.RobustDesign(120, 20 / 160, 40 * 200e-6)
>>> d.k_o, round(10 * __import__("math").log10(d.mse(0.1)), 1)
(16, -27.7)
fir(taps, rho)#

The coefficients and the MSE of the taps-tap temporal filter (eqs. (69)-(74)).

Parameters:
  • taps (int) – the length of the filter.

  • rho (float) – the noise to signal ratio.

Returns:

the coefficients and the MSE.

Return type:

tuple[numpy.ndarray, float]

Raises:

ValueError – for no tap.

mse(rho)#

The MSE of the infinite-length estimator (their eq. (57)), normalised to the power of the channel.

Parameters:

rho (float) – the noise to signal ratio.

Returns:

the MSE.

Return type:

float

k_o#

The taps of the design delay spread on the DFT grid, K_o.

Type:

int