gen_single_sector_topology_interferers#
- sionna.phy.channel.gen_single_sector_topology_interferers(batch_size: int, num_ut: int, num_interferer: int, scenario: str, min_bs_ut_dist: float | None = None, isd: float | None = None, bs_height: float | None = None, min_ut_height: float | None = None, max_ut_height: float | None = None, indoor_probability: float | None = None, min_ut_velocity: float | None = None, max_ut_velocity: float | None = None, precision: str | None = None, device: str | None = None) Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor][source]#
Generate a batch of topologies consisting of a single BS located at the origin,
num_utUTs randomly and uniformly dropped in a cell sector, andnum_interfererinterfering UTs randomly dropped in the adjacent cellsThe following picture shows how UTs are sampled.
UT velocity and orientation are drawn uniformly at random, whereas the BS points towards the center of the sector it serves.
The drop configuration can be controlled through the optional parameters. Parameters set to None are set to valid values according to the chosen
scenario(see [TR38901]).The returned batch of topologies can be used as-is with the
set_topology()method of the system level models, i.e.UMi,UMa, andRMa.In the returned
ut_loc,ut_orientations,ut_velocities, andin_statetensors, the firstnum_utitems along the axis with index 1 correspond to the served UTs, whereas the remainingnum_interfereritems correspond to the interfering UTs.- Parameters:
batch_size (int) – Batch size
num_ut (int) – Number of UTs to sample per batch example
num_interferer (int) – Number of interfering UTs per batch example
scenario (str) – System level model scenario. One of
"uma","umi","rma","uma-calibration", or"umi-calibration".min_bs_ut_dist (float | None) – Minimum BS-UT distance [m]
isd (float | None) – Inter-site distance [m]
bs_height (float | None) – BS elevation [m]
min_ut_height (float | None) – Minimum UT elevation [m]
max_ut_height (float | None) – Maximum UT elevation [m]
indoor_probability (float | None) – Probability of a UT to be indoor
min_ut_velocity (float | None) – Minimum UT velocity [m/s]
max_ut_velocity (float | None) – Maximum UT velocity [m/s]
precision (str | None) – Precision used for internal calculations and outputs. If set to None,
precisionis used.device (str | None) – Device for computation. If None,
deviceis used.
- Outputs:
ut_loc – [batch_size, num_ut + num_interferer, 3], torch.float. UTs locations. The first
num_utitems along the axis with index 1 correspond to the served UTs, whereas the remainingnum_interfereritems correspond to the interfering UTs.bs_loc – [batch_size, 1, 3], torch.float. BS location. Set to (0,0,0) for all batch examples.
ut_orientations – [batch_size, num_ut + num_interferer, 3], torch.float. UTs orientations [radian]. The first
num_utitems along the axis with index 1 correspond to the served UTs, whereas the remainingnum_interfereritems correspond to the interfering UTs.bs_orientations – [batch_size, 1, 3], torch.float. BS orientation [radian]. Oriented towards the center of the sector.
ut_velocities – [batch_size, num_ut + num_interferer, 3], torch.float. UTs velocities [m/s]. The first
num_utitems along the axis with index 1 correspond to the served UTs, whereas the remainingnum_interfereritems correspond to the interfering UTs.in_state – [batch_size, num_ut + num_interferer], torch.bool. Indoor/outdoor state of UTs. True means indoor, False means outdoor. The first
num_utitems along the axis with index 1 correspond to the served UTs, whereas the remainingnum_interfereritems correspond to the interfering UTs.
Examples
from sionna.phy.channel.tr38901 import PanelArray, UMi from sionna.phy.channel import gen_single_sector_topology_interferers # Create antenna arrays bs_array = PanelArray(num_rows_per_panel=4, num_cols_per_panel=4, polarization='dual', polarization_type='VH', 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) # Create channel model channel_model = UMi(carrier_frequency=3.5e9, o2i_model='low', ut_array=ut_array, bs_array=bs_array, direction='uplink') # Generate the topology topology = gen_single_sector_topology_interferers(batch_size=100, num_ut=4, num_interferer=4, scenario='umi') # Set the topology ut_loc, bs_loc, ut_orientations, bs_orientations, ut_velocities, in_state = topology channel_model.set_topology(ut_loc, bs_loc, ut_orientations, bs_orientations, ut_velocities, in_state) channel_model.show_topology()