Jammer Mitigation

Several jammer mitigation algorithms are implemented here. Usage varies by algorithm, consult the documentation for each. Every algorithm is integrated into the simulation code.

Projection onto Orthogonal Subspace (POS)

Projection onto Orthogonal Space (orthonal to jammer subspace)

class pyjama.mitigation.POS.OrthogonalSubspaceProjector(*args, **kwargs)[source]

Mitigates jammer interference by projecting onto the orthogonal subspace of the jammer subspace. Jammer subspace has to be set before calling the layer. This can be done by either calling set_jammer_frequency_response or set_jammer_covariance.

This layer should be called on the received signal and, if the unmapped channel frequency response is used, on it before equalization.

Parameters
  • dimensionality (int) – Rank of the jammer subspace which is “subtracted”. If None, the maximum dimensionality is assumed (i.e. the rank of the jammer covariance matrix).

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

Input

y ([batch_size, num_rx, num_rx_ant, num_tx, num_tx_ant, num_ofdm_symbols, fft_size], tf.complex (frequency response) or ([batch_size, num_rx, num_rx_ant, num_ofdm_symbols, fft_size], tf.complex) (signal)) – Input. Might be e.g. signal (including jammer interference), or channel frequency response (to be mapped to subspace).

Output

y_proj (Same shape as y, dtype) – y projected onto the orthogonal subspace.

set_jammer_covariance(jammer_covariance)[source]
Input
  • jammer_covariance ([batch_size, num_rx, num_ofdm_symbols, fft_size, num_rx_ant, num_rx_ant], tf.complex) – Covariance matrix of jammer signal.

  • .. deprecated:: 0.1.0 – Use set_jammer_signals instead.

set_jammer_frequency_response(j)[source]

Given the jammer channel frequency response j, precompute the projection matrix which maps the signal onto the orthogonal subspace of the jammer subspace.

Input

j ([batch_size, num_rx, num_rx_ant, num_jammer, num_jammer_ant, num_ofdm_symbols, fft_size], tf.complex) – Jammer channel frequency response

set_jammer_signals(jammer_signals)[source]
Input

jammer_signals ([batch_size, num_rx, num_rx_ant, num_symbols, fft_size], tf.complex) – Received symbols containing only jammer interference.

LMMSE treating Interference as Noise (IAN)

LMMSE treating Interference as Noise (IAN)

class pyjama.mitigation.IAN.IanLMMSEEqualizer(*args, **kwargs)[source]

LMMSE Equalizer mitigating jammer interference by treating it as noise. To be used instead of ~sionna.ofdm.LMMSEEqualizer to equalize and supress jammer at the same time.

One of set_jammer or set_jammer_covariance must be called before calling this layer.

Parameters
  • resource_grid (ResourceGrid) – Instance of ResourceGrid

  • stream_management (StreamManagement) – Instance of StreamManagement

  • whiten_interference (bool) – If True (default), the interference is first whitened before equalization. In this case, an alternative expression for the receive filter is used which can be numerically more stable.

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

Input
  • (y, h_hat, err_var, no) – Tuple:

  • y ([batch_size, num_rx, num_rx_ant, num_ofdm_symbols, fft_size], tf.complex) – Received OFDM resource grid after cyclic prefix removal and FFT

  • h_hat ([batch_size, num_rx, num_rx_ant, num_tx, num_streams_per_tx, num_ofdm_symbols, num_effective_subcarriers], tf.complex) – Channel estimates for all streams from all transmitters

  • err_var ([Broadcastable to shape of h_hat], tf.float) – Variance of the channel estimation error

  • no ([batch_size, num_rx, num_rx_ant] (or only the first n dims), tf.float) – Variance of the AWGN

Output
  • x_hat ([batch_size, num_tx, num_streams, num_data_symbols], tf.complex) – Estimated symbols with jammer interference removed

  • no_eff ([batch_size, num_tx, num_streams, num_data_symbols], tf.float) – Effective noise variance for each estimated symbol (including jammer interference)

set_jammer(j, rho)[source]

Set the jammer covariance matrix from the frequency response of the jammer channel.

Input
  • j ([batch_size, num_rx, num_rx_ant, num_jammer, num_jammer_ant, num_ofdm_symbols, fft_size], tf.complex, frequency response of jammer channel)

  • rho (broadcastable to j.shape.) – Jammer power.

set_jammer_covariance(jammer_covariance)[source]

Set the jammer covariance matrix directly.

Input

jammer_covariance ([batch_size, num_rx, num_ofdm_symbols, fft_size, num_rx_ant, num_rx_ant], tf.complex) – Covariance matrix of jammer signal.