ChannelCoefficientsGenerator#

class sionna.phy.channel.tr38901.ChannelCoefficientsGenerator(carrier_frequency: float, tx_array, rx_array, subclustering: bool, precision: str | None = None, device: str | None = None)[source]#

Bases: sionna.phy.object.Object

Sample channel impulse responses according to LSPs rays

This class implements steps 10 and 11 from the TR 38.901 specifications, (section 7.5).

Parameters:
  • carrier_frequency (float) – Carrier frequency [Hz]

  • tx_array – Array used by the transmitters. All transmitters share the same antenna array configuration.

  • rx_array – Panel array used by the receivers. All receivers share the same antenna array configuration.

  • subclustering (bool) – Use subclustering if set to True (see step 11 for section 7.5 in TR 38.901). CDL does not use subclustering. System level models (UMa, UMi, RMa) do.

  • 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:
  • num_time_samplesint. Number of samples.

  • sampling_frequencyfloat. Sampling frequency [Hz].

  • k_factor – [batch_size, number of TX, number of RX], torch.float. K-factor.

  • raysRays. Rays from which to compute the CIR.

  • topologyTopology. Topology of the network.

  • c_ds – [batch size, number of TX, number of RX], torch.float. Cluster DS [ns]. Only needed when subclustering is used (subclustering set to True), i.e., with system level models. Otherwise can be set to None. Defaults to None.

  • debugbool. If set to True, additional information is returned in addition to paths coefficients and delays: The random phase shifts (see step 10 of section 7.5 in TR38.901 specification), and the time steps at which the channel is sampled.

Outputs:
  • h – [batch size, num TX, num RX, num paths, num RX antenna, num TX antenna, num samples], torch.complex. Paths coefficients.

  • delays – [batch size, num TX, num RX, num paths], torch.float. Paths delays [s].

  • phi – [batch size, number of base stations, number of UTs, 4], torch.float. Initial phases (see step 10 of section 7.5 in TR 38.901 specification). Last dimension corresponds to the four polarization combinations.

  • sample_times – [number of time steps], torch.float. Sampling time steps.

Examples

# Create the generator
cir_gen = ChannelCoefficientsGenerator(
    carrier_frequency=3.5e9,
    tx_array=tx_array,
    rx_array=rx_array,
    subclustering=False,
)

# Generate channel impulse responses
h, delays = cir_gen(
    num_time_samples=100,
    sampling_frequency=1e6,
    k_factor=k_factor,
    rays=rays,
    topology=topology,
)