Random Delay Channel

Inheritance diagram of hermespy.channel.delay.random.RandomDelayChannel, hermespy.channel.delay.random.RandomDelayChannelRealization

Delay channel assuming a uniformly distributed random propagation between the linked devices. Its impulse response between two devices \(\alpha\) and \(\beta\) featuring \(N^{(\alpha)}\) and \(N^{(\beta)}\) antennas, respectively, is given by

\[\mathbf{H}(t,\tau) = \frac{1}{4\pi f_\mathrm{c}^{(\alpha)}\overline{\tau}} \mathbf{A}^{(\alpha,\beta)} \delta(\tau - \overline{\tau})\ \text{.}\]

The assumed propagation delay is drawn from the uniform distribution

\[\overline{\tau} \sim \mathcal{U}(\tau_{\mathrm{Min}}, \tau_{\mathrm{Max}})\]

and lies in the interval between \(\tau_\mathrm{Min}\) and \(\tau_\mathrm{Max}\). The sensor array response \(\mathbf{A}^{(\alpha,\beta)}\) is always assumed to be the identity matrix.

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

class RandomDelayChannel(delay, decorrelation_distance=inf, **kwargs)[source]

Bases: DelayChannelBase[RandomDelayChannelRealization]

Delay channel assuming random propagation delays.

Parameters:
  • delay (float | Tuple[float, float]) – Assumed propagation delay in seconds. If a scalar floating point, the delay is assumed to be constant. If a tuple of two floats, the tuple values indicate the mininum and maxium values of a uniform distribution, respectively.

  • decorrelation_distance (float, optional) – Distance in meters at which the channel decorrelates. By default, the channel is assumed to be static in space.

  • **kwargsChannel base class initialization parameters.

_realize()[source]

Generate a new channel realzation.

Abstract subroutine of realize. Each Channel is required to implement their own _realize() method.

Returns: A new channel realization.

Return type:

RandomDelayChannelRealization

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:

RandomDelayChannelRealization

Returns: The recalled realization instance.

property decorrelation_distance: float

Distance in meters at which the channel decorrelates.

Raises:

ValueError – If the decorrelation distance is set to a negative value.

property delay: float | Tuple[float, float]

Assumed propagation delay in seconds.

If set to a scalar floating point, the delay is assumed to be constant. If set to a tuple of two floats, the tuple values indicate the mininum and maxium values of a uniform distribution, respectively.

Raises:
  • ValueError – If the delay is set to a negative value.

  • ValueError – If the delay is set to a tuple of two values where the first value is greater than the second value.

class RandomDelayChannelRealization(consistent_realization, delay_variable, delay, model_propagation_loss, sample_hooks, gain)[source]

Bases: DelayChannelRealization

Realization of a random delay channel.

Generated from RandomDelayChannel's _realize routine.

Parameters:
  • model_propagation_loss (bool) – Should free space propagation loss be modeled?

  • gain (float) – Linear power gain factor a signal experiences when being propagated over this realization.

static From_HDF(group, delay_variable, sample_hooks)[source]
Return type:

RandomDelayChannelRealization

to_HDF(group)[source]

Serialize the channel realization to HDF5.

Parameters:

group (Group) – HDF5 group to serialize the channel realization to.

Return type:

None

property delay: float | Tuple[float, float]

Assumed propagation delay in seconds.

If set to a scalar floating point, the delay is assumed to be constant. If set to a tuple of two floats, the tuple values indicate the mininum and maxium values of a uniform distribution, respectively.

Raises:
  • ValueError – If the delay is set to a negative value.

  • ValueError – If the delay is set to a tuple of two values where the first value is greater than the second value.