#
# SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
"""Abstract class proving an interface for channel models"""
from abc import ABC, abstractmethod
[docs]
class ChannelModel(ABC):
# pylint: disable=line-too-long
r"""ChannelModel()
Abstract class that defines an interface for channel models.
Any channel model which generates channel impulse responses must implement this interface.
All the channel models available in Sionna, such as :class:`~sionna.channel.RayleighBlockFading` or :class:`~sionna.channel.tr38901.TDL`, implement this interface.
*Remark:* Some channel models only require a subset of the input parameters.
Input
-----
batch_size : int
Batch size
num_time_steps : int
Number of time steps
sampling_frequency : float
Sampling frequency [Hz]
Output
-------
a : [batch size, num_rx, num_rx_ant, num_tx, num_tx_ant, num_paths, num_time_steps], tf.complex
Path coefficients
tau : [batch size, num_rx, num_tx, num_paths], tf.float
Path delays [s]
"""
@abstractmethod
def __call__(self, batch_size, num_time_steps, sampling_frequency):
return NotImplemented