UMi#
- class sionna.phy.channel.tr38901.UMi(carrier_frequency: float, o2i_model: str, ut_array: sionna.phy.channel.tr38901.antenna.PanelArray, bs_array: sionna.phy.channel.tr38901.antenna.PanelArray, direction: str, enable_pathloss: bool = True, enable_shadow_fading: bool = True, always_generate_lsp: bool = False, precision: str | None = None, device: str | None = None)[source]#
Bases:
sionna.phy.channel.tr38901.system_level_channel.SystemLevelChannelUrban microcell (UMi) channel model from 3GPP [TR38901] specification.
Setting up a UMi model requires configuring the network topology, i.e., the UTs and BSs locations, UTs velocities, etc. This is achieved using the
set_topology()method. Setting a different topology for each batch example is possible. The batch size used when setting up the network topology is used for the link simulations.- Parameters:
carrier_frequency (float) – Carrier frequency [Hz]
o2i_model (str) – Outdoor-to-indoor loss model for UTs located indoor. Set to
"low"to use the low-loss model, or to"high"to use the high-loss model. See section 7.4.3 of [TR38901] for details.ut_array (sionna.phy.channel.tr38901.antenna.PanelArray) – Panel array used by the UTs. All UTs share the same antenna array configuration.
bs_array (sionna.phy.channel.tr38901.antenna.PanelArray) – Panel array used by the BSs. All BSs share the same antenna array configuration.
direction (str) – Link direction. Either
"uplink"or"downlink".enable_pathloss (bool) – If True, apply pathloss. Otherwise don’t. Defaults to True.
enable_shadow_fading (bool) – If True, apply shadow fading. Otherwise don’t. Defaults to True.
always_generate_lsp (bool) – If True, new large scale parameters (LSPs) are generated for every new generation of channel impulse responses. Otherwise, always reuse the same LSPs, except if the topology is changed. Defaults to False.
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:
num_time_samples – int. Number of time samples.
sampling_frequency – float. Sampling frequency [Hz].
- Outputs:
a – [batch size, num_rx, num_rx_ant, num_tx, num_tx_ant, num_paths, num_time_samples], torch.complex. Path coefficients.
tau – [batch size, num_rx, num_tx, num_paths], torch.float. Path delays [s].
Examples
import torch from sionna.phy.channel.tr38901 import PanelArray, UMi from sionna.phy.channel import OFDMChannel # UT and BS panel arrays bs_array = PanelArray(num_rows_per_panel=4, num_cols_per_panel=4, polarization='dual', polarization_type='cross', antenna_pattern='38.901', carrier_frequency=3.5e9) ut_array = PanelArray(num_rows_per_panel=1, num_cols_per_panel=1, polarization='single', polarization_type='V', antenna_pattern='omni', carrier_frequency=3.5e9) # Instantiating UMi channel model channel_model = UMi(carrier_frequency=3.5e9, o2i_model='low', ut_array=ut_array, bs_array=bs_array, direction='uplink') # Setting up network topology # ut_loc: UTs locations # bs_loc: BSs locations # ut_orientations: UTs array orientations # bs_orientations: BSs array orientations # ut_velocities: UTs velocities # in_state: Indoor/outdoor states of UTs channel_model.set_topology(ut_loc, bs_loc, ut_orientations, bs_orientations, ut_velocities, in_state) # Instantiating the frequency domain channel # rg: an instance of sionna.phy.ofdm.ResourceGrid channel = OFDMChannel(channel_model=channel_model, resource_grid=rg)