sdr.LinearModulation.demodulate(x_tilde: ArrayLike) tuple[NDArray[int_], NDArray[complex128], NDArray[complex128]]

Demodulates the pulse-shaped complex samples.

This method uses matched filtering and maximum-likelihood estimation.

Parameters:
x_tilde: ArrayLike

The received pulse-shaped complex samples \(\tilde{x}[n]\) to demodulate, with sps samples per symbol and length sps * s_hat.size + pulse_shape.size - 1.

Returns:

  • The decimal symbol decisions \(\hat{s}[k]\), \(0\) to \(M-1\).

  • The matched filter outputs \(\tilde{a}[k]\).

  • The complex symbol decisions \(\hat{a}[k]\).