Giter VIP home page Giter VIP logo

lim.-feedback-mimo-ofdm-precoding's Introduction

Limited Feedback MIMO Precoding

Codes for the predictive quantization and joint time frequency interpolation strategy for interpolation of MIMO precoding matrices.

Running these codes require the package py-itpp installed with python-2.7, alongside standard packages like pdb, numpy, scipy, matplotlib

Code Description

  • Codebooks Generation: Generate independent codebooks for quantization of matrices residing on the Stiefel Manifold using the code indep_stiefel_quant.py.

Used for initialization of the hopping and time based predictive quantization. Also used to compare the interpolation approaches (Cayley and Geodesic).

Also, generate the codebook for singular values. This is done using the code eigenvalue_quant.py.

  • Interpolation Comparison: Now, once the independent codebooks have been generated, you can move on towards simulating the comparison between the Cayley Exponential map interpolation versus the Unitary Geodesic interpolation. This is done via the code interpolation_comparison.py. You can generate the results similar to Fig. 6,7 using this code with the given codebooks (in the "Independent Quantization Codebooks folder"). To generate the ideal unquantized BER curves, set use_cb to False. Also, to obtain the maximum capacity, use the code max_cap.py and set SNR to 0 dB (since the achievable rate result has been generated for 0 dB SNR in the interpolation_comparison code).

  • Tangent Space Codebook Generation: Moving on towards the joint time-frequency interpolation and predictive quantization scheme, the first step is to generate the codebooks for the tangent space quantization scheme initialization. We consider 10,000 independent channel evolutions. For each one, we use the evolution of the channel over 10 OFDM frames’ duration to obtain a reliable prediction from both methods. We collect the vectors representing the skew Hermitian tangents for vector quantisation (recall that Cayley Exp. map has skew Hermitian matrices as images (Section III of paper), which form a vector space). This is done to get 10,000 independent predictions that give the same number of independent vectors in the collection. This collection is generated via the vec_collec_gen.py code. After this, use the codebook_gen.py code to apply k-means algorithm to get a 6 bit base codebook for, for both the hopping based and time based schemes. Sample codebooks generated here are in the Predictive Quantization Codebooks folder.

  • Joint time-frequency interpolation and predictive quantization: Now once we have the base codebook for tangent spaces and the independent codebooks for initialisation purposes, we can proceed ahead and generate the precoders corresponding to time based and hopping based schemes. Using the code hop_pred.py, one generates precoders corresponding to 100 channel evolutions for 10 independent channel realizations (i.e. fill 10 independent 100*num_subcarriers time-frequency bins matrix with generated precoders), using both the time based and hopping based schemes. These precoders are stored as .npy files in Precoders_generated folder. The folder currently contains sample precoders generated for ITU Pedestrian-A Channel. Using eval.py, you can get the qtisation error with time, achievable rate and BER results, viz. the figures 8,9 in the paper.

Helping Codes

  • Plotting code: The python script plot_res.py contains the codes used to plot the results and save svg files corresponding to them. The file also contains the results obtained by us in raw data form as well.

  • BER and Achievable Rate codes: The python script sumrate_BER.py contains the codes used to obtain the BER and achievable rate

  • MIMO TDL Channel: The python script mimo_tdl_channel.py contains codes for channel generation, lifting and precoder prediction


Feel free to mail at [email protected] for any further clarifications regarding the project.

lim.-feedback-mimo-ofdm-precoding's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.