4G/LTE - SNR

 

 

 

 

SNR, BER, Constellation

 

This page is to show some snapshot and intuitive picture about LTE modulation schedule being supported as of now and how SNR would influence on signal quality at the reciever side. These snapshots are at the level of constellation meaning it is before any kind of channel decoding and error correction. (If you are not so familiar with the the concept of SNR, BER. See the SNR and BER page in this site. Also, you may get some intuitive understanding of effect of SNR on real UE after going through all those channel decoding and error correct from Physical Layer Performance Test page).

 

Following shows the 3GPP specification of each of LTE Modulation scheme based on 36.211 7.1 Modulation mapper. Matlab code to show these plots is at < List 1 >. It is long code, but it is just bunch of numbers copied from the 3GPP specification. No complicated logic.

 

Followings are the plots showing the constellation of 10000 LTE symbols with different modulation scheme and AWGN with various level. Just look at how the range of error for each symbol (EVM) gets wider as SNR decreases.  Matlab code for this is at < List 2 >.

 

 

 

 

 

 

 

 

< List 1 >

 

Following constellation is based on 36.211 7.1 Modulation mapper.

 

clear all;

 

BPSK = [1/sqrt(2) + j*1/sqrt(2);

        -1/sqrt(2) - j*1/sqrt(2)];

    

QPSK = [1/sqrt(2) + j*1/sqrt(2);

        1/sqrt(2) - j*1/sqrt(2);

        -1/sqrt(2) + j*1/sqrt(2);

        -1/sqrt(2) - j*1/sqrt(2)];

    

QAM16 = [1/sqrt(10) + j*1/sqrt(10);

         1/sqrt(10) + j*3/sqrt(10);

         3/sqrt(10) + j*1/sqrt(10);

         3/sqrt(10) + j*3/sqrt(10);

         1/sqrt(10) - j*1/sqrt(10);

         1/sqrt(10) - j*3/sqrt(10);

         3/sqrt(10) - j*1/sqrt(10);

         3/sqrt(10) - j*3/sqrt(10);

         -1/sqrt(10) + j*1/sqrt(10);

         -1/sqrt(10) + j*3/sqrt(10);

         -3/sqrt(10) + j*1/sqrt(10);

         -3/sqrt(10) + j*3/sqrt(10);

         -1/sqrt(10) - j*1/sqrt(10);

         -1/sqrt(10) - j*3/sqrt(10);

         -3/sqrt(10) - j*1/sqrt(10);

         -3/sqrt(10) - j*3/sqrt(10)];

     

     QAM64 = [3/sqrt(42) + j*3/sqrt(42);

              3/sqrt(42) + j*1/sqrt(42);

              1/sqrt(42) + j*3/sqrt(42);

              1/sqrt(42) + j*1/sqrt(42);

              3/sqrt(42) + j*5/sqrt(42);

              3/sqrt(42) + j*7/sqrt(42);

              1/sqrt(42) + j*5/sqrt(42);

              1/sqrt(42) + j*7/sqrt(42);

              5/sqrt(42) + j*3/sqrt(42);

              5/sqrt(42) + j*1/sqrt(42);

              7/sqrt(42) + j*3/sqrt(42);

              7/sqrt(42) + j*1/sqrt(42);

              5/sqrt(42) + j*5/sqrt(42);

              5/sqrt(42) + j*7/sqrt(42);

              7/sqrt(42) + j*5/sqrt(42);

              7/sqrt(42) + j*7/sqrt(42);

              3/sqrt(42) - j*3/sqrt(42);

              3/sqrt(42) - j*1/sqrt(42);

              1/sqrt(42) - j*3/sqrt(42);

              1/sqrt(42) - j*1/sqrt(42);

              3/sqrt(42) - j*5/sqrt(42);

              3/sqrt(42) - j*7/sqrt(42);

              1/sqrt(42) - j*5/sqrt(42);

              1/sqrt(42) - j*7/sqrt(42);

              5/sqrt(42) - j*3/sqrt(42);

              5/sqrt(42) - j*1/sqrt(42);

              7/sqrt(42) - j*3/sqrt(42);

              7/sqrt(42) - j*1/sqrt(42);

              5/sqrt(42) - j*5/sqrt(42);

              5/sqrt(42) - j*7/sqrt(42);

              7/sqrt(42) - j*5/sqrt(42);

              7/sqrt(42) - j*7/sqrt(42);

              -3/sqrt(42) + j*3/sqrt(42);

              -3/sqrt(42) + j*1/sqrt(42);

              -1/sqrt(42) + j*3/sqrt(42);

              -1/sqrt(42) + j*1/sqrt(42);

              -3/sqrt(42) + j*5/sqrt(42);

              -3/sqrt(42) + j*7/sqrt(42);

              -1/sqrt(42) + j*5/sqrt(42);

              -1/sqrt(42) + j*7/sqrt(42);

              -5/sqrt(42) + j*3/sqrt(42);

              -5/sqrt(42) + j*1/sqrt(42);

              -7/sqrt(42) + j*3/sqrt(42);

              -7/sqrt(42) + j*1/sqrt(42);

              -5/sqrt(42) + j*5/sqrt(42);

              -5/sqrt(42) + j*7/sqrt(42);

              -7/sqrt(42) + j*5/sqrt(42);

              -7/sqrt(42) + j*7/sqrt(42);

              -3/sqrt(42) - j*3/sqrt(42);

              -3/sqrt(42) - j*1/sqrt(42);

              -1/sqrt(42) - j*3/sqrt(42);

              -1/sqrt(42) - j*1/sqrt(42);

              -3/sqrt(42) - j*5/sqrt(42);

              -3/sqrt(42) - j*7/sqrt(42);

              -1/sqrt(42) - j*5/sqrt(42);

              -1/sqrt(42) - j*7/sqrt(42);

              -5/sqrt(42) - j*3/sqrt(42);

              -5/sqrt(42) - j*1/sqrt(42);

              -7/sqrt(42) - j*3/sqrt(42);

              -7/sqrt(42) - j*1/sqrt(42);

              -5/sqrt(42) - j*5/sqrt(42);

              -5/sqrt(42) - j*7/sqrt(42);

              -7/sqrt(42) - j*5/sqrt(42);

              -7/sqrt(42) - j*7/sqrt(42)];

          

     QAM256 = [5/sqrt(170) + j*5/sqrt(170);

               5/sqrt(170) + j*7/sqrt(170);

               7/sqrt(170) + j*5/sqrt(170);

               7/sqrt(170) + j*7/sqrt(170);

               5/sqrt(170) + j*3/sqrt(170);

               5/sqrt(170) + j*1/sqrt(170);

               7/sqrt(170) + j*3/sqrt(170);

               7/sqrt(170) + j*1/sqrt(170);

               3/sqrt(170) + j*5/sqrt(170);

               3/sqrt(170) + j*7/sqrt(170);

               1/sqrt(170) + j*5/sqrt(170);

               1/sqrt(170) + j*7/sqrt(170);

               3/sqrt(170) + j*3/sqrt(170);

               3/sqrt(170) + j*1/sqrt(170);

               1/sqrt(170) + j*3/sqrt(170);

               1/sqrt(170) + j*1/sqrt(170);

               5/sqrt(170) + j*11/sqrt(170);

               5/sqrt(170) + j*9/sqrt(170);

               7/sqrt(170) + j*11/sqrt(170);

               7/sqrt(170) + j*9/sqrt(170);

               5/sqrt(170) + j*13/sqrt(170);

               5/sqrt(170) + j*15/sqrt(170);

               7/sqrt(170) + j*13/sqrt(170);

               7/sqrt(170) + j*15/sqrt(170);

               3/sqrt(170) + j*11/sqrt(170);

               3/sqrt(170) + j*9/sqrt(170);

               1/sqrt(170) + j*11/sqrt(170);

               1/sqrt(170) + j*9/sqrt(170);

               3/sqrt(170) + j*13/sqrt(170);

               3/sqrt(170) + j*15/sqrt(170);

               1/sqrt(170) + j*13/sqrt(170);

               1/sqrt(170) + j*15/sqrt(170);

               11/sqrt(170) + j*5/sqrt(170);

               11/sqrt(170) + j*7/sqrt(170);

               9/sqrt(170) + j*5/sqrt(170);

               9/sqrt(170) + j*7/sqrt(170);

               11/sqrt(170) + j*3/sqrt(170);

               11/sqrt(170) + j*1/sqrt(170);

               9/sqrt(170) + j*3/sqrt(170);

               9/sqrt(170) + j*1/sqrt(170);

               13/sqrt(170) + j*5/sqrt(170);

               13/sqrt(170) + j*7/sqrt(170);

               15/sqrt(170) + j*5/sqrt(170);

               15/sqrt(170) + j*7/sqrt(170);

               13/sqrt(170) + j*3/sqrt(170);

               13/sqrt(170) + j*1/sqrt(170);

               15/sqrt(170) + j*3/sqrt(170);

               15/sqrt(170) + j*1/sqrt(170);

               11/sqrt(170) + j*11/sqrt(170);

               11/sqrt(170) + j*9/sqrt(170);

               9/sqrt(170) + j*11/sqrt(170);

               9/sqrt(170) + j*9/sqrt(170);

               11/sqrt(170) + j*13/sqrt(170);

               11/sqrt(170) + j*15/sqrt(170);

               9/sqrt(170) + j*13/sqrt(170);

               9/sqrt(170) + j*15/sqrt(170);

               13/sqrt(170) + j*11/sqrt(170);

               13/sqrt(170) + j*9/sqrt(170);

               15/sqrt(170) + j*11/sqrt(170);

               15/sqrt(170) + j*9/sqrt(170);

               13/sqrt(170) + j*13/sqrt(170);

               13/sqrt(170) + j*15/sqrt(170);

               15/sqrt(170) + j*13/sqrt(170);

               15/sqrt(170) + j*15/sqrt(170);

               

               5/sqrt(170) - j*5/sqrt(170);

               5/sqrt(170) - j*7/sqrt(170);

               7/sqrt(170) - j*5/sqrt(170);

               7/sqrt(170) - j*7/sqrt(170);

               5/sqrt(170) - j*3/sqrt(170);

               5/sqrt(170) - j*1/sqrt(170);

               7/sqrt(170) - j*3/sqrt(170);

               7/sqrt(170) - j*1/sqrt(170);

               3/sqrt(170) - j*5/sqrt(170);

               3/sqrt(170) - j*7/sqrt(170);

               1/sqrt(170) - j*5/sqrt(170);

               1/sqrt(170) - j*7/sqrt(170);

               3/sqrt(170) - j*3/sqrt(170);

               3/sqrt(170) - j*1/sqrt(170);

               1/sqrt(170) - j*3/sqrt(170);

               1/sqrt(170) - j*1/sqrt(170);

               5/sqrt(170) - j*11/sqrt(170);

               5/sqrt(170) - j*9/sqrt(170);

               7/sqrt(170) - j*11/sqrt(170);

               7/sqrt(170) - j*9/sqrt(170);

               5/sqrt(170) - j*13/sqrt(170);

               5/sqrt(170) - j*15/sqrt(170);

               7/sqrt(170) - j*13/sqrt(170);

               7/sqrt(170) - j*15/sqrt(170);

               3/sqrt(170) - j*11/sqrt(170);

               3/sqrt(170) - j*9/sqrt(170);

               1/sqrt(170) - j*11/sqrt(170);

               1/sqrt(170) - j*9/sqrt(170);

               3/sqrt(170) - j*13/sqrt(170);

               3/sqrt(170) - j*15/sqrt(170);

               1/sqrt(170) - j*13/sqrt(170);

               1/sqrt(170) - j*15/sqrt(170);

               11/sqrt(170) - j*5/sqrt(170);

               11/sqrt(170) - j*7/sqrt(170);

               9/sqrt(170) - j*5/sqrt(170);

               9/sqrt(170) - j*7/sqrt(170);

               11/sqrt(170) - j*3/sqrt(170);

               11/sqrt(170) - j*1/sqrt(170);

               9/sqrt(170) - j*3/sqrt(170);

               9/sqrt(170) - j*1/sqrt(170);

               13/sqrt(170) - j*5/sqrt(170);

               13/sqrt(170) - j*7/sqrt(170);

               15/sqrt(170) - j*5/sqrt(170);

               15/sqrt(170) - j*7/sqrt(170);

               13/sqrt(170) - j*3/sqrt(170);

               13/sqrt(170) - j*1/sqrt(170);

               15/sqrt(170) - j*3/sqrt(170);

               15/sqrt(170) - j*1/sqrt(170);

               11/sqrt(170) - j*11/sqrt(170);

               11/sqrt(170) - j*9/sqrt(170);

               9/sqrt(170) - j*11/sqrt(170);

               9/sqrt(170) - j*9/sqrt(170);

               11/sqrt(170) - j*13/sqrt(170);

               11/sqrt(170) - j*15/sqrt(170);

               9/sqrt(170) - j*13/sqrt(170);

               9/sqrt(170) - j*15/sqrt(170);

               13/sqrt(170) - j*11/sqrt(170);

               13/sqrt(170) - j*9/sqrt(170);

               15/sqrt(170) - j*11/sqrt(170);

               15/sqrt(170) - j*9/sqrt(170);

               13/sqrt(170) - j*13/sqrt(170);

               13/sqrt(170) - j*15/sqrt(170);

               15/sqrt(170) - j*13/sqrt(170);

               15/sqrt(170) - j*15/sqrt(170);

               

              -5/sqrt(170) + j*5/sqrt(170);

              -5/sqrt(170) + j*7/sqrt(170);

              -7/sqrt(170) + j*5/sqrt(170);

              -7/sqrt(170) + j*7/sqrt(170);

              -5/sqrt(170) + j*3/sqrt(170);

              -5/sqrt(170) + j*1/sqrt(170);

              -7/sqrt(170) + j*3/sqrt(170);

              -7/sqrt(170) + j*1/sqrt(170);

              -3/sqrt(170) + j*5/sqrt(170);

              -3/sqrt(170) + j*7/sqrt(170);

              -1/sqrt(170) + j*5/sqrt(170);

              -1/sqrt(170) + j*7/sqrt(170);

              -3/sqrt(170) + j*3/sqrt(170);

              -3/sqrt(170) + j*1/sqrt(170);

              -1/sqrt(170) + j*3/sqrt(170);

              -1/sqrt(170) + j*1/sqrt(170);

              -5/sqrt(170) + j*11/sqrt(170);

              -5/sqrt(170) + j*9/sqrt(170);

              -7/sqrt(170) + j*11/sqrt(170);

              -7/sqrt(170) + j*9/sqrt(170);

              -5/sqrt(170) + j*13/sqrt(170);

              -5/sqrt(170) + j*15/sqrt(170);

              -7/sqrt(170) + j*13/sqrt(170);

              -7/sqrt(170) + j*15/sqrt(170);

              -3/sqrt(170) + j*11/sqrt(170);

              -3/sqrt(170) + j*9/sqrt(170);

              -1/sqrt(170) + j*11/sqrt(170);

              -1/sqrt(170) + j*9/sqrt(170);

              -3/sqrt(170) + j*13/sqrt(170);

              -3/sqrt(170) + j*15/sqrt(170);

              -1/sqrt(170) + j*13/sqrt(170);

              -1/sqrt(170) + j*15/sqrt(170);

              -11/sqrt(170) + j*5/sqrt(170);

              -11/sqrt(170) + j*7/sqrt(170);

              -9/sqrt(170) + j*5/sqrt(170);

              -9/sqrt(170) + j*7/sqrt(170);

              -11/sqrt(170) + j*3/sqrt(170);

              -11/sqrt(170) + j*1/sqrt(170);

              -9/sqrt(170) + j*3/sqrt(170);

              -9/sqrt(170) + j*1/sqrt(170);

              -13/sqrt(170) + j*5/sqrt(170);

              -13/sqrt(170) + j*7/sqrt(170);

              -15/sqrt(170) + j*5/sqrt(170);

              -15/sqrt(170) + j*7/sqrt(170);

              -13/sqrt(170) + j*3/sqrt(170);

              -13/sqrt(170) + j*1/sqrt(170);

              -15/sqrt(170) + j*3/sqrt(170);

              -15/sqrt(170) + j*1/sqrt(170);

              -11/sqrt(170) + j*11/sqrt(170);

              -11/sqrt(170) + j*9/sqrt(170);

              -9/sqrt(170) + j*11/sqrt(170);

              -9/sqrt(170) + j*9/sqrt(170);

              -11/sqrt(170) + j*13/sqrt(170);

              -11/sqrt(170) + j*15/sqrt(170);

              -9/sqrt(170) + j*13/sqrt(170);

              -9/sqrt(170) + j*15/sqrt(170);

              -13/sqrt(170) + j*11/sqrt(170);

              -13/sqrt(170) + j*9/sqrt(170);

              -15/sqrt(170) + j*11/sqrt(170);

              -15/sqrt(170) + j*9/sqrt(170);

              -13/sqrt(170) + j*13/sqrt(170);

              -13/sqrt(170) + j*15/sqrt(170);

              -15/sqrt(170) + j*13/sqrt(170);

              -15/sqrt(170) + j*15/sqrt(170);

              

              -5/sqrt(170) - j*5/sqrt(170);

              -5/sqrt(170) - j*7/sqrt(170);

              -7/sqrt(170) - j*5/sqrt(170);

              -7/sqrt(170) - j*7/sqrt(170);

              -5/sqrt(170) - j*3/sqrt(170);

              -5/sqrt(170) - j*1/sqrt(170);

              -7/sqrt(170) - j*3/sqrt(170);

              -7/sqrt(170) - j*1/sqrt(170);

              -3/sqrt(170) - j*5/sqrt(170);

              -3/sqrt(170) - j*7/sqrt(170);

              -1/sqrt(170) - j*5/sqrt(170);

              -1/sqrt(170) - j*7/sqrt(170);

              -3/sqrt(170) - j*3/sqrt(170);

              -3/sqrt(170) - j*1/sqrt(170);

              -1/sqrt(170) - j*3/sqrt(170);

              -1/sqrt(170) - j*1/sqrt(170);

              -5/sqrt(170) - j*11/sqrt(170);

              -5/sqrt(170) - j*9/sqrt(170);

              -7/sqrt(170) - j*11/sqrt(170);

              -7/sqrt(170) - j*9/sqrt(170);

              -5/sqrt(170) - j*13/sqrt(170);

              -5/sqrt(170) - j*15/sqrt(170);

              -7/sqrt(170) - j*13/sqrt(170);

              -7/sqrt(170) - j*15/sqrt(170);

              -3/sqrt(170) - j*11/sqrt(170);

              -3/sqrt(170) - j*9/sqrt(170);

              -1/sqrt(170) - j*11/sqrt(170);

              -1/sqrt(170) - j*9/sqrt(170);

              -3/sqrt(170) - j*13/sqrt(170);

              -3/sqrt(170) - j*15/sqrt(170);

              -1/sqrt(170) - j*13/sqrt(170);

              -1/sqrt(170) - j*15/sqrt(170);

              -11/sqrt(170) - j*5/sqrt(170);

              -11/sqrt(170) - j*7/sqrt(170);

              -9/sqrt(170) - j*5/sqrt(170);

              -9/sqrt(170) - j*7/sqrt(170);

              -11/sqrt(170) - j*3/sqrt(170);

              -11/sqrt(170) - j*1/sqrt(170);

              -9/sqrt(170) - j*3/sqrt(170);

              -9/sqrt(170) - j*1/sqrt(170);

              -13/sqrt(170) - j*5/sqrt(170);

              -13/sqrt(170) - j*7/sqrt(170);

              -15/sqrt(170) - j*5/sqrt(170);

              -15/sqrt(170) - j*7/sqrt(170);

              -13/sqrt(170) - j*3/sqrt(170);

              -13/sqrt(170) - j*1/sqrt(170);

              -15/sqrt(170) - j*3/sqrt(170);

              -15/sqrt(170) - j*1/sqrt(170);

              -11/sqrt(170) - j*11/sqrt(170);

              -11/sqrt(170) - j*9/sqrt(170);

              -9/sqrt(170) - j*11/sqrt(170);

              -9/sqrt(170) - j*9/sqrt(170);

              -11/sqrt(170) - j*13/sqrt(170);

              -11/sqrt(170) - j*15/sqrt(170);

              -9/sqrt(170) - j*13/sqrt(170);

              -9/sqrt(170) - j*15/sqrt(170);

              -13/sqrt(170) - j*11/sqrt(170);

              -13/sqrt(170) - j*9/sqrt(170);

              -15/sqrt(170) - j*11/sqrt(170);

              -15/sqrt(170) - j*9/sqrt(170);

              -13/sqrt(170) - j*13/sqrt(170);

              -13/sqrt(170) - j*15/sqrt(170);

              -15/sqrt(170) - j*13/sqrt(170);

              -15/sqrt(170) - j*15/sqrt(170)];

               

     subplot(1,5,1);

     plot(real(BPSK),imag(BPSK),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

     axis([-1.5 1.5 -1.5 1.5]);

     

     subplot(1,5,2);

     plot(real(QPSK),imag(QPSK),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

     axis([-1.5 1.5 -1.5 1.5]);

     

     subplot(1,5,3);

     plot(real(QAM16),imag(QAM16),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

     axis([-1.5 1.5 -1.5 1.5]);

     

     subplot(1,5,4);

     plot(real(QAM64),imag(QAM64),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

     axis([-1.5 1.5 -1.5 1.5]);

     

     subplot(1,5,5);

     plot(real(QAM256),imag(QAM256),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

     axis([-1.5 1.5 -1.5 1.5]);

 

 

< List 2 >

 

    clear all;

     

    BPSK = [1/sqrt(2) + j*1/sqrt(2);

            -1/sqrt(2) - j*1/sqrt(2)];

        

    QPSK = [1/sqrt(2) + j*1/sqrt(2);

            1/sqrt(2) - j*1/sqrt(2);

            -1/sqrt(2) + j*1/sqrt(2);

            -1/sqrt(2) - j*1/sqrt(2)];

        

    QAM16 = [1/sqrt(10) + j*1/sqrt(10);

             1/sqrt(10) + j*3/sqrt(10);

             3/sqrt(10) + j*1/sqrt(10);

             3/sqrt(10) + j*3/sqrt(10);

             1/sqrt(10) - j*1/sqrt(10);

             1/sqrt(10) - j*3/sqrt(10);

             3/sqrt(10) - j*1/sqrt(10);

             3/sqrt(10) - j*3/sqrt(10);

             -1/sqrt(10) + j*1/sqrt(10);

             -1/sqrt(10) + j*3/sqrt(10);

             -3/sqrt(10) + j*1/sqrt(10);

             -3/sqrt(10) + j*3/sqrt(10);

             -1/sqrt(10) - j*1/sqrt(10);

             -1/sqrt(10) - j*3/sqrt(10);

             -3/sqrt(10) - j*1/sqrt(10);

             -3/sqrt(10) - j*3/sqrt(10)];

         

         QAM64 = [3/sqrt(42) + j*3/sqrt(42);

                  3/sqrt(42) + j*1/sqrt(42);

                  1/sqrt(42) + j*3/sqrt(42);

                  1/sqrt(42) + j*1/sqrt(42);

                  3/sqrt(42) + j*5/sqrt(42);

                  3/sqrt(42) + j*7/sqrt(42);

                  1/sqrt(42) + j*5/sqrt(42);

                  1/sqrt(42) + j*7/sqrt(42);

                  5/sqrt(42) + j*3/sqrt(42);

                  5/sqrt(42) + j*1/sqrt(42);

                  7/sqrt(42) + j*3/sqrt(42);

                  7/sqrt(42) + j*1/sqrt(42);

                  5/sqrt(42) + j*5/sqrt(42);

                  5/sqrt(42) + j*7/sqrt(42);

                  7/sqrt(42) + j*5/sqrt(42);

                  7/sqrt(42) + j*7/sqrt(42);

                  3/sqrt(42) - j*3/sqrt(42);

                  3/sqrt(42) - j*1/sqrt(42);

                  1/sqrt(42) - j*3/sqrt(42);

                  1/sqrt(42) - j*1/sqrt(42);

                  3/sqrt(42) - j*5/sqrt(42);

                  3/sqrt(42) - j*7/sqrt(42);

                  1/sqrt(42) - j*5/sqrt(42);

                  1/sqrt(42) - j*7/sqrt(42);

                  5/sqrt(42) - j*3/sqrt(42);

                  5/sqrt(42) - j*1/sqrt(42);

                  7/sqrt(42) - j*3/sqrt(42);

                  7/sqrt(42) - j*1/sqrt(42);

                  5/sqrt(42) - j*5/sqrt(42);

                  5/sqrt(42) - j*7/sqrt(42);

                  7/sqrt(42) - j*5/sqrt(42);

                  7/sqrt(42) - j*7/sqrt(42);

                  -3/sqrt(42) + j*3/sqrt(42);

                  -3/sqrt(42) + j*1/sqrt(42);

                  -1/sqrt(42) + j*3/sqrt(42);

                  -1/sqrt(42) + j*1/sqrt(42);

                  -3/sqrt(42) + j*5/sqrt(42);

                  -3/sqrt(42) + j*7/sqrt(42);

                  -1/sqrt(42) + j*5/sqrt(42);

                  -1/sqrt(42) + j*7/sqrt(42);

                  -5/sqrt(42) + j*3/sqrt(42);

                  -5/sqrt(42) + j*1/sqrt(42);

                  -7/sqrt(42) + j*3/sqrt(42);

                  -7/sqrt(42) + j*1/sqrt(42);

                  -5/sqrt(42) + j*5/sqrt(42);

                  -5/sqrt(42) + j*7/sqrt(42);

                  -7/sqrt(42) + j*5/sqrt(42);

                  -7/sqrt(42) + j*7/sqrt(42);

                  -3/sqrt(42) - j*3/sqrt(42);

                  -3/sqrt(42) - j*1/sqrt(42);

                  -1/sqrt(42) - j*3/sqrt(42);

                  -1/sqrt(42) - j*1/sqrt(42);

                  -3/sqrt(42) - j*5/sqrt(42);

                  -3/sqrt(42) - j*7/sqrt(42);

                  -1/sqrt(42) - j*5/sqrt(42);

                  -1/sqrt(42) - j*7/sqrt(42);

                  -5/sqrt(42) - j*3/sqrt(42);

                  -5/sqrt(42) - j*1/sqrt(42);

                  -7/sqrt(42) - j*3/sqrt(42);

                  -7/sqrt(42) - j*1/sqrt(42);

                  -5/sqrt(42) - j*5/sqrt(42);

                  -5/sqrt(42) - j*7/sqrt(42);

                  -7/sqrt(42) - j*5/sqrt(42);

                  -7/sqrt(42) - j*7/sqrt(42)];

              

         QAM256 = [5/sqrt(170) + j*5/sqrt(170);

                   5/sqrt(170) + j*7/sqrt(170);

                   7/sqrt(170) + j*5/sqrt(170);

                   7/sqrt(170) + j*7/sqrt(170);

                   5/sqrt(170) + j*3/sqrt(170);

                   5/sqrt(170) + j*1/sqrt(170);

                   7/sqrt(170) + j*3/sqrt(170);

                   7/sqrt(170) + j*1/sqrt(170);

                   3/sqrt(170) + j*5/sqrt(170);

                   3/sqrt(170) + j*7/sqrt(170);

                   1/sqrt(170) + j*5/sqrt(170);

                   1/sqrt(170) + j*7/sqrt(170);

                   3/sqrt(170) + j*3/sqrt(170);

                   3/sqrt(170) + j*1/sqrt(170);

                   1/sqrt(170) + j*3/sqrt(170);

                   1/sqrt(170) + j*1/sqrt(170);

                   5/sqrt(170) + j*11/sqrt(170);

                   5/sqrt(170) + j*9/sqrt(170);

                   7/sqrt(170) + j*11/sqrt(170);

                   7/sqrt(170) + j*9/sqrt(170);

                   5/sqrt(170) + j*13/sqrt(170);

                   5/sqrt(170) + j*15/sqrt(170);

                   7/sqrt(170) + j*13/sqrt(170);

                   7/sqrt(170) + j*15/sqrt(170);

                   3/sqrt(170) + j*11/sqrt(170);

                   3/sqrt(170) + j*9/sqrt(170);

                   1/sqrt(170) + j*11/sqrt(170);

                   1/sqrt(170) + j*9/sqrt(170);

                   3/sqrt(170) + j*13/sqrt(170);

                   3/sqrt(170) + j*15/sqrt(170);

                   1/sqrt(170) + j*13/sqrt(170);

                   1/sqrt(170) + j*15/sqrt(170);

                   11/sqrt(170) + j*5/sqrt(170);

                   11/sqrt(170) + j*7/sqrt(170);

                   9/sqrt(170) + j*5/sqrt(170);

                   9/sqrt(170) + j*7/sqrt(170);

                   11/sqrt(170) + j*3/sqrt(170);

                   11/sqrt(170) + j*1/sqrt(170);

                   9/sqrt(170) + j*3/sqrt(170);

                   9/sqrt(170) + j*1/sqrt(170);

                   13/sqrt(170) + j*5/sqrt(170);

                   13/sqrt(170) + j*7/sqrt(170);

                   15/sqrt(170) + j*5/sqrt(170);

                   15/sqrt(170) + j*7/sqrt(170);

                   13/sqrt(170) + j*3/sqrt(170);

                   13/sqrt(170) + j*1/sqrt(170);

                   15/sqrt(170) + j*3/sqrt(170);

                   15/sqrt(170) + j*1/sqrt(170);

                   11/sqrt(170) + j*11/sqrt(170);

                   11/sqrt(170) + j*9/sqrt(170);

                   9/sqrt(170) + j*11/sqrt(170);

                   9/sqrt(170) + j*9/sqrt(170);

                   11/sqrt(170) + j*13/sqrt(170);

                   11/sqrt(170) + j*15/sqrt(170);

                   9/sqrt(170) + j*13/sqrt(170);

                   9/sqrt(170) + j*15/sqrt(170);

                   13/sqrt(170) + j*11/sqrt(170);

                   13/sqrt(170) + j*9/sqrt(170);

                   15/sqrt(170) + j*11/sqrt(170);

                   15/sqrt(170) + j*9/sqrt(170);

                   13/sqrt(170) + j*13/sqrt(170);

                   13/sqrt(170) + j*15/sqrt(170);

                   15/sqrt(170) + j*13/sqrt(170);

                   15/sqrt(170) + j*15/sqrt(170);

                   

                   5/sqrt(170) - j*5/sqrt(170);

                   5/sqrt(170) - j*7/sqrt(170);

                   7/sqrt(170) - j*5/sqrt(170);

                   7/sqrt(170) - j*7/sqrt(170);

                   5/sqrt(170) - j*3/sqrt(170);

                   5/sqrt(170) - j*1/sqrt(170);

                   7/sqrt(170) - j*3/sqrt(170);

                   7/sqrt(170) - j*1/sqrt(170);

                   3/sqrt(170) - j*5/sqrt(170);

                   3/sqrt(170) - j*7/sqrt(170);

                   1/sqrt(170) - j*5/sqrt(170);

                   1/sqrt(170) - j*7/sqrt(170);

                   3/sqrt(170) - j*3/sqrt(170);

                   3/sqrt(170) - j*1/sqrt(170);

                   1/sqrt(170) - j*3/sqrt(170);

                   1/sqrt(170) - j*1/sqrt(170);

                   5/sqrt(170) - j*11/sqrt(170);

                   5/sqrt(170) - j*9/sqrt(170);

                   7/sqrt(170) - j*11/sqrt(170);

                   7/sqrt(170) - j*9/sqrt(170);

                   5/sqrt(170) - j*13/sqrt(170);

                   5/sqrt(170) - j*15/sqrt(170);

                   7/sqrt(170) - j*13/sqrt(170);

                   7/sqrt(170) - j*15/sqrt(170);

                   3/sqrt(170) - j*11/sqrt(170);

                   3/sqrt(170) - j*9/sqrt(170);

                   1/sqrt(170) - j*11/sqrt(170);

                   1/sqrt(170) - j*9/sqrt(170);

                   3/sqrt(170) - j*13/sqrt(170);

                   3/sqrt(170) - j*15/sqrt(170);

                   1/sqrt(170) - j*13/sqrt(170);

                   1/sqrt(170) - j*15/sqrt(170);

                   11/sqrt(170) - j*5/sqrt(170);

                   11/sqrt(170) - j*7/sqrt(170);

                   9/sqrt(170) - j*5/sqrt(170);

                   9/sqrt(170) - j*7/sqrt(170);

                   11/sqrt(170) - j*3/sqrt(170);

                   11/sqrt(170) - j*1/sqrt(170);

                   9/sqrt(170) - j*3/sqrt(170);

                   9/sqrt(170) - j*1/sqrt(170);

                   13/sqrt(170) - j*5/sqrt(170);

                   13/sqrt(170) - j*7/sqrt(170);

                   15/sqrt(170) - j*5/sqrt(170);

                   15/sqrt(170) - j*7/sqrt(170);

                   13/sqrt(170) - j*3/sqrt(170);

                   13/sqrt(170) - j*1/sqrt(170);

                   15/sqrt(170) - j*3/sqrt(170);

                   15/sqrt(170) - j*1/sqrt(170);

                   11/sqrt(170) - j*11/sqrt(170);

                   11/sqrt(170) - j*9/sqrt(170);

                   9/sqrt(170) - j*11/sqrt(170);

                   9/sqrt(170) - j*9/sqrt(170);

                   11/sqrt(170) - j*13/sqrt(170);

                   11/sqrt(170) - j*15/sqrt(170);

                   9/sqrt(170) - j*13/sqrt(170);

                   9/sqrt(170) - j*15/sqrt(170);

                   13/sqrt(170) - j*11/sqrt(170);

                   13/sqrt(170) - j*9/sqrt(170);

                   15/sqrt(170) - j*11/sqrt(170);

                   15/sqrt(170) - j*9/sqrt(170);

                   13/sqrt(170) - j*13/sqrt(170);

                   13/sqrt(170) - j*15/sqrt(170);

                   15/sqrt(170) - j*13/sqrt(170);

                   15/sqrt(170) - j*15/sqrt(170);

                   

                  -5/sqrt(170) + j*5/sqrt(170);

                  -5/sqrt(170) + j*7/sqrt(170);

                  -7/sqrt(170) + j*5/sqrt(170);

                  -7/sqrt(170) + j*7/sqrt(170);

                  -5/sqrt(170) + j*3/sqrt(170);

                  -5/sqrt(170) + j*1/sqrt(170);

                  -7/sqrt(170) + j*3/sqrt(170);

                  -7/sqrt(170) + j*1/sqrt(170);

                  -3/sqrt(170) + j*5/sqrt(170);

                  -3/sqrt(170) + j*7/sqrt(170);

                  -1/sqrt(170) + j*5/sqrt(170);

                  -1/sqrt(170) + j*7/sqrt(170);

                  -3/sqrt(170) + j*3/sqrt(170);

                  -3/sqrt(170) + j*1/sqrt(170);

                  -1/sqrt(170) + j*3/sqrt(170);

                  -1/sqrt(170) + j*1/sqrt(170);

                  -5/sqrt(170) + j*11/sqrt(170);

                  -5/sqrt(170) + j*9/sqrt(170);

                  -7/sqrt(170) + j*11/sqrt(170);

                  -7/sqrt(170) + j*9/sqrt(170);

                  -5/sqrt(170) + j*13/sqrt(170);

                  -5/sqrt(170) + j*15/sqrt(170);

                  -7/sqrt(170) + j*13/sqrt(170);

                  -7/sqrt(170) + j*15/sqrt(170);

                  -3/sqrt(170) + j*11/sqrt(170);

                  -3/sqrt(170) + j*9/sqrt(170);

                  -1/sqrt(170) + j*11/sqrt(170);

                  -1/sqrt(170) + j*9/sqrt(170);

                  -3/sqrt(170) + j*13/sqrt(170);

                  -3/sqrt(170) + j*15/sqrt(170);

                  -1/sqrt(170) + j*13/sqrt(170);

                  -1/sqrt(170) + j*15/sqrt(170);

                  -11/sqrt(170) + j*5/sqrt(170);

                  -11/sqrt(170) + j*7/sqrt(170);

                  -9/sqrt(170) + j*5/sqrt(170);

                  -9/sqrt(170) + j*7/sqrt(170);

                  -11/sqrt(170) + j*3/sqrt(170);

                  -11/sqrt(170) + j*1/sqrt(170);

                  -9/sqrt(170) + j*3/sqrt(170);

                  -9/sqrt(170) + j*1/sqrt(170);

                  -13/sqrt(170) + j*5/sqrt(170);

                  -13/sqrt(170) + j*7/sqrt(170);

                  -15/sqrt(170) + j*5/sqrt(170);

                  -15/sqrt(170) + j*7/sqrt(170);

                  -13/sqrt(170) + j*3/sqrt(170);

                  -13/sqrt(170) + j*1/sqrt(170);

                  -15/sqrt(170) + j*3/sqrt(170);

                  -15/sqrt(170) + j*1/sqrt(170);

                  -11/sqrt(170) + j*11/sqrt(170);

                  -11/sqrt(170) + j*9/sqrt(170);

                  -9/sqrt(170) + j*11/sqrt(170);

                  -9/sqrt(170) + j*9/sqrt(170);

                  -11/sqrt(170) + j*13/sqrt(170);

                  -11/sqrt(170) + j*15/sqrt(170);

                  -9/sqrt(170) + j*13/sqrt(170);

                  -9/sqrt(170) + j*15/sqrt(170);

                  -13/sqrt(170) + j*11/sqrt(170);

                  -13/sqrt(170) + j*9/sqrt(170);

                  -15/sqrt(170) + j*11/sqrt(170);

                  -15/sqrt(170) + j*9/sqrt(170);

                  -13/sqrt(170) + j*13/sqrt(170);

                  -13/sqrt(170) + j*15/sqrt(170);

                  -15/sqrt(170) + j*13/sqrt(170);

                  -15/sqrt(170) + j*15/sqrt(170);

                  

                  -5/sqrt(170) - j*5/sqrt(170);

                  -5/sqrt(170) - j*7/sqrt(170);

                  -7/sqrt(170) - j*5/sqrt(170);

                  -7/sqrt(170) - j*7/sqrt(170);

                  -5/sqrt(170) - j*3/sqrt(170);

                  -5/sqrt(170) - j*1/sqrt(170);

                  -7/sqrt(170) - j*3/sqrt(170);

                  -7/sqrt(170) - j*1/sqrt(170);

                  -3/sqrt(170) - j*5/sqrt(170);

                  -3/sqrt(170) - j*7/sqrt(170);

                  -1/sqrt(170) - j*5/sqrt(170);

                  -1/sqrt(170) - j*7/sqrt(170);

                  -3/sqrt(170) - j*3/sqrt(170);

                  -3/sqrt(170) - j*1/sqrt(170);

                  -1/sqrt(170) - j*3/sqrt(170);

                  -1/sqrt(170) - j*1/sqrt(170);

                  -5/sqrt(170) - j*11/sqrt(170);

                  -5/sqrt(170) - j*9/sqrt(170);

                  -7/sqrt(170) - j*11/sqrt(170);

                  -7/sqrt(170) - j*9/sqrt(170);

                  -5/sqrt(170) - j*13/sqrt(170);

                  -5/sqrt(170) - j*15/sqrt(170);

                  -7/sqrt(170) - j*13/sqrt(170);

                  -7/sqrt(170) - j*15/sqrt(170);

                  -3/sqrt(170) - j*11/sqrt(170);

                  -3/sqrt(170) - j*9/sqrt(170);

                  -1/sqrt(170) - j*11/sqrt(170);

                  -1/sqrt(170) - j*9/sqrt(170);

                  -3/sqrt(170) - j*13/sqrt(170);

                  -3/sqrt(170) - j*15/sqrt(170);

                  -1/sqrt(170) - j*13/sqrt(170);

                  -1/sqrt(170) - j*15/sqrt(170);

                  -11/sqrt(170) - j*5/sqrt(170);

                  -11/sqrt(170) - j*7/sqrt(170);

                  -9/sqrt(170) - j*5/sqrt(170);

                  -9/sqrt(170) - j*7/sqrt(170);

                  -11/sqrt(170) - j*3/sqrt(170);

                  -11/sqrt(170) - j*1/sqrt(170);

                  -9/sqrt(170) - j*3/sqrt(170);

                  -9/sqrt(170) - j*1/sqrt(170);

                  -13/sqrt(170) - j*5/sqrt(170);

                  -13/sqrt(170) - j*7/sqrt(170);

                  -15/sqrt(170) - j*5/sqrt(170);

                  -15/sqrt(170) - j*7/sqrt(170);

                  -13/sqrt(170) - j*3/sqrt(170);

                  -13/sqrt(170) - j*1/sqrt(170);

                  -15/sqrt(170) - j*3/sqrt(170);

                  -15/sqrt(170) - j*1/sqrt(170);

                  -11/sqrt(170) - j*11/sqrt(170);

                  -11/sqrt(170) - j*9/sqrt(170);

                  -9/sqrt(170) - j*11/sqrt(170);

                  -9/sqrt(170) - j*9/sqrt(170);

                  -11/sqrt(170) - j*13/sqrt(170);

                  -11/sqrt(170) - j*15/sqrt(170);

                  -9/sqrt(170) - j*13/sqrt(170);

                  -9/sqrt(170) - j*15/sqrt(170);

                  -13/sqrt(170) - j*11/sqrt(170);

                  -13/sqrt(170) - j*9/sqrt(170);

                  -15/sqrt(170) - j*11/sqrt(170);

                  -15/sqrt(170) - j*9/sqrt(170);

                  -13/sqrt(170) - j*13/sqrt(170);

                  -13/sqrt(170) - j*15/sqrt(170);

                  -15/sqrt(170) - j*13/sqrt(170);

                  -15/sqrt(170) - j*15/sqrt(170)];

         

        % Number of Symbols (Data Points)

        N = 10000;

     

        % Change this value and see how the result changes

        SNR_dB = 30;

     

        % Convert SNR from dB scale to Linear Scale

        SNR_lin = 10 .^ (SNR_dB/10);

        

        % Generate BPSK and AWGN

        sBPSK = [];

        

        for i = 1:N

           idx = randi([1 length(BPSK)]);

           sBPSK = [sBPSK BPSK(idx)];  

        end;    

        

          

        EavgBPSK = sum(abs(sBPSK) .^ 2)/N;

        awgnSigmaBPSK = sqrt(EavgBPSK/(2*SNR_lin));

        awgnBPSK = awgnSigmaBPSK*(randn(1,N)+j*randn(1,N));

        

        yBPSK = sBPSK + awgnBPSK;

        

        % Generate QPSK and AWGN

        sQPSK = [];

        

        for i = 1:N

           idx = randi([1 length(QPSK)]);

           sQPSK = [sQPSK QPSK(idx)];  

        end;    

        

          

        EavgQPSK = sum(abs(sQPSK) .^ 2)/N;

        awgnSigmaQPSK = sqrt(EavgQPSK/(2*SNR_lin));

        awgnQPSK = awgnSigmaQPSK*(randn(1,N)+j*randn(1,N));

        

        yQPSK = sQPSK + awgnQPSK;

     

        % Generate 16QAM and AWGN

        sQAM16 = [];

        

        for i = 1:N

           idx = randi([1 length(QAM16)]);

           sQAM16 = [sQAM16 QAM16(idx)];  

        end;    

        

          

        EavgQAM16 = sum(abs(sQAM16) .^ 2)/N;

        awgnSigmaQAM16 = sqrt(EavgQAM16/(2*SNR_lin));

        awgnQAM16 = awgnSigmaQAM16*(randn(1,N)+j*randn(1,N));

        

        yQAM16 = sQAM16 + awgnQAM16;

        

        % Generate 64QAM and AWGN

        sQAM64 = [];

        

        for i = 1:N

           idx = randi([1 length(QAM64)]);

           sQAM64 = [sQAM64 QAM64(idx)];  

        end;    

        

          

        EavgQAM64 = sum(abs(sQAM64) .^ 2)/N;

        awgnSigmaQAM64 = sqrt(EavgQAM64/(2*SNR_lin));

        awgnQAM64 = awgnSigmaQAM64*(randn(1,N)+j*randn(1,N));

        

        yQAM64 = sQAM64 + awgnQAM64;

        

        % Generate 256 QAM and AWGN

        sQAM256 = [];

        

        for i = 1:N

           idx = randi([1 length(QAM256)]);

           sQAM256 = [sQAM256 QAM256(idx)];  

        end;    

        

          

        EavgQAM256 = sum(abs(sQAM256) .^ 2)/N;

        awgnSigmaQAM256 = sqrt(EavgQAM256/(2*SNR_lin));

        awgnQAM256 = awgnSigmaQAM256*(randn(1,N)+j*randn(1,N));

        

        yQAM256 = sQAM256 + awgnQAM256;

        

         % Plot the constellation and noise for BPSK

         subplot(1,5,1);

         plot(real(yBPSK),imag(yBPSK),'ko','MarkerFaceColor',[0,0,0],'MarkerSize',1);

         axis([-1.5 1.5 -1.5 1.5]);

         hold on;

         plot(real(BPSK),imag(BPSK),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

         axis([-1.5 1.5 -1.5 1.5]);

         title(strcat('SNR=',num2str(SNR_dB),'dB'));

         hold off;

         

         % Plot the constellation and noise for QPSK

         subplot(1,5,2);

         plot(real(yQPSK),imag(yQPSK),'ko','MarkerFaceColor',[0,0,0],'MarkerSize',1);

         axis([-1.5 1.5 -1.5 1.5]);

         hold on;

         plot(real(QPSK),imag(QPSK),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

         axis([-1.5 1.5 -1.5 1.5]);

         title(strcat('SNR=',num2str(SNR_dB),'dB'));

         hold off;

         

         % Plot the constellation and noise for 16 QAM

         subplot(1,5,3);

         plot(real(yQAM16),imag(yQAM16),'ko','MarkerFaceColor',[0,0,0],'MarkerSize',1);

         axis([-1.5 1.5 -1.5 1.5]);

         hold on;

         plot(real(QAM16),imag(QAM16),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

         axis([-1.5 1.5 -1.5 1.5]);

         title(strcat('SNR=',num2str(SNR_dB),'dB'));

         hold off;

         

         % Plot the constellation and noise for 64 QAM

         subplot(1,5,4);

         plot(real(yQAM64),imag(yQAM64),'ko','MarkerFaceColor',[0,0,0],'MarkerSize',1);

         axis([-1.5 1.5 -1.5 1.5]);

         hold on;

         plot(real(QAM64),imag(QAM64),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

         axis([-1.5 1.5 -1.5 1.5]);

         title(strcat('SNR=',num2str(SNR_dB),'dB'));

         hold off;

         

         

         % Plot the constellation and noise for 256 QAM

         subplot(1,5,5);

         plot(real(yQAM256),imag(yQAM256),'ko','MarkerFaceColor',[0,0,0],'MarkerSize',1);

         axis([-1.5 1.5 -1.5 1.5]);

         hold on;

         plot(real(QAM256),imag(QAM256),'ro','MarkerFaceColor',[1,0,0],'MarkerSize',2);

         axis([-1.5 1.5 -1.5 1.5]);

         title(strcat('SNR=',num2str(SNR_dB),'dB'));

         hold off;