- class sdr.LinearModulation
Implements linear phase/amplitude modulation with arbitrary symbol mapping.
Note
The nomenclature for variable names in linear modulators is as follows: \(s[k]\) are decimal symbols, \(\hat{s}[k]\) are decimal symbol decisions, \(a[k]\) are complex symbols, \(\tilde{a}[k]\) are received complex symbols, \(\hat{a}[k]\) are complex symbol decisions, \(x[n]\) are pulse-shaped complex samples, and \(\tilde{x}[n]\) are received pulse-shaped complex samples. \(k\) indicates a symbol index and \(n\) indicates a sample index.
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.