ChannelModel#

class sionna.phy.channel.ChannelModel(precision: str | None = None, device: str | None = None, **kwargs)[source]#

Bases: sionna.phy.object.Object

Abstract class that defines an interface for channel models.

Any channel model which generates channel impulse responses must implement this interface. All the channel models available in Sionna, such as RayleighBlockFading or TDL, implement this interface.

Remark: Some channel models only require a subset of the input parameters.

Parameters:
  • precision (str | None) – Precision used for internal calculations and outputs. If set to None, precision is used.

  • device (str | None) – Device for computation (e.g., ‘cpu’, ‘cuda:0’). If None, device is used.

Inputs:
  • batch_sizeint. Batch size.

  • num_time_stepsint. Number of time steps.

  • sampling_frequencyfloat. Sampling frequency [Hz].

Outputs:
  • a – [batch size, num_rx, num_rx_ant, num_tx, num_tx_ant, num_paths, num_time_steps], torch.complex. Path coefficients.

  • tau – [batch size, num_rx, num_tx, num_paths], torch.float. Path delays [s].

Examples

from sionna.phy.channel import RayleighBlockFading

channel_model = RayleighBlockFading(
    num_rx=1, num_rx_ant=1,
    num_tx=1, num_tx_ant=1
)
a, tau = channel_model(batch_size=64, num_time_steps=1,
                       sampling_frequency=1e6)
print(a.shape)
# torch.Size([64, 1, 1, 1, 1, 1, 1])
print(tau.shape)
# torch.Size([64, 1, 1, 1])