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

MultipathFadingChannel

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.