class sdr.PSK

Implements phase-shift keying (PSK) modulation and demodulation.

Examples

See the Phase-shift keying example.

Constructors

PSK(order: int, phase_offset: float = 0.0, ...)

Creates a new PSK object.

Methods

bit_error_rate(ebn0: ArrayLike | None = None) ndarray

Computes the bit error rate (BER) at the provided \(E_b/N_0\) values.

demodulate(x_hat: ArrayLike) ndarray

Demodulates the complex symbols \(\hat{x}[k]\) to decimal symbols \(\hat{s}[k]\) using maximum-likelihood estimation.

modulate(symbols: ArrayLike) ndarray

Modulates to decimal symbols \(s[k]\) to complex symbols \(x[k]\).

symbol_error_rate(esn0: ArrayLike | None = None) ndarray

Computes the symbol error rate (SER) at the provided \(E_s/N_0\) values.

Properties

property bps : int

The number of bits per symbol \(k = \log_2 M\).

property order : int

The modulation order \(M = 2^k\).

property phase_offset : float

The phase offset \(\phi\) in degrees.

property symbol_map : ndarray

The symbol map \(\{0, \dots, M-1\} \mapsto \mathbb{C}\). This maps decimal symbols from \(0\) to \(M-1\) to complex symbols.