/NOMA

This repo has our initial codes for offline implementation of NOMA with CVX

Primary LanguageMATLAB

NOMA

This repo has our initial codes for offline implementation of NOMA with CVX.

1. Purpose of the test:

     o The test is for a MxN NOMA system where an M-antenna AP serves N single-antenna users.

     o The objective is to design the appropriate precoders at the AP to maximize the weighted
       sum-rate. This design should maintain fairness among users and also SIC requirements. 

     o This version of the project just is used as an initial test with offline processing and
       CVX solver for optimization. For real-time implementation, we used python and CVXOPT which 
       the codes will be uploaded after publishing the paper.

2. Procedure at high level:

     o Phase 1 (sounding): For the sounding, you can use both downlink or uplink channels. If 
       uplink is used, you should consider calibration as a must to compensate the DL/UL mismatch.
       The current version of the code uses DL channels directly to design the precoders.

     o Phase 2 (Precoder design): Upon obtaining the channel gains or vectors, the iterative 
       optimization algorithm calculates the precoders based on the channels and weights you
       define in the weighted sum-rate formula.

     o Phase 3 (Frame assembly): Based on the precoders, you generate a frame in which the payload
       part is the superimposition of all individual pre-coded payloads. The frame has an specific 
       format in the preamble part. Then the precoded frames are transmitted.

     o Phase 4 (SIC): The weakest user follows its regular manner, while others an iterative 
       interference cancellation method. There are two options for SIC, regular ZF-based SIC and
       our particular SIC which works slightly better.

3. Codes for each phase:

     o Phase 1: "tx_signal_gen" for generating sounding packets and "my_chan_estimate" for channel 
       estimation with user-defined over sampling.

     o Phase 2: CVX_PA/enum_t/find_tangs/double_check_sol/General_PA_main

     o Phase 3:  gen_super_frame or gen_super_frame_G_filter

     o Phase 4:  data_rx_decode or data_rx_decode_G_filter or ZF_vs_our_method based on the config.

4. Stored data:

     o channel_ui.mat stores the downlink channels between the AP and user i at 52 subcarriers.

     o v_stack.mat has the stack of optimal precoders to be used for frame assembly.

5. Outputs:

     o The final results at users side are: EVM of decoded data, constellation of each SIC's stage,
       synchornization results, and freq. offsets.