Optimal Design of Energy-Efficient Multi-User MIMO Systems: Is Massive MIMO the Answer? ========================== This is a code package is related to the follow scientific article: Emil Björnson, Luca Sanguinetti, Jakob Hoydis, Mérouane Debbah, “[Optimal Design of Energy-Efficient Multi-User MIMO Systems: Is Massive MIMO the Answer?](http://arxiv.org/pdf/1403.6150),” IEEE Transactions on Wireless Communications, vol. 14, no. 6, pp. 3059-3075, June 2015. The package contains a simulation environment, based on Matlab, that reproduces all the numerical results and figures in the article. *We encourage you to also perform reproducible research!* ##Abstract of Article Assume that a multi-user multiple-input multiple-output (MIMO) system is designed from scratch to uniformly cover a given area with maximal energy efficiency (EE). What are the optimal number of antennas, active users, and transmit power? The aim of this paper is to answer this fundamental question. We consider jointly the uplink and downlink with different processing schemes at the base station and propose a new realistic power consumption model that reveals how the above parameters affect the EE. Closed-form expressions for the EE-optimal value of each parameter, when the other two are fixed, are provided for zero-forcing (ZF) processing in single-cell scenarios. These expressions prove how the parameters interact. For example, in sharp contrast to common belief, the transmit power is found to increase (not to decrease) with the number of antennas. This implies that energy-efficient systems can operate in high signal-to-noise-ratio regimes in which interference-suppressing signal processing is mandatory. Numerical and analytical results show that the maximal EE is achieved by a massive MIMO setup wherein hundreds of antennas are deployed to serve a relatively large number of users using ZF processing. The numerical results show the same behavior under imperfect channel state information and in symmetric multi-cell scenarios. ##Content of Code Package The article contains 11 simulation figures, numbered from 3-9 and 10-14. These are all generated by the Matlab script simulationAllFigures.m. The package contains three additional Matlab functions which are called by the main script: functionCalculateEEMulticellZF.m, functionCalculateEmpircalEE.m, and functionCalculateEmpircalEE_MMSE.m. See each file for further documentation. ##Acknowledgements E. Björnson was funded by an International Postdoc Grant from the Swedish Research Council. L. Sanguinetti was funded by the People Programme (Marie Curie Actions) FP7 PIEF-GA-2012-330731 Dense4Green. This research has been supported by the ERC Starting Grant 305123 MORE and by the French pôle de compétitivité SYSTEM@TIC within the project 4G in Vitro. ##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.