Channel State Information Model

class ChannelStateFormat(value)

Bases: enum.Enum

Format flag for wireless transmission link states.

IMPULSE_RESPONSE = 0
FREQUENCY_SELECTIVITY = 1
class ChannelStateDimension(value)

Bases: enum.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: object

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: hermespy.core.channel_state_information.ChannelStateFormat

Current channel state format.

Returns

The current channel state format.

Return type

ChannelStateFormat

property state: numpy.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: sparse._coo.core.COO

Convert the channel state to a linear transformation tensor.

Return type

COO

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