# FBMC/OQAM-based OFDMA
Simulation of a multi-user OFDMA channel based on FBMC/OQAM. The inherent FBMC signal distortion is computed according to the associated article and compared to empirical results. The FBMC-based OFDMA scheme is also compared to the classic CP-based one in terms of distortion and symbol error rate.
In the provided scripts, the number of users is set to two but it could be set to any number (not thoroughly tested). The length of the signal bursts (*Ns* in the three main scripts) and the number of simulation cycles (*MaxRuns* in script *ofdma_CPvsFB_ser_delay*) are set to fairly low values to reduce run time. For more accurate simulation results, it is suggested that these parameters take larger values.
## Code
### Main Scripts
- **ofdma_2users** simulates a 2-user OFDMA channel and plots both theoretical and empirical distortion and SNDR. Multiple channel models available.
- **ofdma_CPvsFB_delay** compares the SNDR of a 2-user OFDMA channel, both FBMC-based and CP-based. AWGN channels with a fixed delay between users.
- **ofdma_CPvsFB_ser_delay** estimates the SER of a 2-user OFDMA channel, both FBMC-based and CP-based. The channel model is the composition of a fading model (multiple options available) and a random delay.
### Classes
- **polyphase_modulator** implements an FBMC/OQAM modulator according to the efficient polyphase scheme.
- **polyphase_demodulator** implements an FBMC/OQAM demodulator according to the efficient polyphase scheme.
- **ofdma_receiver** is derived from *polyphase_demodulator* and provides specific methods for computing the theoretical inherent modulation distortion.
- **ofdma_user** gathers all necessary properties for defining a user of an OFDMA channel.
### Helper Functions
- **qamsymbols** generates random QAM symbols of the specified constellation order.
- **detqamsymbols** detects QAM symbols of the specified constellation order.
## Data
- **phydyas_M64_k4.dat** contains the time response and its first four derivatives of the PHYDYAS prototype pulse with 64x2=128 subcarriers and overlapping factor 4.
## Results
### ofdma_2users
- **channels.png** shows two example channel realizations (magnitude and phase as a function of the subcarrier index).
- **distortion_noise.png** shows the theoretical distortion (per user and total), the empirical distortion and the noise output power (magnitude as a function of the subcarrier index).
- **sndr.png** shows the theoretical and empirical signal-to-noise-and-distortion ratio (SNDR, magnitude as a function of the subcarrier index).
### ofdma_CPvsFB_delay
- **sndr_delay.png** shows theoretical and empirical SNDR of both CP-based and FBMC-based OFDMA schemes (magnitude as a function of the subcarrier index).
### ofdma_CPvsFB_ser_delay
For both the CP-based and the FBMC-based OFDMA schemes:
- **SERvsTxSNR.png** shows the symbol error rate (SER) as a function of the transmitted signal-to-noise ratio (SNR);
- **SERvsRxSNR.png** shows the SER as a function of the received SNR;
- **SERvsEnNo.png** shows the SER as a function of the received EbN0.
## Requirements
Communications System Toolbox, Signal Processing Toolbox and DSP System Toolbox.
Tested with MATLAB Versions 8.3 (R2014a) and 9.0 (R2016a).
评论4