- class sdr.LinearModulation
Implements linear phase/amplitude modulation with arbitrary symbol mapping.
Constructors¶
- LinearModulation(symbol_map: ArrayLike, ...)
Creates a new linear phase/amplitude modulation object.
String representation¶
Methods¶
- map_symbols(s: ArrayLike) NDArray[complex_]
Converts the decimal symbols \(s[k]\) to complex symbols \(a[k]\).
- decide_symbols(a_hat: ArrayLike) NDArray[int_]
Converts the received complex symbols \(\hat{a}[k]\) into decimal symbol decisions \(\hat{s}[k]\) using maximum-likelihood estimation (MLE).
- modulate(s: ArrayLike) NDArray[complex_]
Modulates the decimal symbols \(s[k]\) into pulse-shaped complex samples \(x[n]\).
- demodulate(x_hat) tuple[NDArray[int_], NDArray[complex_]]
Demodulates the pulse-shaped complex samples \(\hat{x}[n]\) into decimal symbol decisions \(\hat{s}[k]\) using matched filtering and maximum-likelihood estimation.
- abstract ber(ebn0: ArrayLike) NDArray[float_]
Computes the bit error rate (BER) at the provided \(E_b/N_0\) values.
- abstract ser(esn0: ArrayLike) NDArray[float_]
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.complex_]
The symbol map \(\{0, \dots, M-1\} \mapsto \mathbb{C}\). This maps decimal symbols from \(0\) to \(M-1\) to complex symbols.
- property pulse_shape : NDArray[np.float_]
The pulse shape \(h[n]\) of the modulated signal.
- property tx_filter : Interpolator
The transmit interpolating pulse shaping filter. The filter coefficients are the pulse shape \(h[n]\).
- property rx_filter : Decimator
The receive decimating matched filter. The filter coefficients are matched to the pulse shape \(h[-n]^*\).