/unlimited-capacity

Simulation code for “Massive MIMO has Unlimited Capacity” by Emil Björnson, Jakob Hoydis, Luca Sanguinetti, IEEE Transactions on Wireless Communications, vol. 17, no. 1, pp. 574-590, Jan. 2018.

Primary LanguageMATLAB

Massive MIMO has Unlimited Capacity

This is a code package is related to the follow scientific article:

Emil Björnson, Jakob Hoydis, Luca Sanguinetti, “Massive MIMO has Unlimited Capacity,” IEEE Transactions on Wireless Communications, to appear.

The package contains a simulation environment, based on Matlab, that reproduces some of the numerical results and figures in the article. We encourage you to also perform reproducible research!

Abstract of Article

The capacity of cellular networks can be improved by the unprecedented array gain and spatial multiplexing offered by Massive MIMO. Since its inception, the coherent interference caused by pilot contamination has been believed to create a finite capacity limit, as the number of antennas goes to infinity. In this paper, we prove that this is incorrect and an artifact from using simplistic channel models and suboptimal precoding/combining schemes. We show that with multicell MMSE precoding/combining and a tiny amount of spatial channel correlation or large-scale fading variations over the array, the capacity increases without bound as the number of antennas increases, even under pilot contamination. More precisely, the result holds when the channel covariance matrices of the contaminating users are asymptotically linearly independent, which is generally the case. If also the diagonals of the covariance matrices are linearly independent, it is sufficient to know these diagonals (and not the full covariance matrices) to achieve an unlimited asymptotic capacity.

Content of Code Package

The article contains 5 simulation figures, numbered 2, 4, 5, 6, and 7. Figure 2 is generated by the Matlab script simulationFigure2.m and the remaining figures are generated by simulationAllFiguresExceptFigure2.m by selecting different values of the variable "simulation". The package contains four additional Matlab functions, which are called by the main script: functionChannelEstimates.m, functionComputeSE_DL.m, functionComputeSE_UL.m, and functionRonering.m.

See each file for further documentation.

Acknowledgements

This research has been supported by ELLIIT, the Swedish Foundation for Strategic Research (SFF), the EU FP7 under ICT-619086 (MAMMOET), and the ERC Starting Grant 305123 MORE.

License and Referencing

This code package is licensed under the GPLv2 license. If you in any way use this code for research that results in publications, please cite our original article listed above.