class MultipathFadingChannel(delays, power_profile, rice_factors, alpha_device=None, beta_device=None, gain=1.0, num_sinusoids=None, los_angle=None, doppler_frequency=None, los_doppler_frequency=None, alpha_correlation=None, beta_correlation=None, **kwargs)[source]#

Base class for the implementation of stochastic multipath fading channels.

Allows for the direct configuration of the Multipath Fading Channel’s parameters

$\begin{split}\mathbf{g} &= \left[ g_{1}, g_{2}, \,\dotsc,\, g_{L} \right]^\mathsf{T} \in \mathbb{C}^{L} \\ \mathbf{k} &= \left[ K_{1}, K_{2}, \,\dotsc,\, K_{L} \right]^\mathsf{T} \in \mathbb{R}^{L} \\ \mathbf{\tau} &= \left[ \tau_{1}, \tau_{2}, \,\dotsc,\, \tau_{L} \right]^\mathsf{T} \in \mathbb{R}^{L} \\\end{split}$

directly. Refer to Multipath Fading Channels for a detailed description of the channel model.

The following minimal example outlines how to configure the channel model within the context of a Simulation:

 1# Initialize two devices to be linked by a channel
2simulation = Simulation()
3alpha_device = simulation.new_device(carrier_frequency=1e8)
4beta_device = simulation.new_device(carrier_frequency=1e8)
5
6# Create a channel between the two devices
7delays = 1e-9 * np.array([0, 0.3819, 0.4025, 0.5868, 0.4610, 0.5375, 0.6708, 0.5750, 0.7618, 1.5375, 1.8978, 2.2242, 2.1717, 2.4942, 2.5119, 3.0582, 4.0810, 4.4579, 4.5695, 4.7966, 5.0066, 5.3043, 9.6586])
8powers = 10 ** (np.array([-13.4, 0, -2.2, -4, -6, -8.2, -9.9, -10.5, -7.5, -15.9, -6.6, -16.7, -12.4, -15.2, -10.8, -11.3, -12.7, -16.2, -18.3, -18.9, -16.6, -19.9, -29.7]) / 10)
9rice_factors = np.zeros_like(delays)
11simulation.set_channel(alpha_device, beta_device, channel)
12
13# Configure communication link between the two devices
15
16# Specify the waveform and postprocessing to be used by the link
18    symbol_rate=1e8, oversampling_factor=2, num_data_symbols=1000,
19    num_preamble_symbols=10, pilot_rate=10)
22
23# Configure a simulation to evaluate the link's BER and sweep over the receive SNR
25simulation.new_dimension('snr', dB(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20))
26
27# Run simulation and plot resulting SNR curve
28result = simulation.run()
29result.plot()

Parameters:
• delays (numpy.ndarray) – Delay in seconds of each individual multipath tap. Denoted by $$\tau_{\ell}$$ within the respective equations.

• power_profile (numpy.ndarray) – Power loss factor of each individual multipath tap. Denoted by $$g_{\ell}$$ within the respective equations.

• rice_factors (numpy.ndarray) – Rice factor balancing line of sight and multipath in each individual channel tap. Denoted by $$K_{\ell}$$ within the respective equations.

• alpha_device (Device, optional) – First device linked by the MultipathFadingChannel instance that generated this realization.

• beta_device (Device, otional) – Second device linked by the MultipathFadingChannel instance that generated this realization.

• gain (float, optional) – Linear power gain factor a signal experiences when being propagated over this realization. $$1.0$$ by default.

• num_sinusoids (int, optional) – Number of sinusoids used to sample the statistical distribution. Denoted by $$N$$ within the respective equations.

• 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. Denoted by $$\omega_{\ell}$$ within the respective equations.

• 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.

• ValueError – If delays are smaller than zero.

• ValueError – If power factors are smaller than zero.

• ValueError – If rice factors are smaller than zero.

recall_realization(group)[source]#

Recall a realization of this channel type from its HDF serialization.

Parameters:

group (h5py.Group) – HDF group to which the channel realization was serialized.

Return type:

MultipathFadingRealization

Returns: The recalled realization instance.

property alpha_correlation: AntennaCorrelation | None#

Antenna correlation at the first device.

Returns:

Handle to the correlation model. None, if no model was configured and ideal correlation is assumed.

property alpha_device: SimulatedDevice | None#

First device linked by this channel.

Referred to as $$\alpha$$ in the respective equations.

If not specified, i.e. None, the channel is considered floating, meaning a call to realize() will raise an exception.

property beta_correlation: AntennaCorrelation | None#

Antenna correlation at the second device.

Returns:

Handle to the correlation model. None, if no model was configured and ideal correlation is assumed.

property beta_device: SimulatedDevice | None#

Second device linked by this channel.

Referred to as $$\beta$$ in the respective equations.

If not specified, i.e. None, the channel is considered floating, meaning a call to realize() will raise an exception.

property delays: ndarray#

Delays for each propagation path in seconds.

Represented by the sequence

$\left[\tau_{1},\, \dotsc,\, \tau_{L} \right]^{\mathsf{T}} \in \mathbb{R}_{+}^{L}$

of $$L$$ propagtion delays within the respective equations.

property doppler_frequency: float#

Doppler frequency in $$Hz$$.

Represented by $$\omega$$ within the respective equations.

property los_angle: float | None#

Line of sight doppler angle in radians.

Represented by $$\theta_{0}$$ within the respective equations.

property los_doppler_frequency: float#

Line of sight Doppler frequency in $$Hz$$.

Represented by $$\omega$$ within the respective equations.

property max_delay: float#

Maximum propagation delay in seconds.

property num_resolvable_paths: int#

Number of dedicated propagation paths.

Represented by $$L$$ within the respective equations.

property num_sinusoids: int#

Number of sinusoids assumed to model the fading in time-domain.

Represented by $$N$$ within the respective equations.

Raises:

ValueError – For values smaller than zero.

property power_profile: ndarray#

Gain factors of each propagation path.

Represented by the sequence

$\left[g_{1},\, \dotsc,\, g_{L} \right]^{\mathsf{T}} \in \mathbb{R}_{+}^{L}$

of $$L$$ propagtion factors within the respective equations.

property rice_factors: ndarray#

Rice factors balancing line of sight and non-line of sight power components for each propagation path.

Represented by the sequence

$\left[K_{1},\, \dotsc,\, K_{L} \right]^{\mathsf{T}} \in \mathbb{R}_{+}^{L}$

of $$L$$ factors within the respective equations.