Channel State Information Model#

class CSIT#

Type hint for channel state information.

alias of TypeVar(‘CSIT’, bound=ChannelStateInformation)

class ChannelStateFormat(value)#

Bases: Enum

Format flag for wireless transmission link states.

IMPULSE_RESPONSE = 0#
FREQUENCY_SELECTIVITY = 1#
class ChannelStateDimension(value)#

Bases: Enum

Dimension selection of channel state information.

RECEIVE_STREAMS = 0#
TRANSMIT_STREAMS = 1#
SAMPLES = 2#
INFORMATION = 3#
class ChannelStateInformation(state_format, state=None, num_delay_taps=None, num_frequency_bins=None)#

Bases: HDFSerializable

State of a single wireless link between a transmitting and receiving modem.

__state_format#

The current format of the channel state information. The format may change depending on the most recent format requests.

Type:

ChannelStateFormat

__state#

The current channel state. A numpy tensor of dimension num_receive_streams`x`num_transmit_streams`x`num_samples`x`state_information.

If the state is currently in the format impulse response, num_samples is the time domain of the channel state and state_information the delay taps.

If the state is currently in frequency selectivity format, num_samples discrete frequency domain bins and state_information is of length one, containing the respective Fourier weights.

Type:

np.ndarray

__num_delay_taps#

Number of delay taps in impulse-response mode. Recovers the 4th matrix dimension during conversions.

Type:

int

__num_frequency_bins#

Number of discrete frequency bins in frequency-selectivity mode. Recovers the 4th matrix dimension during conversions.

Type:

int

Channel State Information object initialization.

Parameters:
  • state_format (ChannelStateFormat) – Format of the state from which to initialize the channel state information.

  • state (np.ndarray, optional) – Channel state matrix. A numpy tensor of dimension num_receive_streams`x`num_transmit_streams`x`num_samples`x`state_information.

  • num_delay_taps (int, optional) – Number of delay taps in impulse-response mode.

  • num_frequency_bins (int) – Number of discrete frequency bins in frequency-selectivity mode..

Raises:

ValueError – If state dimensions are invalid.

property state_format: ChannelStateFormat#

Current channel state format.

Returns:

The current channel state format.

Return type:

ChannelStateFormat

property state: ndarray#

Current channel state tensor.

Returns:

The current channel state tensor.

Return type:

np.ndarray

set_state(state_format, state=None, num_delay_taps=None, num_frequency_bins=None)#

Set a new channel state.

Parameters:
  • state_format (ChannelStateFormat) – Format of the state from which to initialize the channel state information.

  • state (np.ndarray, optional) – Channel state matrix. A numpy tensor of dimension num_receive_streams`x`num_transmit_streams`x`num_samples`x`state_information.

  • num_delay_taps (int, optional) – Number of delay taps.

  • num_frequency_bins (int, optional) – Number of discrete frequency bins.

Raises:

ValueError – If state dimensions are invalid.

Return type:

None

to_impulse_response()#

Access the channel state in time-domain.

May convert the internal state format via FFT.

Returns:

The current channel tensor of dimensions num_receive_streams`x`num_transmit_streams`x`num_samples`x`num_delay_taps.

Return type:

ChannelStateInformation

to_frequency_selectivity(num_bins=None)#

Access the channel state in frequency-domain.

May convert the internal state format via FFT.

Parameters:

num_bins (int, optional) – Number of discrete frequency bins. By default, this will be the number of time samples, i.e. a FFT without zero-padding will be performed.

Returns:

The current channel tensor of dimensions num_receive_streams`x`num_transmit_streams`x`num_samples`x`num_frequency_bins.

Return type:

ChannelStateInformation

property num_receive_streams: int#

Number of receive streams within this channel state.

Returns:

Number of receive streams.

Return type:

int

property num_transmit_streams: int#

Number of transmit streams within this channel state.

Returns:

Number of transmit streams.

Return type:

int

property num_samples: int#

Number of time-domain samples within this channel state.

Returns:

Number of samples.

Return type:

int

property num_symbols: int#

Number of symbols considered within this channel state.

Returns:

Number of symbols.

Return type:

int

property num_delay_taps: int#

Number of taps within the delay response of the channel state.

Returns:

Number of taps.

Return type:

int

property linear: COO#

Convert the channel state to a linear transformation tensor.

Returns:

Sparse linear transformation tensor of dimension N_Rx x N_Tx x N_out x N_in.

static Ideal(num_samples, num_receive_streams=1, num_transmit_streams=1)#

Initialize an ideal channel state.

Parameters:
  • num_samples (int) – Number of timestamps at which the channel state has been sampled.

  • num_receive_streams (int, optional) – Number of emerging data streams after channel propagation.

  • num_transmit_streams (int, optional) – Number of data streams feeding into the channel before propagation.

Returns:

Ideal channel state information of a non-distorting channel.

Return type:

ChannelStateInformation

received_streams()#

Iterate over the received streams slices within this channel state.

Returns:

Generator.

Return type:

Generator

samples()#

Iterate over the sample slices within this channel state.

Returns:

Generator.

Return type:

Generator

static concatenate(elements, dimension)#
Return type:

ChannelStateInformation

plot()#

Visualize the internal channel state information.

Plots the absolute values of all channel state weights.

Return type:

None

append(state, axis)#

Append a channel state slice to this channel state.

Parameters:
  • state (ChannelStateInformation) – The channel state information to append along axis.

  • axis (int) – The dimension along which to append the linear_state.

Return type:

None

append_linear(linear_state, axis)#

Append a linear channel state slice to this channel state.

Parameters:
  • linear_state (np.ndarray) – The linear state matrix to be appended along axis.

  • axis (int) – The dimension along which to append the linear_state.

Return type:

None

reciprocal()#

Compute the reciprocal channel state.

Returns: The reciprocal channel state information.

Return type:

ChannelStateInformation

classmethod from_HDF(group)#

De-Serialized the object state from HDF5.

Recalls the object’s state from a HDF5 group.

Parameters:

group (Group) – The HDF5 group from which the object state is recalled.

Return type:

TypeVar(CSIT, bound= ChannelStateInformation)

Returns: The object initialized from the HDF5 group state.

to_HDF(group)#

Serialize the object state to HDF5.

Dumps the object’s state and additional information to a HDF5 group.

Parameters:

group (Group) – The HDF5 group to which the object is serialized.

Return type:

None