CDL#
- class sionna.phy.channel.tr38901.CDL(model: str, delay_spread: float, carrier_frequency: float, ut_array=None, bs_array=None, direction: str = 'downlink', ut_orientation: torch.Tensor | None = None, bs_orientation: torch.Tensor | None = None, ut_velocity: torch.Tensor | None = None, min_speed: float = 0.0, max_speed: float = 0.0, normalize_delays: bool = True, precision: str | None = None, device: str | None = None)[source]#
Bases:
sionna.phy.channel.channel_model.ChannelModelClustered delay line (CDL) channel model from the 3GPP [TR38901] specification
The power delay profiles (PDPs) are normalized to have a total energy of one.
If a minimum speed and a maximum speed are specified such that the maximum speed is greater than the minimum speed, then UTs speeds are randomly and uniformly sampled from the specified interval for each link and each batch example.
The CDL model only works for systems with a single transmitter and a single receiver. The transmitter and receiver can be equipped with multiple antennas.
The channel coefficient generation is done following the procedure described in sections 7.7.1 and 7.7.3.
- Parameters:
model (str) – CDL model to use. Must be
"A","B","C","D", or"E".delay_spread (float) – RMS delay spread [s]. Ignored if
normalize_delaysis set to False.carrier_frequency (float) – Carrier frequency [Hz]
ut_array – Antenna array used by the UTs. All UTs share the same antenna array configuration.
bs_array – Antenna array used by the BSs. All BSs share the same antenna array configuration.
direction (str) – Link direction. Must be
"uplink"or"downlink".ut_orientation (torch.Tensor | None) – Orientation of the UT. If set to None, [\(\pi\), 0, 0] is used. Shape [3] or [batch size, 3].
bs_orientation (torch.Tensor | None) – Orientation of the BS. If set to None, [0, 0, 0] is used. Shape [3] or [batch size, 3].
ut_velocity (torch.Tensor | None) – UT velocity vector [m/s]. If set to None, velocities are randomly sampled using
min_speedandmax_speed. Shape [3] or [batch size, 3].min_speed (float) – Minimum speed [m/s]. Ignored if
ut_velocityis not None. Defaults to 0.max_speed (float) – Maximum speed [m/s]. Ignored if
ut_velocityis not None. Defaults to 0.normalize_delays (bool) – If set to True, the path delays are normalized such that the delay of the first path is zero. Defaults to True.
precision (str | None) – Precision used for internal calculations and outputs. If set to None,
precisionis used.device (str | None) – Device for computation (e.g.,
"cpu","cuda:0"). If None,deviceis used.
- Inputs:
batch_size – int. Batch size.
num_time_steps – int. Number of time steps.
sampling_frequency – float. Sampling frequency [Hz].
- Outputs:
a – [batch size, num_rx = 1, num_rx_ant, num_tx = 1, num_tx_ant, num_paths, num_time_steps], torch.complex. Path coefficients.
tau – [batch size, num_rx = 1, num_tx = 1, num_paths], torch.float. Path delays [s].
Examples
The following code snippet shows how to setup a CDL channel model assuming an OFDM waveform:
from sionna.phy.channel.tr38901 import Antenna, AntennaArray, CDL # Antenna array configuration for the transmitter and receiver bs_array = AntennaArray( antenna=Antenna(pattern="38.901", polarization="dual"), num_rows=4, num_cols=4, ) ut_array = AntennaArray( antenna=Antenna(pattern="omni", polarization="single"), num_rows=1, num_cols=1, ) # CDL channel model cdl = CDL( model="A", delay_spread=300e-9, carrier_frequency=3.5e9, ut_array=ut_array, bs_array=bs_array, direction="uplink", ) # Generate channel impulse response a, tau = cdl(batch_size=64, num_time_steps=100, sampling_frequency=1e6)
Notes
The following tables from [TR38901] provide typical values for the delay spread.
Model
Delay spread [ns]
Very short delay spread
\(10\)
Short delay spread
\(30\)
Nominal delay spread
\(100\)
Long delay spread
\(300\)
Very long delay spread
\(1000\)
Delay spread [ns]
Frequency [GHz]
2
6
15
28
39
60
70
Indoor office
Short delay profile
20
16
16
16
16
16
16
Normal delay profile
39
30
24
20
18
16
16
Long delay profile
59
53
47
43
41
38
37
UMi Street-canyon
Short delay profile
65
45
37
32
30
27
26
Normal delay profile
129
93
76
66
61
55
53
Long delay profile
634
316
307
301
297
293
291
UMa
Short delay profile
93
93
85
80
78
75
74
Normal delay profile
363
363
302
266
249
228
221
Long delay profile
1148
1148
955
841
786
720
698
RMa / RMa O2I
Short delay profile
32
32
N/A
N/A
N/A
N/A
N/A
Normal delay profile
37
37
N/A
N/A
N/A
N/A
N/A
Long delay profile
153
153
N/A
N/A
N/A
N/A
N/A
UMi / UMa O2I
Normal delay profile
242
Long delay profile
616
Methods