(c) 2020 Seyed Hadi Mirfarshbafan e-mail: sm2675@cornell.edu
If you are using the simulator (or parts of it) for a publication, then you must cite our paper:
S. H. Mirfarshbafan, A. Gallyas-Sanhueza, R. Ghods, and C. Studer, "Beamspace Channel Estimation for Massive MIMO mmWave Systems: Algorithm and VLSI Design", IEEE Trans. Circuits Syst. I (TCAS-I), to appear, 2020
and clearly mention this in your paper. In the following, by paper, we mean the above paper.
To regenerate the plots in figures 4 and 5 of the paper, simply assign one of the letters 'a', 'b', 'c' or 'd' to the variable sim_scenario in the main_sim.m
and run the script. It will generate a plot with BER curves and another one with MSE curves corresponding to the chosen letter (subfigure) of figure 4 and 5, respectively.
Also note that the list of denoisers to be simulated are set in the par.denoiser_list variable in the par_config.m file.
IMPORTANT: The TF variable INCLUDE_ANM_NOMP in main_sim.m determines whether NOMP and ANM should be simulated along with other denoisers.
For ANM and NOMP to work, please download their codes at [https://github.com/badrinarayan/astlinespec] and [https://bitbucket.org/wcslspectralestimation/continuous-frequency-estimation/src/NOMP/], respectively and extract the zip files to ./denoisers/ directory of the simulator.
In order to simulate with simulation parameters other than the default ones, define a new set of parameters in the switch case block of par_config.m file and assign a value to the variable sim_scenario in the main_sim.m that corresponds to the new set of parameters. Please consider the following guidelines when creating a new set of simulation parameters:
-
Assign a unique runID to each simulation scenario to enable reproducibility and to make different simulations distinguishable.
-
Set the number of BS antennas and UEs and other parameters in the
par_config.mfile. Note that channel condition inpar.channelhas to be set to one of the values defined in./channel/channel.m. IMPORTANT: The LoS and nonLoS mmMagic channel models which are generated by the QuaDRiGa channel simulator ([https://quadriga-channel-model.de/]) are available only for the default simulation scenarios (a,b,c,d) which correspond to the paper simulation settings. We have included a set of pre-generated channel matrices for the default simulation parameters, using the QuaDRiGa matlab code, as mat files and stored them in./channel/generated_channels/. The functiongenerate_channelsaccepts the par struct which contains the parameters of simulation as its input argument. It first searches the folder./channel/generated_channels/to see if the channels with requested parameters already exist as mat files. If not it attempts to generate them by calling the functionchannel. However, if the channel type assigned topar.channelis'QuadMMLoS'orQuadMMnLoS', it cannot generate new channels unless the QuaDRiGa package is on the simulation path. Interested readers can download the QuaDRiGa software package, unzip the package and add it to matlab's path, and then generate realistic channels for their desired set of parameters. -
Tha cell array
par.denoiser_listdefines the denoisers to be simulated. The number of elements in this array must match the number of elements (which are row vectors) of the cell arrayspar.SNRdB_list_Landpar.n_channel_trials_L. For example, thelth denoiser of the listpar.SNRdB_list_Lis simulated over the SNR values defined by thelth vector in the cell arraypar.SNRdB_list_L. The entries of thelth vector in the cell arraypar.n_channel_trials_L, determine the number of channel realization (per worker) to be simulated in each SNR point. The overall number of trials in each SNR pointkis given by
par.n_channel_trials_L{l}(k)*par.trials_per_channel*par.n_parallel_workers. Note thatmain_sim.mconsists of aparforthat launchespar.n_parallel_workersparallel workers that each simulatepar.n_channel_trials*par.trials_per_channeltrials and then fuses the results of these parallel workers to get better averaging and more reliable error rate results. Additionally, this allows for a faster simulation by leveraging matlab's parallel computing features whenever supported by the underlying machine. -
The simulation results, as well as the par struct holding all the simulation parameters, for each denoiser simulation are saved as a mat file in the
./results/sim_ressubfolder. Theplot_BERandplot_MSE
We highly recommend you to execute the code step-by-step (using MATLAB's debug mode) in order to get a detailed understanding of the simulator.
In order to do so, you should change the parfor in the main_sim.m to a simple for (just replace parfor with for) so that debugging is possible.
- Version 1 (Sep. 06 2020) - sm2675@cornell.edu - uploaded the simulation