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

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' | '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 shape.

  • "rc": Raised cosine pulse shape.

  • "srrc": Square-root raised cosine pulse shape.

span: int | None = None

The span of the pulse shape in symbols. This is only used if pulse_shape is a string. If None, 1 is used for "rect" and 10 is used for "rc" and "srrc".

alpha: float | None = None

The roll-off factor of the pulse shape. If None, 0.2 is used for "rc" and "srrc".