Chains#

class OFDMTransmitter(N_carrier_data: int, N_cp: int, carrier_type: ndarray | list | None = None, pilots: ndarray | list | None = None)#

OFDM transmitter processing chain.

This class encapsulates the sequence of operations to generate an OFDM time-domain transmit signal from input data symbols.

Processing steps: - Serial to parallel conversion - Allocation of data and pilot symbols to OFDM subcarriers - IFFT to move from frequency to time domain - Addition of cyclic prefix to mitigate inter-symbol interference - Parallel to serial conversion to output the time-domain signal

Parameters#

N_carrier_dataint

Number of carriers (subcarriers) for data

carrier_typenp.ndarray or list

Array indicating the carrier allocation types (e.g., data, pilot, null).

N_cpint

Length of the cyclic prefix.

pilotslist or np.ndarray

Pilot symbols to be inserted on pilot subcarriers.

Attributes#

chainProcessor

Sequential processor implementing the transmitter chain.

class OFDMReceiver(N_carrier_data: int, N_cp: int, h: ~numpy.ndarray | list = <factory>, carrier_type: ~numpy.ndarray | list | None = None)#

OFDM receiver processing chain.

This class encapsulates the sequence of operations to recover data symbols from a received OFDM time-domain signal.

Processing steps: - Serial to parallel conversion - Cyclic prefix removal - FFT to transform to frequency domain - Frequency-domain equalization using channel response - Extraction of data and pilot subcarriers - Parallel to serial conversion to output recovered data symbols

Parameters#

N_carrier_dataint

Number of carriers (subcarriers) for data

carrier_typenp.ndarray or list

Array indicating the carrier allocation types (e.g., data, pilot, null).

N_cpint

Length of the cyclic prefix.

hnp.ndarray or list

Channel impulse or frequency response used for equalization.

Attributes#

chainProcessor

Sequential processor implementing the receiver chain.