sdr.LinearModulation.demodulate(x_hat: ArrayLike) 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.

Parameters:
x_hat: ArrayLike

The received pulse-shaped complex samples \(\hat{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 \(\hat{a}[k]\).