Inheritance diagram of hermespy.modem.waveform_single_carrier.RectangularWaveform

The recangular waveform is a single-carrier modulation scheme filtering the communication symbols with rectangle pulse shape:

Pulse Properties

(Source code, png, hires.png, pdf)


(Source code, png, hires.png, pdf)


The waveform can be configured by specifying the number of number of data- and preamble symbols contained within each frame, as well as the considered symbol rate:

1# Initialize the waveform description
2waveform = RectangularWaveform(
3    oversampling_factor=4,
4    symbol_rate=1e6,
5    num_preamble_symbols=16,
6    num_data_symbols=32,
7    modulation_order=64,

Afterwards, additional processing steps such as synchronization, channel estimation, equalization, and the pilot symbol sequence can be added to the waveform:

 1# Configure the waveform's synchronization routine
 2waveform.synchronization = SingleCarrierCorrelationSynchronization()
 4# Configure the waveform's channel estimation routine
 5waveform.channel_estimation = SingleCarrierLeastSquaresChannelEstimation()
 7# Configure the waveform's channel equalization routine
 8waveform.channel_equalization = SingleCarrierZeroForcingChannelEqualization()
10# Configure the waveform's pilot symbol sequence
11waveform.pilot_symbol_sequence = CustomPilotSymbolSequence(
12    np.exp(.25j * np.pi * np.array([0, 1, 2, 3]))

In order to generate and evaluate communication transmissions or receptions, waveforms should be added to modem implementations. Refer to Transmitting Modem, Receiving Modem or Simplex Link for more information. For instructions how to implement custom waveforms, refer to Implementing Communication Waveforms.

class RectangularWaveform(relative_bandwidth=1.0, *args, **kwargs)[source]

Bases: FilteredSingleCarrierWaveform, Serializable

Rectangular filtered single carrier modulation.

  • symbol_rate (float) – Rate at which symbols are being generated in Hz.

  • num_preamble_symbols (int) – Number of preamble symbols within a single communication frame.

  • num_data_symbols (int) – Number of data symbols within a single communication frame.

  • num_postamble_symbols (int, optional) – Number of postamble symbols within a single communication frame.

  • guard_interval (float, optional) – Guard interval between communication frames in seconds. Zero by default.

  • oversampling_factor (int, optional) – The oversampling factor of the waform.

  • pilot_rate (int, optional) – Pilot symbol rate. Zero by default, i.e. no pilot symbols.

  • pilot_symbol_sequence (Optional[PilotSymbolSequence], optional) – The configured pilot symbol sequence. Uniform by default.

  • repeat_pilot_symbol_sequence (bool, optional) – Allow the repetition of pilot symbol sequences. Enabled by default.

  • kwargs (Any) – Waveform generator base class initialization parameters.

property bandwidth: float

Bandwidth of the frame generated by this generator.

Used to estimate the minimal sampling frequency required to adequately simulate the scenario.


Bandwidth in Hz.

Return type:


property relative_bandwidth: float

Bandwidth relative to the configured symbol rate.


ValueError – On values smaller or equal to zero.

yaml_tag: Optional[str] = 'SC-Rectangular'

YAML serialization tag