Channel (Detailed Documentation)

This page provides the complete documentation of the channel class.

class Channel(K: int, Nr: int, Nt: int, configs: ChannelConfig)[source]

Represents the wireless channel in a MU-MIMO downlink system.

__init__(K: int, Nr: int, Nt: int, configs: ChannelConfig)[source]

Initialize a channel.

Parameters:
  • K (int) – The number of user terminals (UTs) in the system.

  • Nr (int) – The number of receive antennas per UT.

  • Nt (int) – The number of transmit antennas at the BS.

  • configs (ChannelConfig) – The channel configurations (channel model & noise model).

set(cs: ChannelState) None[source]

Sets the channel state.

The channel state consists of the SNR and the channel matrix H. If either of them is not provided, the old value is kept.

Parameters:

cs (ChannelState) – The channel state to set.

reset(cs: ChannelState) ChannelState[source]

Resets the channel state.

If the SNR or the channel matrix H is not provided in the input channel state, they are set to default values. For the SNR, the default value is infinity, which corresponds to the absence of noise. For the channel matrix H, the default value is a randomly generated channel matrix according to the specified channel model.

Parameters:

cs (ChannelState) – The channel state to reset to.

Returns:

The new channel state.

Return type:

ChannelState

propagate_pilots(tx_pilot_msg: TransmitPilotMessage) list[ReceivePilotMessage][source]

Propagates the pilot signals from the BS to the UTs.

The compound pilot message transmitted by the BS is split into K different pilot messages, one for each UT.

Parameters:

tx_pilot_msg (TransmitPilotMessage) – The compound pilot message transmitted by the BS.

Returns:

rx_pilot_msgs – The list of pilot messages that will be received by each UT.

Return type:

list[ReceivePilotMessage]

propagate_feedback(tx_fb_msgs: list[TransmitFeedbackMessage]) ReceiveFeedbackMessage[source]

Propagates the feedback messages from the UTs to the BS.

The feedback messages transmitted by the UTs are aggregated to form the compound feedback message received by the BS, which contains the CSI (effective channel matrix and SNR) for the current channel realization and SNR.

Parameters:

tx_fb_msgs (list[TransmitFeedbackMessage]) – The list of feedback messages transmitted by the UTs.

Returns:

rx_fb_msg – The compound feedback message that will be received by the BS.

Return type:

ReceiveFeedbackMessage

propagate_feedforward(tx_ff_msg: TransmitFeedforwardMessage) list[ReceiveFeedforwardMessage][source]

Propagates the feedforward messages from the BS to the UTs.

The feedforward message transmitted by the BS is split into K different feedforward messages, one for each UT. Each feedforward message contains the constellation type, the equalization coefficients, the information bit rates, the number of data streams for each UT and, in case of coordinated beamforming, the combining matrices for each UT for the current channel realization and SNR.

Parameters:

tx_ff_msg (TransmitFeedforwardMessage) – The feedforward message transmitted by the BS.

Returns:

rx_ff_msgs – The list of feedforward messages that will be received by each UT.

Return type:

list[ReceiveFeedforwardMessage]

propagate(x: ndarray[tuple[Any, ...], dtype[complexfloating]]) list[ndarray[tuple[Any, ...], dtype[complexfloating]]][source]

Simulate the signal propagation through the channel of the transmitted signal x to obtain the received signal y.

The channel propagation consists of the following steps:

  1. Apply the channel matrix H to the transmitted signal x to obtain the noiseless received signal y_noiseless.

  2. Generate the noise samples according to the specified noise model.

  3. Add the noise to the noiseless received signal y_noiseless to obtain the actual received signal y.

Parameters:

x (ComplexArray, shape (Nt, M)) – The transmitted signal.

Returns:

y_k_list – The list of received signals for each UT k.

Return type:

list[ComplexArray], shape (K, Nr, M)