TDL#
- class sionna.phy.channel.tr38901.TDL(model: str, delay_spread: float, carrier_frequency: float, num_sinusoids: int = 20, los_angle_of_arrival: float = 0.7853981633974483, min_speed: float = 0.0, max_speed: float | None = None, num_rx_ant: int = 1, num_tx_ant: int = 1, spatial_corr_mat: torch.Tensor | None = None, rx_corr_mat: torch.Tensor | None = None, tx_corr_mat: torch.Tensor | None = None, precision: str | None = None, device: str | None = None)[source]#
Bases:
sionna.phy.channel.channel_model.ChannelModelTapped delay line (TDL) channel model from the 3GPP [TR38901] specification
The power delay profiles (PDPs) are normalized to have a total energy of one.
Channel coefficients are generated using a sum-of-sinusoids model [SoS]. Channel aging is simulated in the event of mobility.
If a minimum speed and a maximum speed are specified such that the maximum speed is greater than the minimum speed, then speeds are randomly and uniformly sampled from the specified interval for each link and each batch example.
The TDL model only works for systems with a single transmitter and a single receiver. The transmitter and receiver can be equipped with multiple antennas. Spatial correlation is simulated through filtering by specified correlation matrices.
The
spatial_corr_matparameter can be used to specify an arbitrary spatial correlation matrix. In particular, it can be used to model correlated cross-polarized transmit and receive antennas as follows (see, e.g., Annex G.2.3.2.1 [TS38141-1]):\[\mathbf{R} = \mathbf{R}_{\text{rx}} \otimes \mathbf{\Gamma} \otimes \mathbf{R}_{\text{tx}}\]where \(\mathbf{R}\) is the spatial correlation matrix
spatial_corr_mat, \(\mathbf{R}_{\text{rx}}\) the spatial correlation matrix at the receiver with same polarization, \(\mathbf{R}_{\text{tx}}\) the spatial correlation matrix at the transmitter with same polarization, and \(\mathbf{\Gamma}\) the polarization correlation matrix. \(\mathbf{\Gamma}\) is 1x1 for single-polarized antennas, 2x2 when only the transmit or receive antennas are cross-polarized, and 4x4 when transmit and receive antennas are cross-polarized.It is also possible not to specify
spatial_corr_mat, but instead the correlation matrices at the receiver and transmitter, using therx_corr_matandtx_corr_matparameters, respectively. This can be useful when single polarized antennas are simulated, and it is also more computationally efficient. This is equivalent to settingspatial_corr_matto :\[\mathbf{R} = \mathbf{R}_{\text{rx}} \otimes \mathbf{R}_{\text{tx}}\]where \(\mathbf{R}_{\text{rx}}\) is the correlation matrix at the receiver
rx_corr_matand \(\mathbf{R}_{\text{tx}}\) the correlation matrix at the transmittertx_corr_mat.- Parameters:
model (str) – TDL model to use. One of ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘A30’, ‘B100’, ‘C300’.
delay_spread (float) – RMS delay spread [s]. For the ‘A30’, ‘B100’, and ‘C300’ models, the delay spread must be set to 30ns, 100ns, and 300ns, respectively.
carrier_frequency (float) – Carrier frequency [Hz]
num_sinusoids (int) – Number of sinusoids for the sum-of-sinusoids model. Defaults to 20.
los_angle_of_arrival (float) – Angle-of-arrival for LoS path [radian]. Only used with LoS models. Defaults to pi/4.
min_speed (float) – Minimum speed [m/s]. Defaults to 0.0.
max_speed (float | None) – Maximum speed [m/s]. If set to None, then
max_speedtakes the same value asmin_speed.num_rx_ant (int) – Number of receive antennas. Defaults to 1.
num_tx_ant (int) – Number of transmit antennas. Defaults to 1.
spatial_corr_mat (torch.Tensor | None) – Spatial correlation matrix of shape [num_rx_ant*num_tx_ant, num_rx_ant*num_tx_ant]. If not set to None, then
rx_corr_matandtx_corr_matare ignored and this matrix is used for spatial correlation. If set to None andrx_corr_matandtx_corr_matare also set to None, then no correlation is applied.rx_corr_mat (torch.Tensor | None) – Spatial correlation matrix for the receiver of shape [num_rx_ant, num_rx_ant]. If set to None and
spatial_corr_matis also set to None, then no receive correlation is applied.tx_corr_mat (torch.Tensor | None) – Spatial correlation matrix for the transmitter of shape [num_tx_ant, num_tx_ant]. If set to None and
spatial_corr_matis also set to None, then no transmit correlation is applied.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 TDL channel model assuming an OFDM waveform:
from sionna.phy.channel.tr38901 import TDL from sionna.phy.channel import OFDMChannel tdl = TDL(model="A", delay_spread=300e-9, carrier_frequency=3.5e9, min_speed=0.0, max_speed=3.0) channel = OFDMChannel(channel_model=tdl, resource_grid=rg)
where
rgis an instance ofResourceGrid.Notes
The following tables from [TR38901] provide typical values for the delay spread.
Model
Delay spread [ns]
Very short delay spread
\(10\)
Short short delay spread
\(10\)
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
Attributes
- property k_factor: torch.Tensor#
K-factor in linear scale. Only available with LoS models.
- property delays: torch.Tensor#
Path delays [s]
- property mean_powers: torch.Tensor#
Path powers in linear scale
- property mean_power_los: torch.Tensor#
LoS component power in linear scale. Only available with LoS models.
- property delay_spread: torch.Tensor#
RMS delay spread [s]