# On the Performance of QPSK Modulation over Dowlink NOMA: From error probability derivation to SDR-based validation

# On the Performance of QPSK Modulation over Downlink NOMA: From error probability derivation to SDR-based validation

This repository is associated to the paper available at [URL].

...

...

@@ -178,7 +178,7 @@ Contains several functions to compare the theoretical BER with a statistical BER

##### Find\_Optimum.py

Contains the algorithm for searching for the optimum power distribution. A custom implementation is compared to an existing solution. It is based on scipy and on the file `Theory_N_receivers.py`.

Contains the algorithm for searching for the optimum power distribution. A custom implementation is compared to an existing solution. It is based on scipy and uses the file `Theorie_N_receptors.py`.

Its behavior is detailed in our report, and explanations on the matrices used in the optimization are given at the beginning of the file.

...

...

@@ -186,23 +186,24 @@ Its behavior is detailed in our report, and explanations on the matrices used in

Contains functions to calculate an error rate by following the ideal channel model with the Monte-Carlo method.

Usage examples are given in `Comparison_Model_Theory.py` and at the end of the file.

Usage examples are given in `Comparison_Model_Theorie.py` and at the end of the file.

##### Theory\_N\_receivers.py

##### NOMA\_Optimize.c

Contains functions to calculate the theoretical error rate using the formula developed in the report (and the pseudo code given therein).

Contains an implementation of the proposed algorithm to find the optimum power distributions for N users. This file can be compiled using `python3 setup.py --install`, and then used as a standard module (see `Time_Optimum.py` for an example).

Usage examples are given in `Comparison_Model_Theory.py` and at the end of the file.

##### Theory\_N\_receivers.py

##### Theory\_N\_receivers\_auto\_develop.py

Contains functions to calculate the theoretical error rate using the formula developed in the report (and the pseudo code given therein).

Contains functions to compute automatically the theoretical formula for a given user, regardless of the number of users. The output is formated as a LaTeX source.

Usage examples are given in `Comparaison_Modele_Theorie.py` and at the end of the file.

A usage example is given at the end of the file.

##### Time\_Optimum.py

Contains the algorithm used to compare our proposed optimization method with the <ahref="https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.basinhopping.html">Basin-Hopping implementation in Scipy</a>. It imports the contents of `NOMA_Optimize.c` as a module, which requires the command `python3 setup.py --install` to be run beforehand.

## Appendixes

### OFDMA

We tried to reproduce the flowgraph of the following publication, but without success : <aname="https://www.researchgate.net/publication/322924686_OFDMA_Simulations_on_GNU_Radio">https://www.researchgate.net/publication/322924686_OFDMA_Simulations_on_GNU_Radio</a>

An implementation of OFDMA could be interesting, as seen in the following publication: <ahref="https://www.researchgate.net/publication/322924686_OFDMA_Simulations_on_GNU_Radio">https://www.researchgate.net/publication/322924686_OFDMA_Simulations_on_GNU_Radio</a>. We were however unable to reproduce the flowgraph describe.