Custom Pilot Patterns

Most jammer mitigation algorithms require separate pilot phases in which the jammer channel or its covariance matrix can be estimated. The classes in this package provide such pilot patterns, as well as wrappers around other pilot patterns to be used in conjunction.

class pyjama.pilots.OneHotPilotPattern(starting_symbol, num_tx, num_streams_per_tx, num_ofdm_symbols, num_effective_subcarriers, normalize=True, dtype=tf.complex64)[source]

Creates one-hot pilot pattern. Each stream sends a pilot on all subcarriers during one OFDM symbol time.

Parameters
  • starting_symbol (int) – OFDM symbol index at which the pilots start.

  • num_tx (int) – Number of transmitters.

  • num_streams_per_tx (int) – Number of streams per transmitter.

  • num_ofdm_symbols (int) – Number of OFDM symbols.

  • num_effective_subcarriers (int) – Number of effective subcarriers that are available for the transmission of data and pilots. Note that this number is generally smaller than the fft_size due to nulled subcarriers.

  • dtype (tf.Dtype) – Defines the datatype for internal calculations and the output dtype. Defaults to tf.complex64.

class pyjama.pilots.OneHotWithSilencePilotPattern(num_tx, num_streams_per_tx, num_ofdm_symbols, num_effective_subcarriers, num_silence_symbols=0, normalize=True, dtype=tf.complex64)[source]

Creates one-hot pilot pattern. Per stream one OFDM symbol.

After the pilots, silence is transmitted for num_silence_symbols OFDM symbols. This is a slightly more efficient but less flexible implementation of

>>> p = OneHotPilotPattern(0, num_tx, num_streams_per_tx, num_ofdm_symbols, num_effective_subcarriers)
>>> p = PilotPatternWithSilence(p, range(num_tx * num_streams_per_tx, num_tx * num_streams_per_tx + num_silence_symbols))
Parameters
  • num_tx (int) – Number of transmitters.

  • num_streams_per_tx (int) – Number of streams per transmitter.

  • num_ofdm_symbols (int) – Number of OFDM symbols.

  • num_effective_subcarriers (int) – Number of effective subcarriers that are available for the transmission of data and pilots. Note that this number is generally smaller than the fft_size due to nulled subcarriers.

  • num_silence_symbols (int) – Number of silence symbols before the pilots.

  • dtype (tf.Dtype) – Defines the datatype for internal calculations and the output dtype. Defaults to tf.complex64.

class pyjama.pilots.PilotPatternWithSilence(pilot_pattern, silent_ofdm_symbol_indices)[source]

Takes a PilotPattern and adds silence for all transmitters, streams and subcarriers at specified OFDM symbol positions. The passed pilot pattern may not have a pilot at any of the silence positions. Does not support training at the moment (silent symbols must be frozen for this).

ATTENTION: As this adds pilots with 0 energy, but ebnobd2no expects normalized pilots, this class only supports unnormalized ebnodb2db (i.e. with resource_grid=None).

Parameters
  • pilot_pattern (PilotPattern) – Pilot pattern to be used as basis.

  • silent_ofdm_symbol_indices (list of int) – OFDM symbol indices at which silence should be added.