Skip to content

michelezucchelli/SPE_project

Repository files navigation

Performance Comparison of Zero Forcing, Minimum Mean Square Error, and V-BLAST Techniques in Different MIMO Scenarios

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

This project simulates the Bit Error Rate (BER) vs Signal to Noise Ratio (SNR) of a communication system using different techniques at the receiver:

  1. Zero Forcing (ZF);
  2. Minimum Mean Square Error (MMSE);
  3. ZF- Vertical Bell Laboratories Layered Space-Time (ZF-VBLAST).
  4. MMSE- Vertical Bell Laboratories Layered Space-Time (MMSE-VBLAST).

The MATLAB code is highly configurable and easily extendable.

The project comprises the following files:

  • main.m: main file, simulates the communication system, compute and plot the BERs vs SNR;
  • plot_figure.m: if you already have BER files and just want to plot the results, use this file instead of the main.m;
  • config_file.txt: contains the simulation parameters;
  • zf.m: function to compute the ZF technique on the received noisy simbols;
  • mmse.m: function to compute the MMSE technique on the received noisy simbols;
  • zfvblast.m: function to compute the ZF-VBLAST technique on the received noisy simbols;
  • mmsevblast.m: function to compute the MMSE-VBLAST technique on the received noisy simbols;
  • write_config.m: function used to save on file the BER in the format seed: ber[];
  • load_config.m: function used to read the simulation's parameter from the config.txt file;
  • bootstrap_ci.m: function to compute the Confidence Interval (CI) of the results using the bootsrap method.
  • asymptotic_ci.m: function to compute the Confidence Interval (CI) of the results using the asymptoyic method.

(back to top)

Built With

MATLAB R2023b

(back to top)

Getting Started

Prerequisites

  • MATLAB 2023b or superior;
  • MATLAB adds on:
    • Communication Toolbox;
    • DSP System Toolbox;
    • Signal Processing Toolbox;

Installation

  1. Clone this repo
     git clone https://github.com/michelezucchelli/SPE_project.git 
  2. Open the folder on MATLAB

(back to top)

Usage

After the Installation steps

  1. Open the config_file.txt, there you will find the simulation's parameter, namely:
    • Techniques you want to use at the receiver (ZF, MMSE, ZF-VBLAST, MMSE-VBLAST), you can choose any combination of them. 1 indicates that you want to use that specific technique, 0 that you wont. The order is ZF, MMSE, ZF-VBLAST, MMSE-VBLAST. As an example, type: 1,1,0,0 means that at the receiver will be applied ZF and MMSE, but not ZF-VBLAST and MMSE-VBLAST;
    • Number of transmitting antennas. Should be lower or at most equal to the number of receiving antennas;
    • Number of receiving antennas;
    • Modulation order. The default modulation technique is the n-QAM, if you want to use BPSK type M: 2 while if you want to use QPSK type M: 4;
    • Number of symbols to transmit. Should be a multiple of the number of transmitting antennas.
    • Points to plot. The number of points you want to see in the plot of the BER vs SNR.
    • Minimum SNR value.
    • Maximum SNR value.
    • Seeds. To obtain reproducible results, you can select here the random number generator's seeds (rng seeds). You need at least one seed for the simulation to work.
    • Confidence interval of the results.
  2. Once you set the parameters in the config file, open on MATLAB the main.m file and run it. In your project folder, you will see that a new folder named as the parameters in the config_file.txt is created. There are stored the output files generated by the code. Since we use rng seeds, two simulations with the same parameters using the same rng seeds will produce the same output, for this output values are saved on unique files. BER output files are dictionaries in the form seed: ber[]. Finally, the code will plot the BER for the selected techniques, with the selected CI for the mean, computed using bootstrap/asimptotic method.

You can easily extend the code by adding techniques such as SIC, ML, or your own personal ones.

(back to top)

Contact

Michele Zucchelli - [email protected]

Denis Tairovski - [email protected]

(back to top)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages