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 GHz[1]. 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
- 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.
- realize(num_samples, sampling_rate)#
Generate a new channel impulse response.
Note that this is the core routine from which
Channel.propagate()
will create the channel state.- Parameters:
num_samples (int) – Number of samples \(N\) within the impulse response.
sampling_rate (float) – The rate at which the delay taps will be sampled, i.e. the delay resolution.
- Return type:
- Returns:
Numpy aray representing the impulse response for all propagation paths between antennas. 4-dimensional tensor of size \(M_\mathrm{Rx} \times M_\mathrm{Tx} \times N \times (L+1)\) where \(M_\mathrm{Rx}\) is the number of receiving antennas, \(M_\mathrm{Tx}\) is the number of transmitting antennas, \(N\) is the number of propagated samples and \(L\) is the maximum path delay (in samples). For the ideal channel in the base class \(L = 0\).
- 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: Optional[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
- 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.