3GPP Cluster Delay Line Models¶
Within this module, HermesPy implements the 3GPP standard for cluster delay line models as defined in the Study on channel model for frequencies from 0.5 to 100 GHz[1].
For a link between two devices \(\alpha\) and \(\beta\) featuring \(N^{(\alpha)}\) and \(N^{(\beta)}\) antennas, respectively, the model assumes that the channel impulse response is composed of a sum of propagation paths between \(C\) clusters of scatterers perceived by both devices, with each cluster containing \(L\) individual scatterers, therefore resulting in \(C \cdot L\) propagation paths between each antenna pair and \(C \cdot L \cdot N^{(\alpha)} \cdot N^{(\beta)}\) propagation paths in total.
The impulse response of each propagation path within the cluster delay model
is a sum of a non-line-of-sight (NLOS) and a line-of-sight (LOS) component, balanced by the Ricean \(K\)-factor. Both the NLOS and LOS components
are functions of the two Antennas’ polarization characteristics
\(\mathbf{F}^{(a)}(\theta, \phi)\)
towards angle-of-arrival \(\theta_{\mathrm{ZOA}}, \phi_{\mathrm{AOA}}\)
and angle-of-departure \(\theta_{\mathrm{ZOD}}, \phi_{\mathrm{AOD}}\).
For a comprehensive description of all the parameters involved, please refer to the standard document.
The following standard parameterizations are currently provided by HermesPy:
Model |
Description |
---|---|
Spatially invariant CDL models. |
|
Model of a factory hall. |
|
Model of an office building. |
|
Model of a rural area. |
|
Model of an urban area. |
|
Model of a street canyon. |
These preset standard parameterizations distinguish between line-of-sight, no line-of-sight and, in some cases, outside-to-inside propagation conditions.
- class ClusterDelayLineBase(gain=1.0, delay_normalization=DelayNormalization.ZERO, oxygen_absorption=True, expected_state=None, **kwargs)[source]¶
Bases:
Channel
[CDLRT
,ClusterDelayLineSample
],Generic
[CDLRT
,LSST
]Base class for all 3GPP Cluster Delay Line channel models.
- Parameters:
gain (float, optional) – Linear gain factor a signal amplitude experiences when being propagated over this realization. \(1.0\) by default.
delay_normalization (DelayNormalization, optional) – The delay normalization routine applied during channel sampling.
oxygen_absorption (bool, optional) – Model oxygen absorption in the channel. Enabled by default.
expected_state (LSST, optional) – Expected large-scale state of the channel. If None, the state is randomly generated during each sample of the channel’s realization.
**kwargs – Additional keyword arguments passed to the base class.
- recall_realization(group)[source]¶
Recall a realization of this channel type from its HDF serialization.
- Parameters:
group (h5py.Group) – HDF group to which the channel realization was serialized.
- Return type:
TypeVar
(CDLRT
, bound=ClusterDelayLineRealization
)
Returns: The recalled realization instance.
- property delay_normalization: DelayNormalization¶
The delay normalization routine applied during channel sampling.
- property expected_state: LSST | None¶
Expected large-scale state of the channel.
If None, the state is randomly generated during each sample of the channel’s realization.
- class ClusterDelayLineRealization(expected_state, state_realization, parameters, sample_hooks, gain=1.0)[source]¶
Bases:
ChannelRealization
[ClusterDelayLineSample
],Generic
[LSST
]Realization of a 3GPP Cluster Delay Line channel model.
- Parameters:
expected_state (LSST | None) – Expected large-scale state of the channel. If not specified, the large-scale state is randomly generated.
state_realization (ConsistentRealization) – Realization of the large scale state.
parameters (ClusterDelayLineRealizationParameters) – General parameters of the cluster delay line realization.
sample_hooks (Set[ChannelSampleHook[ClusterDelayLineSample]]) – Hooks for callback functions during the sample generation.
gain (float, optional) – Linear amplitude scaling factor if signals propagated over the channel.
- class ClusterDelayLineSample(line_of_sight, rice_factor, azimuth_of_arrival, zenith_of_arrival, azimuth_of_departure, zenith_of_departure, delay_offset, cluster_delays, cluster_delay_spread, cluster_powers, polarization_transformations, state)[source]¶
Bases:
ChannelSample
Sample of a 3GPP Cluster Delay Line channel model.
- Parameters:
state (ChannelState) – State of the channel at the time of sampling.
- reciprocal(state)[source]¶
Generate a reciprocal sample of the current sample.
- Parameters:
state (ChannelState) – State of the reciprocal sample.
- Return type:
Returns: A reciprocal sample.
- state(num_samples, max_num_taps, interpolation_mode=InterpolationMode.NEAREST)[source]¶
Generate the discrete channel state information from this channel realization.
Denoted by
\[\mathbf{H}^{(m, \tau)} \in \mathbb{C}^{N_{\mathrm{Rx}} \times N_{\mathrm{Tx}}}\]within the respective equations.
- Parameters:
num_samples (int) – Number of discrete time-domain samples of the chanel state information.
max_num_taps (int) – Maximum number of delay taps considered per discrete time-domain sample.
interpolation_mode (InterpolationMode, optional) – Interpolation behaviour of the channel realization’s delay components with respect to the proagated signal’s sampling rate. If not specified, an integer rounding to the nearest sampling instance will be assumed.
- Return type:
Returns: The channel state information representing this channel realization.
- property azimuth_arrival_spread: float¶
Spread of azimuth of arrival angles.
Returns: Angular spread in radians.
- property azimuth_departure_spread: float¶
Spread of azimuth of departure angles.
Returns: Angular spread in radians.
- property expected_energy_scale: float¶
Expected linear scaling of a propagated signal’s energy at each receiving antenna.
Required to compute the expected energy of a signal after propagation, and therfore signal-to-noise ratios (SNRs) and signal-to-interference-plus-noise ratios (SINRs).
- property line_of_sight: bool¶
Does the realization include direct line of sight between the two devices?
- property plot_angles: _AngleVisualization¶
- property plot_power_delay: _PowerDelayVisualization¶
-
subcluster_indices:
List
[List
[int
]] = [[0, 1, 2, 3, 4, 5, 6, 7, 18, 19], [8, 9, 10, 11, 16, 17], [12, 13, 14, 15]]¶
- property zenith_arrival_spread: float¶
Spread of zenith of arrival angles.
Returns: Angular spread in radians.
- class LargeScaleState[source]¶
Bases:
object
Large scale state of a 3GPP Cluster Delay Line channel model.
- class CDLRT¶
Type of a 3GPP Cluster Delay Line channel realization.
alias of TypeVar(‘CDLRT’, bound=
ClusterDelayLineRealization
)
- class LSST¶
Type variable for large scale state types.
alias of TypeVar(‘LSST’, bound=
LargeScaleState
)
- class _PowerDelayVisualization(sample)[source]¶
Bases:
VisualizableAttribute
[StemVisualization
]Visualization of cluster delay sample power delay profile.
- class _AngleVisualization(sample)[source]¶
Bases:
VisualizableAttribute
[ScatterVisualization
]Visualization of the angles of arrival and departure.