Maximal Ratio Combining

Inheritance diagram of hermespy.modem.precoding.ratio_combining.MaximumRatioCombining

Maximal Ratio Combining combines individually demodulated symbols from multiple antenna streams into a single stream of symbols in an SNR-optimal fashion, given that they have been transmitted by a single-antenna device.

It can be configured by adding an instance to the SymbolPrecoding of a Modem exposed by the precoding attribute:

 1# Create a new simulation featuring a 1x2 SIMO link between two devices
 2simulation = Simulation()
 3tx_device = simulation.new_device()
 4rx_device = simulation.new_device(
 5    antennas=SimulatedUniformArray(SimulatedIdealAntenna(AntennaMode.RX), 0.1, (2,)),
 6)
 7
 8# Create a link between the two devices
 9link = SimplexLink()
10link.connect(tx_device, rx_device)
11
12# Configure a single carrier waveform
13waveform = RootRaisedCosineWaveform(
14    oversampling_factor=4,
15    symbol_rate=1e6,
16    num_preamble_symbols=16,
17    num_data_symbols=32,
18    modulation_order=64,
19    roll_off=.9,
20    channel_estimation=SingleCarrierIdealChannelEstimation(simulation.scenario.channel(tx_device, rx_device), tx_device, rx_device),
21)
22link.waveform = waveform
23
24# Configure the precoding
25link.receive_symbol_coding[0] = MaximumRatioCombining()

Note that decoding requires channel state information at the receiver, therefore waveform’s channel_estimation attribute must be configured.

class MaximumRatioCombining[source]

Bases: ReceiveSymbolDecoder, Serializable

Maximum ratio combining symbol decoding step.

Refer to Kahn[1] for further information.

decode_symbols(symbols, num_output_streams)[source]

Decode a data stream before reception.

This operation may modify the number of streams as well as the number of data symbols per stream.

Parameters:
  • symbols (StatedSymbols) – Symbols to be decoded.

  • num_output_streams (int) – Number of required output streams after decoding.

Return type:

StatedSymbols

Returns: Decoded symbols.

num_receive_output_streams(num_input_streams)[source]

Get required number of output streams during decoding.

Parameters:

num_input_streams (int) – Number of input streams.

Return type:

int

Returns: The number of output streams. Negative numbers indicate infeasible configurations.

property num_receive_input_symbols: int

Required number of input streams during decoding.

property num_receive_output_symbols: int

Resulting number of output streams after decoding.