GithubHelp home page GithubHelp logo

huiyu0622 / ep4idd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gapsc-us/ep4idd

0.0 0.0 0.0 1.1 MB

This project includes Matlab functions to simulate MIMO and Equalization systems with Iterative Detection and Decoding

MATLAB 94.50% TeX 5.50%

ep4idd's Introduction

EP4IDD: A toolbox for Iterative Detection and Decoding with Expectation Propagation

This project includes Matlab functions to simulate MIMO and Equalization systems with Iterative Detection and Decoding

AUTHORSHIP

This projects includes code in Matlab to simulate digital communication systems. The code was mostly generated by I. Santos and J.J. Murillo Fuentes.

Licensed

Licensed under the Creative Commons Attribution - NonCommercial - ShareAlike 4.0 License (CC BY-NC-SA 4.0). If an alternative license is needed, please contact us.

GOAL OF THE PROJECT

This Project includes codes in Matlab to perform iterative detection and decoding, using LDPC, for equalisation and MIMO detection. In particular, it generates the code used in the papers, including the figures:

  1. Murillo-Fuentes JJ, Santos I, Aradillas JC, Sánchez Fernández M. A Low-Complexity Double EP-based Detector for Iterative Detection and Decoding in MIMO. IEEE Trans Commun. Accepted 2021.

  2. I. Santos, J. J. Murillo-Fuentes, J. C. Aradillas and E. Arias-De-Reyna, "Channel Equalization With Expectation Propagation at Smoothing Level," in IEEE Transactions on Communications, vol. 68, no. 5, pp. 2740-2747, May 2020, doi: 10.1109/TCOMM.2020.2975624. See https://ieeexplore.ieee.org/document/9006952 to get citation

  3. I. Santos and J. J. Murillo-Fuentes, "Self and Turbo Iterations for MIMO Receivers and Large-Scale Systems," in IEEE Wireless Communications Letters, vol. 8, no. 4, pp. 1095-1098, Aug. 2019, doi: 10.1109/LWC.2019.2907941. See https://ieeexplore.ieee.org/document/8675457 to get a citation.

The Project is useful to anyone dealing with equalization, MIMO and channel detection and, specially, those trying to compare to our methods.

Please, if you use this code cite some of these references in your work.

GET STARTED

To use the code download the files. You will find three folders whose name start with "Simulations". Each folder correspond to the simulation contained in the three citations above:

  • SimulationsMIMO to reference 1
  • SimulationsKSEP to reference 2
  • SumulationsDEPeq to reference 3

The folder ParityCheckMatrix contains some LDPC parity matrices used.

The rest of the files and the folder algorithmsCode are the core of the project and are used by the three cases in the three folders aforementioned.

You will need the communications toolbox by Matlab. Also, we use the tikz toolbox to generate tex files, but this is not needed for the simulations and pdf figures can be generated in any case, just do not pay attention to messages on tikz issues.

In any of the three folders above you will find some .m files along with some folders. Any of these .m files corresponds to a simulation. These files call to a initialisation file, in folder confiFiles, that configures the whole simulation. Then calls to the main core functions in the main (upper) folder. Results are saved on ResultsXXXX. Once terminated, you can use the .m functions in the plots folder to get the figure, that will be placed in the folder figuresXXXX

Put it into work

We hope you will find the parameters in the initialization files, in folder confiFiles, intuitive enough to easily design your own. You may pick the most similar simulation to your scenario and then change parameters.

Parameters and Time

The simulations are design to get the curves in the references. Accorindly several frames and different channels, when random ones, are simulated. We run them on CPU with 10 cores and 20 threads, using the option parfor with 20 parallel transmissions to compute an averaged BER using Monte Carlo (MC). These simulations as given might last from hours to days.

For a quick checking of the code, i.e. to run a reduced number of transmissions, go to any configuration file (in configFiles) and reduce the dataEP.numberSimulations parameter, to the number of cores/threads of your computer, and/or dataEP.numberFrames, the number of frames transmitted for every different channel realization. Then, if using random channels, either in MIMO or equalization, you may also reduce the number of realizations with parameter dataEP.numberChannels.

You will also see that you may select the methods to be used as detectors. The larger the number of selected approaches the larger the needed time to perform the whole MC simulation. One of the methos is the optimal MAP detector. This approach becomes prohibitive for large channel dimensions (memory in equalization or number of antennas in MIMO) and/or larger constellations.

Disclaimer

We provide the code for the only purpose of comparison, although you might find useful for any other task.

We apology in advance for the code could be cleaner, be more commented and also for not fully updating the help of the many functions included or fully explain the many parameters involved. We considered that overall, it was worthy to publish the code as it is.

If you find that at some parts some comment or help could make a difference, do not hesitate contacting us.

CONTACT

This project is maintained by Juan José Murillo Fuentes (jjmurillo).

ep4idd's People

Contributors

jjmurillo 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.