3GPP Cluster Delay Line Model
Within this module, HermesPy implements the 3GPP standard for cluster delay line models as defined in Study on channel model for frequencies from 0.5 to 100 GHz1. For a comprehensive description of all the parameters involved, please refer to the standard document.
The abstract base class ClusterDelayLineBase
defines all required parameters as abstrat properties
and is required to be implemented by each specific cluster delay line model.
HermesPy features the full customizable model ClusterDelayLine
as well as
implementations describing standard-compliant benchmark scenarios
Model |
Line Of Sight |
No Line Of Sight |
Outside To Inside |
---|---|---|---|
Undefined |
|||
Undefined |
|||
with pre-defined parameters. In general, the HermesPy cluster delay line implementation mixes deterministic with statistical information: Devices linked by cluster delay line models are required to specify their assumed positions and orientations, since the specular line of sight ray components are deterministic.
- class DelayNormalization(value)
Bases:
Enum
Normalization routine applied to a set of sampled delays.
Configuration option to :class:.ClusterDelayLineBase models.
- ZERO = 0
Normalize the delays, so that the minimal delay is zero
- TOF = 1
The minimal delay is the time of flight between two devices
- NONE = 2
No delay normalization is applied.
Only relevant for debugging purposes.
- class ClusterDelayLineBase(delay_normalization=DelayNormalization.ZERO, **kwargs)
Bases:
Channel
- Parameters
delay_normalization (DelayNormalization, optional) – The delay normalization routine applied during channel sampling.
- delay_normalization: DelayNormalization
The delay normalization routine applied during channel sampling.
- abstract property line_of_sight: bool
Does this model assume direct line of sight between the two devices?
Referred to as \(LOS\) within the standard.
- Returns
Line of sight indicator.
- Return type
bool
- abstract property delay_spread_mean: float
Mean of the cluster delay spread.
The spread realization and its mean are referred to as \(\mathrm{DS}\) and \(\mu_{\mathrm{lgDS}}\) within the the standard, respectively.
- Returns
Mean delay spread in seconds.
- Return type
float
- abstract property delay_spread_std: float
Standard deviation of the cluster delay spread.
The spread realization and its standard deviation are referred to as \(\mathrm{DS}\) and \(\sigma_{\mathrm{lgDS}}\) within the the standard, respectively.
- Returns
Delay spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property aod_spread_mean: float
Mean of the Azimuth Angle-of-Departure spread.
The spread realization and its mean are referred to as \(\mathrm{ASD}\) and \(\mu_{\mathrm{lgASD}}\) within the the standard, respectively.
- Returns
Mean angle spread in seconds
- Return type
float
- abstract property aod_spread_std: float
Standard deviation of the Azimuth Angle-of-Departure spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ASD}\) and \(\sigma_{\mathrm{lgASD}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property aoa_spread_mean: float
Mean of the Azimuth Angle-of-Arriaval spread.
The spread realization and its mean are referred to as \(\mathrm{ASA}\) and \(\mu_{\mathrm{lgASA}}\) within the the standard, respectively.
- Returns
Mean angle spread in seconds
- Return type
float
- abstract property aoa_spread_std: float
Standard deviation of the Azimuth Angle-of-Arrival spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ASA}\) and \(\sigma_{\mathrm{lgASA}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property zoa_spread_mean: float
Mean of the Zenith Angle-of-Arriaval spread.
The spread realization and its mean are referred to as \(\mathrm{ZSA}\) and \(\mu_{\mathrm{lgZSA}}\) within the the standard, respectively.
- Returns
Mean angle spread in seconds
- Return type
float
- abstract property zoa_spread_std: float
Standard deviation of the Zenith Angle-of-Arrival spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ZSA}\) and \(\sigma_{\mathrm{lgZSA}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property zod_spread_mean: float
Mean of the Zenith Angle-of-Departure spread.
The spread realization and its mean are referred to as \(\mathrm{ZOD}\) and \(\mu_{\mathrm{lgZSD}}\) within the the standard, respectively.
- Returns
Mean angle spread in degrees
- Return type
float
- abstract property zod_spread_std: float
Standard deviation of the Zenith Angle-of-Departure spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ZOD}\) and \(\sigma_{\mathrm{lgZOD}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in degrees.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property zod_offset: float
Offset between Zenith Angle-of-Arrival and Angle-of-Departure.
The offset is referred to as \(\mu_{\mathrm{offset,ZOD}}\) within the standard.
- Returns
The offset in degrees.
- Return type
float
- abstract property rice_factor_mean: float
Mean of the rice factor distribution.
The rice factor realization and its mean are referred to as \(K\) and \(\mu_K\) within the the standard, respectively.
- Returns
Rice factor mean in dB.
- Return type
float
- abstract property rice_factor_std: float
Standard deviation of the rice factor distribution.
The rice factor realization and its standard deviation are referred to as \(K\) and \(\sigma_K\) within the the standard, respectively.
- Returns
Rice factor standard deviation in dB.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property delay_scaling: float
Delay scaling proportionality factor
Referred to as \(r_{\tau}\) within the standard.
- Returns
Scaling factor.
- Return type
float
- Raises
ValueError – If scaling factor is smaller than one.
- abstract property cross_polarization_power_mean: float
Mean of the cross-polarization power.
The cross-polarization power and its mean are referred to as \(\mathrm{XPR}\) and \(\mu_{\mathrm{XPR}}\) within the the standard, respectively.
- Returns
Mean power in dB.
- Return type
float
- abstract property cross_polarization_power_std: float
Standard deviation of the cross-polarization power.
The cross-polarization power and its standard deviation are referred to as \(\mathrm{XPR}\) and \(\sigma_{\mathrm{XPR}}\) within the the standard, respectively.
- Returns
Power standard deviation in dB.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- abstract property num_clusters: int
Number of clusters.
Referred to as \(M\) within the standard.
- Returns
Number of clusters.
- Return type
int
- Raises
ValueError – If the number of clusters is smaller than one.
- abstract property num_rays: int
Number of rays per cluster.
Referred to as \(N\) within the standard.
- Returns
Number of rays.
- Return type
int
- Raises
ValueError – If the number of clusters is smaller than one.
- abstract property cluster_delay_spread: float
Delay spread within an individual cluster.
Referred to as \(c_{DS}\) within the standard.
- Returns
Delay spread in seconds.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- abstract property cluster_aod_spread: float
Azimuth Angle-of-Departure spread within an individual cluster.
Referred to as \(c_{ASD}\) within the standard.
- Returns
Angle spread in degrees.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- abstract property cluster_aoa_spread: float
Azimuth Angle-of-Arrival spread within an individual cluster.
Referred to as \(c_{ASA}\) within the standard.
- Returns
Angle spread in degrees.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- abstract property cluster_zoa_spread: float
Zenith Angle-of-Arrival spread within an individual cluster.
Referred to as \(c_{ZSA}\) within the standard.
- Returns
Angle spread in degrees.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- abstract property cluster_shadowing_std: float
Standard deviation of the cluster shadowing.
Referred to as \(\zeta\) within the the standard.
- Returns
Cluster shadowing standard deviation.
- Return type
float
- Raises
ValueError – If the deviation is smaller than zero.
- impulse_response(num_samples, sampling_rate)
Sample a new channel impulse response.
Note that this is the core routine from which propagate will create the channel state.
- Parameters
num_samples (int) – Number of samples within the impulse response.
sampling_rate (float) – The rate at which the delay taps will be sampled, i.e. the delay resolution.
- Returns
Impulse response in all number_rx_antennas x number_tx_antennas. 4-dimensional array of size T x number_rx_antennas x number_tx_antennas x (L+1) where L is the maximum path delay (in samples). For the ideal channel in the base class, L = 0.
- Return type
np.ndarray
- class ClusterDelayLine(line_of_sight=True, delay_spread_mean=7.14, delay_spread_std=0.38, aod_spread_mean=1.21, aod_spread_std=0.41, aoa_spread_mean=1.73, aoa_spread_std=0.28, zoa_spread_mean=0.73, zoa_spread_std=0.34, zod_spread_mean=0.1, zod_spread_std=0.0, zod_offset=0.0, rice_factor_mean=9.0, rice_factor_std=5.0, delay_scaling=1.0, cross_polarization_power_mean=9.0, cross_polarization_power_std=3.0, num_clusters=12, num_rays=20, cluster_delay_spread=5e-09, cluster_aod_spread=5.0, cluster_aoa_spread=17.0, cluster_zoa_spread=7.0, cluster_shadowing_std=3.0, **kwargs)
Bases:
ClusterDelayLineBase
,Serializable
3GPP Cluster Delay Line Channel Model.
- Parameters
num_clusters (int, optional) – Number of generated clusters per channel sample.
delay_spread (float, optional) – Root-Mean-Square spread of the cluster delay in seconds.
delay_scaling (float, optional) – Delay distribution proportionality factor.
rice_factor_mean (float, optional) – Mean of the rice factor K.
rice_factor_std (float, optional) – Standard deviation of the rice factor K.
cluster_shadowing_std (float, optional) – Cluster shadowing standard deviation in dB.
line_of_sight (bool, optional) – Is this model a line-of-sight model?
- yaml_tag: str = 'ClusterDelayLine'
YAML serialization tag.
- property line_of_sight: bool
Does this model assume direct line of sight between the two devices?
Referred to as \(LOS\) within the standard.
- Returns
Line of sight indicator.
- Return type
bool
- property delay_spread_mean: float
Mean of the cluster delay spread.
The spread realization and its mean are referred to as \(\mathrm{DS}\) and \(\mu_{\mathrm{lgDS}}\) within the the standard, respectively.
- Returns
Mean delay spread in seconds.
- Return type
float
- property delay_spread_std: float
Standard deviation of the cluster delay spread.
The spread realization and its standard deviation are referred to as \(\mathrm{DS}\) and \(\sigma_{\mathrm{lgDS}}\) within the the standard, respectively.
- Returns
Delay spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property aod_spread_mean: float
Mean of the Azimuth Angle-of-Departure spread.
The spread realization and its mean are referred to as \(\mathrm{ASD}\) and \(\mu_{\mathrm{lgASD}}\) within the the standard, respectively.
- Returns
Mean angle spread in seconds
- Return type
float
- property aod_spread_std: float
Standard deviation of the Azimuth Angle-of-Departure spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ASD}\) and \(\sigma_{\mathrm{lgASD}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property aoa_spread_mean: float
Mean of the Azimuth Angle-of-Arriaval spread.
The spread realization and its mean are referred to as \(\mathrm{ASA}\) and \(\mu_{\mathrm{lgASA}}\) within the the standard, respectively.
- Returns
Mean angle spread in seconds
- Return type
float
- property aoa_spread_std: float
Standard deviation of the Azimuth Angle-of-Arrival spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ASA}\) and \(\sigma_{\mathrm{lgASA}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property zoa_spread_mean: float
Mean of the Zenith Angle-of-Arriaval spread.
The spread realization and its mean are referred to as \(\mathrm{ZSA}\) and \(\mu_{\mathrm{lgZSA}}\) within the the standard, respectively.
- Returns
Mean angle spread in seconds
- Return type
float
- property zoa_spread_std: float
Standard deviation of the Zenith Angle-of-Arrival spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ZSA}\) and \(\sigma_{\mathrm{lgZSA}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in seconds.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property zod_spread_mean: float
Mean of the Zenith Angle-of-Departure spread.
The spread realization and its mean are referred to as \(\mathrm{ZOD}\) and \(\mu_{\mathrm{lgZSD}}\) within the the standard, respectively.
- Returns
Mean angle spread in degrees
- Return type
float
- property zod_spread_std: float
Standard deviation of the Zenith Angle-of-Departure spread.
The spread realization and its standard deviation are referred to as \(\mathrm{ZOD}\) and \(\sigma_{\mathrm{lgZOD}}\) within the the standard, respectively.
- Returns
Angle spread standard deviation in degrees.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property zod_offset: float
Offset between Zenith Angle-of-Arrival and Angle-of-Departure.
The offset is referred to as \(\mu_{\mathrm{offset,ZOD}}\) within the standard.
- Returns
The offset in degrees.
- Return type
float
- property rice_factor_mean: float
Mean of the rice factor distribution.
The rice factor realization and its mean are referred to as \(K\) and \(\mu_K\) within the the standard, respectively.
- Returns
Rice factor mean in dB.
- Return type
float
- property rice_factor_std: float
Standard deviation of the rice factor distribution.
The rice factor realization and its standard deviation are referred to as \(K\) and \(\sigma_K\) within the the standard, respectively.
- Returns
Rice factor standard deviation in dB.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property delay_scaling: float
Delay scaling proportionality factor
Referred to as \(r_{\tau}\) within the standard.
- Returns
Scaling factor.
- Return type
float
- Raises
ValueError – If scaling factor is smaller than one.
- property cross_polarization_power_mean: float
Mean of the cross-polarization power.
The cross-polarization power and its mean are referred to as \(\mathrm{XPR}\) and \(\mu_{\mathrm{XPR}}\) within the the standard, respectively.
- Returns
Mean power in dB.
- Return type
float
- property cross_polarization_power_std: float
Standard deviation of the cross-polarization power.
The cross-polarization power and its standard deviation are referred to as \(\mathrm{XPR}\) and \(\sigma_{\mathrm{XPR}}\) within the the standard, respectively.
- Returns
Power standard deviation in dB.
- Return type
float
- Raises
ValueError – If the standard deviation is smaller than zero.
- property num_clusters: int
Number of clusters.
Referred to as \(M\) within the standard.
- Returns
Number of clusters.
- Return type
int
- Raises
ValueError – If the number of clusters is smaller than one.
- property num_rays: int
Number of rays per cluster.
Referred to as \(N\) within the standard.
- Returns
Number of rays.
- Return type
int
- Raises
ValueError – If the number of clusters is smaller than one.
- property cluster_delay_spread: float
Delay spread within an individual cluster.
Referred to as \(c_{DS}\) within the standard.
- Returns
Delay spread in seconds.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- property cluster_aod_spread: float
Azimuth Angle-of-Departure spread within an individual cluster.
Referred to as \(c_{ASD}\) within the standard.
- Returns
Angle spread in degrees.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- property cluster_aoa_spread: float
Azimuth Angle-of-Arrival spread within an individual cluster.
Referred to as \(c_{ASA}\) within the standard.
- Returns
Angle spread in degrees.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- property cluster_zoa_spread: float
Zenith Angle-of-Arrival spread within an individual cluster.
Referred to as \(c_{ZSA}\) within the standard.
- Returns
Angle spread in degrees.
- Return type
float
- Raises
ValueError – If spread is smaller than zero.
- property cluster_shadowing_std: float
Standard deviation of the cluster shadowing.
Referred to as \(\zeta\) within the the standard.
- Returns
Cluster shadowing standard deviation.
- Return type
float
- Raises
ValueError – If the deviation is smaller than zero.
- 1
Study on channel model for frequencies from 0.5 to 100 GHz. 3GPP TSG-RAN, 2020. version 16.1.0 Release 16. URL: https://www.etsi.org/deliver/etsi_tr/138900_138999/138901/16.01.00_60/tr_138901v160100p.pdf.