sdr.LinearModulation(symbol_map: ArrayLike, phase_offset: float = 0.0, sps: int = 8, pulse_shape: ArrayLike | 'rect' | 'sine' | 'rc' | 'srrc' = 'rect')

Creates a new linear phase/amplitude modulation object.

Parameters:
symbol_map: ArrayLike

The symbol mapping \(\{0, \dots, M-1\} \mapsto \mathbb{C}\). An \(M\)-length array whose indices are decimal symbols \(s[k]\) and whose values are complex symbols \(a[k]\), where \(M\) is the modulation order.

phase_offset: float = 0.0

A phase offset \(\phi\) in degrees to apply to symbol_map.

sps: int = 8

The number of samples per symbol \(f_s / f_{sym}\).

pulse_shape: ArrayLike | 'rect' | 'sine' | 'rc' | 'srrc' = 'rect'

The pulse shape \(h[n]\) of the modulated signal.

  • npt.ArrayLike: A custom pulse shape. It is important that sps matches the design of the pulse shape. See Pulse shaping.

  • "rect": Rectangular pulse shaping with sps samples per symbol, see sdr.rectangular().

  • "sine": Half-sine pulse shaping with sps samples per symbol, see sdr.half_sine().

  • "rc": Raised cosine pulse shaping with sps samples per symbol, roll-off factor of 0.2, and span of 10 symbols. This option is for convenience. Users can design their own RC pulse shape with sdr.raised_cosine().

  • "srrc": Square-root raised cosine pulse shaping with sps samples per symbol, roll-off factor of 0.2, and span of 10 symbols. This option is for convenience. Users can design their own SRRC pulse shape with sdr.root_raised_cosine().