Spatial Delay Channel

Inheritance diagram of hermespy.channel.delay.spatial.SpatialDelayChannel, hermespy.channel.delay.spatial.SpatialDelayChannelRealization

The spatial delay channel requires both linked devices to specify their assumed positions. 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 between the two devices is given by

\[\overline{\tau} = \frac{\|\mathbf{p}^{(\alpha)} - \mathbf{p}^{(\beta)}\|_2}{c_0}\]

and depends on the distance between the two devices located at positions \(\mathbf{p}^{(\alpha)}\) and \(\mathbf{p}^{(\beta)}\). The sensor array response \(\mathbf{A}^{(\alpha,\beta)}\) depends on the device’s relative orientation towards each other.

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(
 4    carrier_frequency=1e8,
 5    pose=Transformation.From_Translation(np.array([0, 0, 0])),
 6)
 7beta_device = simulation.new_device(
 8    carrier_frequency=1e8,
 9    pose=Transformation.From_Translation(np.array([1, 0, 0])),
10)
11
12# Create a channel between the two devices
13channel = SpatialDelayChannel()
14simulation.set_channel(alpha_device, beta_device, channel)
15
16# Configure communication link between the two devices
17link = SimplexLink()
18alpha_device.transmitters.add(link)
19beta_device.receivers.add(link)
20
21# Specify the waveform and postprocessing to be used by the link
22link.waveform = RRCWaveform(
23    symbol_rate=1e8, oversampling_factor=2, num_data_symbols=1000,
24    num_preamble_symbols=10, pilot_rate=10)
25link.waveform.channel_estimation = SCLeastSquaresChannelEstimation()
26link.waveform.channel_equalization = SCZeroForcingChannelEqualization()
27link.waveform.synchronization = SCCorrelationSynchronization()
28
class SpatialDelayChannel(model_propagation_loss=True, gain=1.0, **kwargs)[source]

Bases: DelayChannelBase[SpatialDelayChannelRealization]

Delay channel based on spatial relations between the linked devices.

Parameters:
  • model_propagation_loss (bool, optional) – Should free space propagation loss be modeled? Enabled by default.

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

  • **kawrgsChannel base class initialization arguments.

_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:

SpatialDelayChannelRealization

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:

SpatialDelayChannelRealization

Returns: The recalled realization instance.

class SpatialDelayChannelRealization(model_propagation_loss, sample_hooks, gain)[source]

Bases: DelayChannelRealization

Realization of a spatial delay channel.

Generated from SpatialDelayChannel'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, sample_hooks)[source]
Return type:

SpatialDelayChannelRealization