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 >.
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]);
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;
|
||