Multipath Fading
- class MultipathFadingChannel(delays, power_profile, rice_factors, num_sinusoids=None, los_angle=None, doppler_frequency=None, los_doppler_frequency=None, interpolate_signals=None, **kwargs)
Bases:
hermespy.channel.channel.Channel
Implements a stochastic fading multipath channel.
For MIMO systems, the received signal is the addition of the signal transmitted at all antennas. The channel model is defined in the parameters, which should have the following fields: - param.delays - numpy.ndarray containing the delays of all significant paths (in s) - param.power_delay_profile - numpy.ndarray containing the average power of each path (in linear scale). It must have the same number of elements as ‘param.delays’ - param.k_factor_rice: numpy.ndarray containing the K-factor of the Ricean distribution for each path (in linear scale). It must have the same number of elements as ‘param.delays’
The channel is time-variant, with the auto-correlation depending on its maximum ‘doppler_frequency’ (in Hz). Realizations in different drops are independent.
The model supports multiple antennas, and the correlation among different antennas can be specified in parameters ‘tx_cov_matrix’ and ‘rx_cov_matrix’, for the both transmitter and at the receiver side, respectively. They both must be Hermitian, positive definite square matrices.
Rayleigh/Rice fading and uncorrelated scattering is considered. Fading follows Jakes’ Doppler spectrum, using the simulation approach from Xiao et al.1, which is based on the sum of sinusoids with random phases.
If the delays are not multiple of the sampling interval, then sinc-based interpolation is considered.
Antenna correlation considers the Kronecker model, as described in Yu et al.2.
The channel will provide ‘number_rx_antennas’ outputs to a signal consisting of ‘number_tx_antennas’ inputs. A random number generator, given by ‘rnd’ may be needed. The sampling rate is the same at both input and output of the channel, and is given by ‘sampling_rate’ samples/second. tx_cov_matrix and rx_cov_matrix are covariance matrices for transmitter and receiver.
- __delays
Delay per propagation case in seconds.
- Type
np.ndarray
- __power_profile
Power per propagation case.
- Type
np.ndarray
- __rice_factors
Rice factor per propagation case.
- Type
np.ndarray
- __max_delay
Maximum propagation delay in seconds.
- Type
float
- __num_resolvable paths
Number of resolvable paths within the multipath model.
- Type
int
- __num_sinusoids
Number of sinusoids components per sample sequence.
- Type
int
- __los_angle
Line of sight angle of arrival.
- Type
Optional[float]
- los_gains
Path gains for line of sight component in sample sequence, derived from rice factor
- Type
np.array
- non_los_gains
Path gains for non-line of sight in sample sequence, derived from rice factor
- Type
np.array
- __doppler_frequency
Doppler frequency in Hz.
- Type
float
- __los_doppler_frequency
Optional doppler frequency for the line of sight component.
- Type
Optional[float]
- interpolate_signals
Interpolate signals during time-delay modeling. Disabled by default.
- Type
bool
Object initialization.
- Parameters
delays (np.ndarray) – Delay in seconds of each individual multipath tap.
power_profile (np.ndarray) – Power loss factor of each individual multipath tap.
rice_factors (np.ndarray) – Rice factor balancing line of sight and multipath in each individual channel tap.
transmitter (Transmitter, optional) – The modem transmitting into this channel.
receiver (Receiver, optional) – The modem receiving from this channel.
scenario (Scenario, optional) – The scenario this channel is attached to.
active (bool, optional) – Channel activity flag.
gain (float, optional) – Channel power gain.
random_generator (rnd.Generator, optional) – Generator object for random number sequences.
num_sinusoids (int, optional) – Number of sinusoids used to sample the statistical distribution.
los_angle (float, optional) – Angle phase of the line of sight component within the statistical distribution.
doppler_frequency (float, optional) – Doppler frequency shift of the statistical distribution.
**kwargs (Any, optional) – Channel base class initialization parameters.
- Raises
ValueError – If the length of delays, power_profile and rice_factors is not identical. If delays are smaller than zero. If power factors are smaller than zero. If rice factors are smaller than zero.
- yaml_tag: str = 'MultipathFading'
YAML serialization tag.
- yaml_matrix = True
- delay_resolution_error: float = 0.4
- interpolate_signals: bool
- los_gains: np.ndarray
- property delays: numpy.ndarray
Access configured path delays.
- Returns
Path delays.
- Return type
np.ndarray
- property power_profile: numpy.ndarray
Access configured power profile.
- Returns
Power profile.
- Return type
np.ndarray
- property rice_factors: numpy.ndarray
Access configured rice factors.
- Returns
Rice factors.
- Return type
np.ndarray
- property doppler_frequency: float
Access doppler frequency shift.
- Returns
Doppler frequency shift in Hz.
- Return type
float
- property los_doppler_frequency: float
Access doppler frequency shift of the line of sight component.
- Returns
Doppler frequency shift in Hz.
- Return type
float
- property max_delay: float
Access the maximum multipath delay.
- Returns
The maximum delay.
- Return type
float
- property num_resolvable_paths: int
Access the configured number of fading sequences generating a single impulse response.
- Returns
The number of sequences.
- Return type
int
- property num_sinusoids: int
Access the configured number of sinusoids within one fading sequence.
- Returns
The number of sinusoids.
- Return type
int
- property los_angle: Optional[float]
Access configured angle of arrival of the specular model component.
- Returns
The AoA in radians, None if it is not configured.
- Return type
Optional[float]
- 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
- property min_sampling_rate: float
Minimal sampling rate required to adequately model the channel.
- Returns
The minimal sampling rate in Hz.
- Return type
float
- interpolation_filter(sampling_rate)
Create an interpolation filter matrix.
- Parameters
sampling_rate (
float
) – The sampling rate to which to interpolate.- Returns
Interpolation filter matrix containing filters for each configured resolvable path.
- Return type
np.ndarray
- classmethod to_yaml(representer, node)
Serialize a channel object to YAML.
- Parameters
representer (SafeRepresenter) – A handle to a representer used to generate valid YAML code. The representer gets passed down the serialization tree to each node.
node (MultipathFadingChannel) – The channel instance to be serialized.
- Returns
The serialized YAML node.
- Return type
Node
- classmethod from_yaml(constructor, node)
Recall a new MultipathFadingChannel instance from YAML.
- Parameters
constructor (SafeConstructor) – A handle to the constructor extracting the YAML information.
node (Node) – YAML node representing the MultipathFadingChannel serialization.
- Returns
Newly created MultipathFadingChannel instance. The internal references to modems will be None and need to be initialized by the scenario YAML constructor.
- Return type
- 1
Chengshan Xiao, Yahong Rosa Zheng, and Norman C. Beaulieu. Novel sum-of-sinusoids simulation models for rayleigh and rician fading channels. IEEE Transactions on Wireless Communications, 5(12):3667–3679, 2006. doi:10.1109/TWC.2006.256990.
- 2
Kai Yu, M. Bengtsson, B. Ottersten, D. McNamara, P. Karlsson, and M. Beach. A wideband statistical model for nlos indoor mimo channels. In Vehicular Technology Conference. IEEE 55th Vehicular Technology Conference. VTC Spring 2002 (Cat. No.02CH37367), volume 1, 370–374 vol.1. 2002. doi:10.1109/VTC.2002.1002729.