- class sdr.LinearModulation
Implements linear phase/amplitude modulation with arbitrary symbol mapping.
Variable nomenclature
\(k\): Symbol index
\(n\): Sample index
\(s[k]\): Decimal symbols
\(a[k]\) Complex symbols
\(x[n]\): Pulse-shaped complex samples
\(\tilde{x}[n]\): Received (noisy) pulse-shaped complex samples
\(\tilde{a}[k]\): Received (noisy) complex symbols
\(\hat{a}[k]\): Complex symbol decisions
\(\hat{s}[k]\): Decimal symbol decisions
Constructors¶
- LinearModulation(symbol_map: ArrayLike, ...)
Creates a new linear phase/amplitude modulation object.
Methods¶
- map_symbols(s: ArrayLike) NDArray[complex128]
Converts the decimal symbols into complex symbols.
- decide_symbols(a_tilde) tuple[NDArray[int_], NDArray[complex128]]
Converts the received complex symbols into MLE symbol decisions.
- modulate(s: ArrayLike) NDArray[complex128]
Modulates the decimal symbols into pulse-shaped complex samples.
- demodulate(...) tuple[NDArray[int_], NDArray[complex128], NDArray[complex128]]
Demodulates the pulse-shaped complex samples.
- abstract ber(ebn0: ArrayLike) NDArray[float64]
Computes the bit error rate (BER) at the provided \(E_b/N_0\) values.
- abstract ser(esn0: ArrayLike) NDArray[float64]
Computes the symbol error rate (SER) at the provided \(E_s/N_0\) values.
Properties¶
- property phase_offset : float
The phase offset \(\phi\) in degrees.
- property symbol_map : NDArray[np.complex128]
The symbol map \(\{0, \dots, M-1\} \mapsto \mathbb{C}\).
- property pulse_shape : NDArray[np.float64]
The pulse shape \(h[n]\) of the modulated signal.
- property tx_filter : Interpolator
The transmit interpolating pulse shaping filter.