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

Transmitter

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

Receiver

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.