channel_model.py (1290B)
1 # 2 # SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 # SPDX-License-Identifier: Apache-2.0 4 # 5 """Abstract class proving an interface for channel models""" 6 7 from abc import ABC, abstractmethod 8 9 class ChannelModel(ABC): 10 # pylint: disable=line-too-long 11 r"""ChannelModel() 12 13 Abstract class that defines an interface for channel models. 14 15 Any channel model which generates channel impulse responses must implement this interface. 16 All the channel models available in Sionna, such as :class:`~sionna.channel.RayleighBlockFading` or :class:`~sionna.channel.tr38901.TDL`, implement this interface. 17 18 *Remark:* Some channel models only require a subset of the input parameters. 19 20 Input 21 ----- 22 23 batch_size : int 24 Batch size 25 26 num_time_steps : int 27 Number of time steps 28 29 sampling_frequency : float 30 Sampling frequency [Hz] 31 32 Output 33 ------- 34 a : [batch size, num_rx, num_rx_ant, num_tx, num_tx_ant, num_paths, num_time_steps], tf.complex 35 Path coefficients 36 37 tau : [batch size, num_rx, num_tx, num_paths], tf.float 38 Path delays [s] 39 """ 40 41 @abstractmethod 42 def __call__(self, batch_size, num_time_steps, sampling_frequency): 43 44 return NotImplemented