Multipath Fading
- class AntennaCorrelation(channel=None, device=None)
Bases:
ABC
Base class for statistical modeling of antenna array correlations.
- abstract property covariance: ndarray
Antenna covariance matrix.
Returns: Two-dimensional numpy array representing the covariance matrix.
- Return type
ndarray
- property channel: Optional[MultipathFadingChannel]
The channel this correlation model configures.
- Return type
Optional
[MultipathFadingChannel
]- Returns
Handle to the channel. None if the model is currently considered floating
- property device: Optional[SimulatedDevice]
The device this correlation model is based upon.
- Return type
Optional
[SimulatedDevice
]- Returns
Handle to the device. None if the device is currently unknown.
- class CustomAntennaCorrelation(covariance)
Bases:
Serializable
,AntennaCorrelation
Customizable antenna correlations.
- Parameters
covariance (np.ndarray) – Postive definte square antenna covariance matrix.
- yaml_tag: Optional[str] = 'CustomCorrelation'
YAML serialization tag
- property covariance: ndarray
Antenna covariance matrix.
Returns: Two-dimensional numpy array representing the covariance matrix.
- Return type
ndarray
- class MultipathFadingChannel(delays, power_profile, rice_factors, num_sinusoids=None, los_angle=None, doppler_frequency=None, los_doppler_frequency=None, interpolate_signals=None, alpha_correlation=None, beta_correlation=None, **kwargs)
Bases:
Channel
,Serializable
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.
- 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.
alpha_correlation (AntennaCorrelation, optional) – Antenna correlation model at the first device. By default, the channel assumes ideal correlation, i.e. no cross correlations.
beta_correlation (AntennaCorrelation, optional) – Antenna correlation model at the second device. By default, the channel assumes ideal correlation, i.e. no cross correlations.
**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.
- serialized_attributes: Set[str] = {'impulse_response_interpolation', 'interpolate_signals'}
Set of object attributes to be serialized.
- delay_resolution_error: float = 0.4
- interpolate_signals: bool
- los_gains: np.ndarray
- property delays: ndarray
Access configured path delays.
- Returns
Path delays.
- Return type
np.ndarray
- property power_profile: ndarray
Access configured power profile.
- Returns
Power profile.
- Return type
np.ndarray
- property rice_factors: 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
- 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
- property alpha_correlation: Optional[AntennaCorrelation]
Antenna correlation at the first device.
- Return type
Optional
[AntennaCorrelation
]- Returns
Handle to the correlation model. None, if not model was configured and ideal correlation is assumed.
- property beta_correlation: Optional[AntennaCorrelation]
Antenna correlation at the second device.
- Return type
Optional
[AntennaCorrelation
]- Returns
Handle to the correlation model. None, if not model was configured and ideal correlation is assumed.
- property transmitter: SimulatedDevice
SimulatedDevice transmitting into this channel.
- Returns
A handle to the modem transmitting into this channel.
- Return type
- Raises
RuntimeError – If a transmitter is already configured.
- property receiver: SimulatedDevice
SimulatedDevice receiving from this channel.
- Returns
A handle to the device receiving from this channel.
- Return type
- Raises
RuntimeError – If a receiver is already configured.
- 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.