Spatial Delay Channel#
- class SpatialDelayChannel(alpha_device=None, beta_device=None, gain=1.0, model_propagation_loss=True, **kwargs)[source]#
Bases:
DelayChannelBase
[SpatialDelayChannelRealization
]Delay channel based on spatial relations between the linked devices.
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(carrier_frequency=1e8) 4beta_device = simulation.new_device(carrier_frequency=1e8) 5 6# Create a channel between the two devices 7channel = RandomDelayChannel((1e-8, 10e-8)) 8simulation.set_channel(alpha_device, beta_device, channel) 9 10# Configure communication link between the two devices 11link = SimplexLink(alpha_device, beta_device) 12 13# Specify the waveform and postprocessing to be used by the link 14link.waveform = RRCWaveform( 15 symbol_rate=1e8, oversampling_factor=2, num_data_symbols=1000, 16 num_preamble_symbols=10, pilot_rate=10) 17link.waveform.channel_estimation = SCLeastSquaresChannelEstimation() 18link.waveform.channel_equalization = SCZeroForcingChannelEqualization() 19link.waveform.synchronization = SCCorrelationSynchronization() 20 21# Configure a simulation to evaluate the link's BER and sweep over the receive SNR 22simulation.add_evaluator(BitErrorEvaluator(link, link)) 23simulation.new_dimension('snr', dB(20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40)) 24 25# Run simulation and plot resulting SNR curve 26simulation.num_samples = 1000 27result = simulation.run() 28result.plot()
- Parameters:
alpha_device (SimulatedDevice, optional) – First device linked by the
DelayChannelBase
instance that generated this realization.beta_device (SimulatedDevice, optional) – Second device linked by the
DelayChannelBase
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.
model_propagation_loss (bool, optional) – Should free space propagation loss be modeled? Enabled by default.
**kawrgs –
Channel
base class initialization arguments.
- 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:
Returns: The recalled realization instance.