1 Star2 Stars3 Stars4 Stars5 Stars (18 votes, average: 4.17 out of 5)
Loading ... Loading ...
Print Print

Comparing BPSK, QPSK, 4PAM, 16QAM, 16PSK, 64QAM and 32PSK

by Krishna Sankar on July 8, 2008

I have written another article in DSPDesginLine.com. This article can be treated as the third post in the series aimed at understanding Shannon’s capacity equation.

For the first two posts in the series are:

1. Understanding Shannon’s capacity equation

2. Bounds on Communication based on Shannon’s capacity

The article summarizes the symbol error rate derivations in AWGN for modulation schemes like BPSK, QPSK, 4PAM, 16QAM, 16PSK, 64QAM and 32PSK.

The article in DSPDesignline.com details the following:

  • Based on the knowledge of bandwidth requirements for each type of modulation scheme, the capacity in bits/seconds/Hz is listed.
  • Using the knowledge that the symbol to noise ratio is times the bit to noise ratio , the symbol error rate vs curves are plotted.
  • Using symbol error rate versus plots, the required for achieving symbol error rate of is identified.
  • Upon having the capacity and requirement, the requirements for BPSK, QPSK, 4PAM, 16QAM, 16PSK, 64QAM and 32PSK are mapped on to the Shannon’s capacity vs Eb/No curve.
  • Assuming Gray coded modulation mapping, each symbol error causes one bit out of bits to be in error. So, the relation between symbol error and bit error is,.
  • Using this assumption, the Bit Error Rate (BER) for BPSK, QPSK, 4PAM, 16QAM, 16PSK, 64QAM and 32PSK are listed and the BER vs Eb/No curve plotted.

Hope this article serves as a nice overview of the various digital modulation schemes. Click here to read the full article in DSPDesignline.com

D id you like this article? Make sure that you do not miss a new article by subscribing to RSS feed OR subscribing to e-mail newsletter. Note: Subscribing via e-mail entitles you to download the free e-Book on BER of BPSK/QPSK/16QAM/16PSK in AWGN.

{ 112 comments… read them below or add one }

Bala March 14, 2013 at 10:14 am

Hi Krishna,
Can you give me a link to a MATLAB pgm which would help us estimate the IQ imbalance in the received OFDM signal.?


Avatar of Krishna Sankar Krishna Sankar March 15, 2013 at 5:23 am

@Bala: Sorry, do not have it.


Jeffrey Bridge August 28, 2012 at 4:35 am

Hi there,
This looks like a really good article in DSPDesignLine, except that now it redirects to eetimes.com and although the text of the article is there, all the image links seem to be broken. Without the images containing the formulas, the article is now useless. Is there any way you can fix it?


Avatar of Krishna Sankar Krishna Sankar August 28, 2012 at 5:48 am

@Jeffrey Bridge: Thanks for pointing that out. Let me ping eetimes.com to get the article fixed


Donny June 15, 2012 at 2:03 pm

Hi Krishna,

Given that the modulation type is either 16QAm or 16APSK, is there a formula to relate the SNR(Es/No) to the average constellation dispersion for each modulation type? How do we derive the relationship?



Avatar of Krishna Sankar Krishna Sankar June 26, 2012 at 6:03 am

@Donny: for a given Es/N0, i recall 16-QAM gives lower symbol error rate that 16-PSK.
One can find a relationship between them by computing the ratio of the distance between the constellation points in each case.
Please use the link below to get more information on the comparison of 16PSK vs 16QAM


ssstecz May 27, 2012 at 3:12 am

Hare Krishna ! :-)

Thanks a lot for all the information you posted here, it was very useful for me.


Junaid Khan May 9, 2012 at 1:14 am

hi can you please help me with matlab code for area spectral efficiency in OFDMA or LTE. thanks


Avatar of Krishna Sankar Krishna Sankar May 15, 2012 at 5:37 am
prashant maruti jadhav May 4, 2012 at 10:07 am

will anybody help me to implement SLM technique of PAPR reduction in matlab?

please do needfull if any one.


Adam Scott April 30, 2012 at 4:16 am

Hi Krishna,

Have you any work on 2×2 MIMO OFDM systems with rayleigh channel, for BPSK, QPSK, 8PSK and 16PSK?

Much appreciated


Avatar of Krishna Sankar Krishna Sankar May 2, 2012 at 5:02 am

@Adam Scott: There are articles on MIMO discussed at http://www.dsplog.com/tag/mimo
But most of there are discussing using BPSK modulation as example. Extending this to higher order modulation seems reasonably straightforward though


Ratheesh March 8, 2012 at 10:02 pm

I just need some help relating to data rate and bandwidth. I have a fixed bandwidth of transmission of 25KHz. So i want to calculate the data rates in different types of modulation to determine which one i can use. Can you help me with some formula with which i could calculate this.. Or any other better approach?
Thanks a lot


Avatar of Krishna Sankar Krishna Sankar March 12, 2012 at 4:53 am
akash singh February 6, 2012 at 7:54 pm

sir i have to prepare a model and project on the comparison between BPSK and QPSK. can you please help me in making the model..or you can provide any information regarding this topic.


Avatar of Krishna Sankar Krishna Sankar February 10, 2012 at 5:51 am
radhakrishna January 25, 2012 at 12:15 pm

sir, i am looking for QPSK Algorithms…
can you provide some details about few algorithms


Avatar of Krishna Sankar Krishna Sankar January 26, 2012 at 6:20 am

@radhakrishna: Hope the post on QPSK symbol error rate helps


lavanya January 20, 2012 at 10:10 am

i want the code for 8-qam.plese provide it to me


Avatar of Krishna Sankar Krishna Sankar January 23, 2012 at 5:16 am

@lavanya: Am hoping that you will be able to develop the 8QAM symbol error rate code using the 16QAM case as reference.


Shareef Ahmed December 24, 2011 at 7:10 pm

I need mapping and demapping function commands in MATLAB code for OFDMA and SC-FDMA. will you please help me.


Avatar of Krishna Sankar Krishna Sankar January 3, 2012 at 4:40 am

@Shareef: Is it modulation and demodulation mapping i.e. bits to constellation?


risky septiadi November 6, 2012 at 3:48 pm

please i need it too : you very kind man :)


Avatar of Krishna Sankar Krishna Sankar November 12, 2012 at 7:05 am

@risky: emailed you the instructions


abdullah October 6, 2011 at 9:09 am

I would like to share in this web bcz it very use full


abd el rahman hussein May 18, 2011 at 8:45 pm

hi krishna

do u have a matlab simulation for 64 QAM that first generates random binary bits then map them to symbols instead of generating symbols directly ??


i have this code but it generates the symbols directly
thx in advance


Avatar of Krishna Sankar Krishna Sankar May 23, 2011 at 2:38 am

@Abd: You can find a post on 16QAM BER with Grey coding
In that post, bits are generated and then converted to symbols.


racheal May 3, 2011 at 5:37 pm

Dear Krishna,

I just want to first thank you for your posts especially us students from un developed countries. Your website has taught us a lot and we do not feel inferior.

I was so bad at scripts but i picket interest and your work has greatly helped me. Thank you so much and May God bless you.

I want to kindly ask you for the matlab/ octave script for simulating BER vs SNR per bit (Eb/No) for various digital modulation schemes(Comparing BPSK, QPSK, 4PAM, 16QAM, 16PSK, 64QAM and 32PSK).

I was able to see your output from this website “http://www.eetimes.com/design/signal-processing-dsp/4017668/Modulation-roundup-error-rates-noise-and-capacity?pageNumber=2″ but i can not access the script.

I also want to ask you if you have examples of matlab/octave scripts for Sum capacity Vs SNR of MIMO or MU-MIMO with correlated and uncorrelated channel to help with some of them.

Otherwise am waiting to hear from you. Thank you

I can not say enough thank you for your posts on http://www.dsplog.com. If i were to give you a gift it would be ” to give you the ability to see yourself as others see you, then you could really see how special you are and how you have made a big difference in lives of many people”


Avatar of Krishna Sankar Krishna Sankar May 24, 2011 at 5:35 am

@rachael: Thanks for the kind words. Will add a post on sum capacity soon


maruf al mahmud sajib November 14, 2010 at 10:15 am

i face a problem of BER formula for math lab simulation which is

BER=.5 erfc[sqrt(snr)/2]

i need to analyze the performance of a short distance terrestrial OWC system as a function of wavelength.
i need a help that BER formula is right or wrong.


Avatar of Krishna Sankar Krishna Sankar November 14, 2010 at 10:18 am

@maruf: what is the modulation which is being used?


wep August 4, 2010 at 7:53 pm

hi krishna …..
hi sir …
Can you help me about tutorials from the m-QAM (m = 4,8,16,32,64),
about the theory, the calculation of bit error probability (BER) and the constellation of m-QAM..
thanks before……


Avatar of Krishna Sankar Krishna Sankar August 10, 2010 at 4:57 am
Stud June 15, 2010 at 3:30 am


can u give me the matlab code for the BER compersion of conventional BPSK, QPSK and 8PSK over an AWGN channel.



Avatar of Krishna Sankar Krishna Sankar June 21, 2010 at 5:48 am
azura April 13, 2010 at 11:53 am

hello sir ..
i’m doing my final project..
do you have matlab simulation for ber performance in ofdm system of various modulation technique in self cancellation in OFDM..
please help me..


Avatar of Krishna Sankar Krishna Sankar April 14, 2010 at 4:34 am

@azura: Some posts discussing OFDM can be found @ http://www.dsplog.com/tag/ofdm


Hassan March 30, 2010 at 8:06 pm

please can you tell me how should I assign 2 bits to symbols for 4-PAM . i.e how shall I program such that -3 has two bits , similarly -1, 1 and 3??If you have a code, kindly is it possible to provide it?


Avatar of Krishna Sankar Krishna Sankar March 31, 2010 at 5:03 am

@Hassan: You can choose your own assignment. Mostly people chose Gray coded mapping where adjacent constellation symbols differ by only one bit.


maria March 26, 2010 at 11:48 am

sir, pls do help wid our prjct..can u plsssssss send me the matlab alamouti STBC code for QPSK modulation in rayleigh fading channel?????


Avatar of Krishna Sankar Krishna Sankar March 28, 2010 at 1:41 pm

@maria: I have a written a post on STBC with BPSK at http://www.dsplog.com/2008/10/16/alamouti-stbc/
Also, there is a post on QPSK at http://www.dsplog.com/2007/11/06/symbol-error-rate-for-4-qam/
It should be reasonably easy for you to combine them


Md.Monirul Islam March 21, 2010 at 10:05 pm

Total probability of symbol error of the following Modulation technique:
(with matlab coding).

Please,reply me as soon as possible.


Avatar of Krishna Sankar Krishna Sankar March 28, 2010 at 1:53 pm

@Md.Monirul Islam: Didn’t this post address your query?


sh2010 March 1, 2010 at 4:43 pm

hi every one ineed your hellp in how to make symbol mapping function
or how to make bit mapping simmulation in mate lab.
with my thanksssss


Avatar of Krishna Sankar Krishna Sankar March 30, 2010 at 4:38 am

@sh2010: you want to map bits into constellation points? Most people use Gray coded mapping where adjacent constellation symbols differ by only one bit. The post http://www.dsplog.com/tag/gray/ maybe of help


batman February 23, 2010 at 6:43 am

hello,can i know what is actually relation between baud and bandwidth?and is that baud rate in QPSK=(bit rate/4)?or same with bandwidth like others such as ASK,BPSK,FSKn and how about QAM?is that same as QPSK or what?..please help me


Avatar of Krishna Sankar Krishna Sankar March 31, 2010 at 5:27 am

@batman: If the symbol duration is T, the minimum bandwidth required (with sinc shaped pulse shaping) is 1/T (from -1/2T to 1/2T). With higher order modulations, for the same data rate, we can have longer symbol durations there by reducing the bandwidth. Please lookinto the section Bandwidth requirements and Capacity in the article in dspdesignline.com http://www.dspdesignline.com/howto/208801783;jsessionid=BWJIYHNJDMGCPQE1GHOSKH4ATMY32JVN?pgno=2


shubrodeep February 10, 2010 at 12:06 pm

hi, i need some help please

i have simulated a qpsk tx and rx system. i got the BER curve perfectly. my next task was to have the qpsk signal pass thru an FIR filter. I did that as welland as expected the signal underwent distortion.

now i have been asked to the following task,

1. i should generate h(n), which is the impulse response. i have to generate 6 coefficients. i know to do that but i’m asked to generate them with variances of 1, 1/2, 1/3, 1/4, 1/5, 1/6.
i should also be normalised such that summation Hi square = 1.

2. i have to then convolute it with the input signal x(n).

3. then for every 500 samples i have to change the coefficients, should do this 30 times.

4. finally from the h(n) coefficients i should try and get bak the original signal.

coul some1 plz plz plz help with the following tasks listed above.. i would be greatful.

thank you.



Avatar of Krishna Sankar Krishna Sankar April 4, 2010 at 4:07 am
Amit January 29, 2010 at 11:56 am

Hello Sir,
I wanna a code for QAM modulation Technique. Hope u will do this today

thanking u in advance!!


Avatar of Krishna Sankar Krishna Sankar April 4, 2010 at 4:46 am

@Amit: Sorry, no


john January 12, 2010 at 3:46 pm

I am trying to simulate a rayleigh fading channel using the following code, i am not getting the desired resultls, where am i going wrong?

bit_error_rate=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
for q=1:no
%%% data generation
data_get =data_gen(rate_id);
%%% data randomization
%%convolution encoder
%%% Digital modulator SYMBOL MAPPER
%%% IFFT modulator

SNR=[1 2 3 5 7 9 10 12 15 17 20 22 25 27 30]; % specify SNR
for p=1:1:15
tau=[0 0.4e-6 0.9e-6];
pdb=[0 -5 -10];
%%% channel
%%% FFT demodulator
%%% Digital demodulator SYMBOL DEMEPPER
%% convolution decoder
%%% RSdecoder
data_rsdecoded=rsencodecod(data_decoded,rate_id,01); % removing added tail bits
%%% Data Derandomizer


chowdary December 30, 2009 at 8:02 pm

Hi krishna,

I came across this site very late.
I am looking for ofdm transmission through SUI,Cost207,exponential channel models, i need matlab code, plzzzz help me it require for my project i need to submit with in 2days, how can i know the performance of these channaels.plzzzz help me i am waiting for you reply.


Communications Engineer December 23, 2009 at 6:43 pm

Hello Krishna,

Can you tell me how I can use BER to plot capacity curves for OFDM and MC-CDMA?

Any hint


wap December 18, 2009 at 12:01 pm

hi sir…………..
hi krishna………
what is pi/4 qpsk???

are u have tutorial pi/4 qpsk??
can u explain defferent qpsk n pi/4 qpsk?

thanks before……………


Avatar of Krishna Sankar Krishna Sankar December 23, 2009 at 5:31 am

@wap: I have not discussed about pi/4 QPSK. You may find a brief wiki entry on it @


BEHZAD December 13, 2009 at 5:27 am

i want information about hybrid modulation “OFDM-OOK”
please if possible take refrence about this in your weblog


Avatar of Krishna Sankar Krishna Sankar December 22, 2009 at 5:33 am

@Behzad: Sorry, I have not discussed about OFDM-OOK.


shadat December 6, 2009 at 3:17 pm

i hope you are fine.please could you give me theoretical equaion of Bit Error Rate for convolutioanly coded BPSK,QOSk,16QAM,64 QAM and simulation of Adaptive modulation of BPSK,QPSK,16QAM,64QAM?


Avatar of Krishna Sankar Krishna Sankar December 7, 2009 at 5:29 am

@shadat: For BPSK with convolutional coding with hard/soft Viterbi, please refer to


Student November 3, 2009 at 11:09 pm

Why did you delete my comment?


Avatar of Krishna Sankar Krishna Sankar November 8, 2009 at 8:49 am

@Student: :) The comments are moderated. Hence they take ‘time to appear’


Student November 3, 2009 at 9:03 pm


in my lecture I learned that the relation between S/N and Eb/N0 is:
S/N = Eb/N0 * m

m: Number of bits/Symbol

Now I found the formula for the relation between Es/N0 and Eb/N0:
Es/N0 = Eb/N0 * m

because there are m bits/Symbol.

That would mean that
S/N = Es/N0.

In another pdf I found:
C/N = S/N = Eb/N0 * Rb/B
Es/N0 = Eb/N0 * Rb/B
Es = Eb * Rb/B
m * Eb = Eb * Rb/B
m = Rb/B

that makes sense for me.

But: In all books, B = B_baseband = f3dB of the lowpass in baseband. In my lecture, B is B_RF = 2 * B_baseband.

I need clearly the relation between S/N and Eb/N0 to calculate S/N_min for a 802.11a receiver with the given PER_max = 10% (=> BER= 1,32E-5).

Can someone please confirm my calculations or show me the errors?
Thank you very much!



Avatar of Krishna Sankar Krishna Sankar November 8, 2009 at 8:48 am

@Student: Sorry, I got confused reading through the comment. However, you may want to review the SNR definition used in the post
Good luck


EGRUE NNAMDI October 30, 2009 at 5:33 pm

Hi Krishna

Compliments of the season, actually i have made a request to you last time and you granted the request by given me the link to which my concerns where addressed. Sincerelly speeking all your your work are very lovely, and very educative, infact i would like to work with people like you, because you have been very helpful. I want to “develop a model in my dissertation for variable noise channel and simulate results for bit error rate (BER)”i will need your assisitance on how i can do that. then below are some of the terms you have used in your simulations, pls i will need an explanation for each one of them, what they mean. Am very gratefull.

ipBit =

ipMod =

xF =

xt =

nt =

yt =

yF =

yMod =

ipModHat =

ipBitHat =

Concatenating =

Thanks Very much



Avatar of Krishna Sankar Krishna Sankar November 8, 2009 at 8:26 am

@EGRUE: Thanks for the comment. I think that the code is self explanatory. You can take a shot at explaining each. I will correct them as needed.


Selvi Rajan October 13, 2009 at 12:25 pm

Sir, Iam working on OFDM simulation for Optical domain. I want to know the parpameter Calculation for OFDM, i.e Frequency Offset calculation , phase noise error , Derving different parameter from the IEEE standards


Avatar of Krishna Sankar Krishna Sankar October 15, 2009 at 5:24 am

@Selvi Rajan: I have discussed some aspects pertaining to OFDM @ http://www.dsplog.com/tag/ofdm/
Hope this helps.


alex October 11, 2009 at 8:06 pm

Hi,Krishna Sankar;
How are you!I hope you are doing fine and in good health.
I write a code for phase noise simulation in Butter ,cheby1,cheby2,and ellip fillter.But the programe run also error.Please give me help!Thanks a lot.

[Bb,Ab] = butter(4,0.5); % order 4, cutoff at 0.5 * pi

[Bc1,Ac1] = cheby1(4,1,0.5); % 1 dB passband ripple

[Bc2,Ac2] = cheby2(4,20,0.5); % 20 dB stopband attenuation

[Be,Ae] = ellip(4,1,20,0.5); % like cheby1 + cheby2

figure(1); plot(w,abs([Hb,Hc1,Hc2,He])); grid(‘on’);
xlabel(‘Frequency (rad/sample)’); ylabel(‘Gain’);

figure(2); plot(w,[Db,Dc1,Dc2,De]); grid(‘on’);
xlabel(‘Frequency (rad/sample)’); ylabel(‘Delay (samples)’);


Avatar of Krishna Sankar Krishna Sankar October 12, 2009 at 5:42 am

@alex: I do not have the function grpdelay() with me. What is the error which you are observing?


invizi October 9, 2009 at 2:03 pm

Hi krishna!
I hope you are doing fine and in good health.
I am working on an OFDMA system. I want to write equation for channel capacity for each user. I have the equations for the ICI but I dont know how to write the capacity equations…
C(k) = Summation [ log2(1+SNR(v))] in bits/OFDM-Sym.
where k = user index
v = subcarrier allocated to a user
I know this equation which is the theoretical channel capacity of each user. But I want to write the actual channel capacity. As I said I have the ICI equations …. kindly help how to proceed.


Avatar of Krishna Sankar Krishna Sankar October 12, 2009 at 5:38 am

@invizi: You can find the theoretical capacity from Shannon’s bounds, no?


W.Y September 3, 2009 at 8:26 am


I was wondering how I can implement the channel capacity of BPSK, using by Matlab???


Avatar of Krishna Sankar Krishna Sankar September 8, 2009 at 5:49 am

@W.Y: For the post on BER for BPSK modulation, we know the Eb/No required for achieving an arbitrarily low BER of 10^-5.
Further, since we know the bandwidth required by BPSK, we know the capacity in bits/second/Hz is 1.
Knowing both these values, we can plot where BPSK lies in Shanon’s Eb/No vs capacity curve.
Please refer to the following posts:
1) http://www.dspdesignline.com/howto/208801783;jsessionid=GBNINTPPYCUNFQE1GHRSKH4ATMY32JVN?pgno=2
2) http://www.dsplog.com/2008/06/18/bounds-on-communication-shannon-capacity/

Hope this helps.


Ranjan September 2, 2009 at 3:49 pm

I got prob of error formulas for QPSK as follows,
1) From std result: Pe=erfc(sqrt(Es/2N0))
2)Pe= erfc(sqrt (1.5*snr/M-1))
I am not able to relate all thes three.
Can you help me.


Avatar of Krishna Sankar Krishna Sankar September 8, 2009 at 5:21 am

@Ranjan: Let me try:
For QPSK, M = 4, so erfc(sqrt (1.5*snr/3)) = erfc(sqrt (snr/2)) = erfc(sqrt(Es/2N0)). So (1) and (2) are the same.
Since Q(x)=0.5*erfc(x/sqrt(2)), dmin = sqrt(2); then 4Q(dmin/2*sigma) = 2erfc(1/(sqrt(2)*sigma) = 2erfc(sqrt(1/(2*sigma^2))).
If we assume that variance of signal is 1, and the variance of noise = sigma^2, then 1/sigma^2 = Es/N0 = SNR

The function (3) seems close to (1), (2) except for the scaling of 2. Are you sure that QPSK error rate is 4Q(dmin/2*sigma) and not 2Q(dmin/2*sigma)?

Does this help?


kiki September 1, 2009 at 7:35 pm

hello all. i found a code which modulates QPSK but i couldn’t demodulate it back . please help. here is the code
clear all
b= sign(randn(1,N));
if c ~= 0
b=[b 1];
qcar=[];icar=[]; %initialize in-phase and quadrature carriers
ic=[];qc=[]; %initialize in-phase and quadrature components;
for n=1:2:len
if b(n)==-1 & b(n+1)==-1;
elseif b(n)==-1 & b(n+1)==1;
elseif b(n)==1 & b(n+1)==-1;
elseif b(n)==1 & b(n+1)==1;
ic=[ic temp];
qc=[qc temp1];
icar=[icar i];
qcar=[qcar q];


Avatar of Krishna Sankar Krishna Sankar September 7, 2009 at 5:39 am
Girish K. July 27, 2009 at 4:18 pm

sir i am working on hiperlan/2 using BPSK,QPSK and 16QAM modulation technique and ofdm multiplexing so plz help me to solve the prob for delay and Rician and Rayleigh channel


Avatar of Krishna Sankar Krishna Sankar July 28, 2009 at 4:36 am

@Girish: Can you please provide more details about the problems which you are facing.


Jasdeep July 23, 2009 at 1:39 am


i need information or matlab code for filter to reduce or to compensate fading.
I need to put this code for nakagami channel……



Avatar of Krishna Sankar Krishna Sankar July 24, 2009 at 4:13 am

@Jasdeep: I believe you are looking for a channel equalization technique. I have not discussed channel equalization in a multipath channel (resulting in ISI) for single carrier system, however you may find articles on flat fading Rayleigh channel @ http://www.dsplog.com/tag/rayleigh/


simon July 8, 2009 at 8:33 pm


I wonder if you know anything about BER for OOK.
either the figure or the theoretical function is enough for me.



Avatar of Krishna Sankar Krishna Sankar July 15, 2009 at 4:53 am

@simon: Given that OOK is orthogonal signaling (and not anti-podal signaling as BPSK), I would guess that OOK keying would have a BER which is 3dB poorer than the BER for BPSK. The BER for BPSK is discussed in the post

Hope this helps.


JAFAR July 6, 2009 at 9:28 pm

I need to BER CURVED versuse Eb/N0 for qpsk modulation up to 1e-6.


Avatar of Krishna Sankar Krishna Sankar July 15, 2009 at 4:40 am

@Jafar: There is an article discussing symbol error rate for QPSK.
You might also want to look @
Hope this helps.


alger May 24, 2009 at 3:03 am

please, comment faire pour ploter la constullation 16-qam dans matlab avec des équations mathématique du signal de sortie de modulateur.


Avatar of Krishna Sankar Krishna Sankar May 31, 2009 at 8:12 pm


Just a quick Matlab code snippet to get you going:

N = 100;
alpha16qam = [-3 -1 1 3]; % 16-QAM alphabets
ip = randsrc(1,N,alpha16qam) + j*randsrc(1,N,alpha16qam);

You may also look @ http://www.dsplog.com/2007/12/09/symbol-error-rate-for-16-qam/


Abi May 18, 2009 at 11:59 pm

Hi all,

please, how can we plot Shannon’s curve against Eb/No for various rates ?? I mean simlate them ??

Many thanks


Avatar of Krishna Sankar Krishna Sankar May 20, 2009 at 5:44 am

@Abi: Maybe the figures in the post
might be of help.


Adeela April 21, 2009 at 7:11 pm


kindly send me the complete derivation expression for the probability of a bit error of 4-QAM in terms of Eb n No

also the gray maping constellation of 4 QAM



Avatar of Krishna Sankar Krishna Sankar April 30, 2009 at 5:01 am

@Adeela: You may refer to the posts
http://www.dsplog.com/2007/11/06/symbol-error-rate-for-4-qam/ for discussion on Symbol Error rate (Ps) versus symbol to noise ratio (Es/N0).
To convert to Pb versus Eb/N0, please make the following assumptions:
Since each constellation symbol carriers two bits, Eb/N0 = 1/2*Es/N0
Further if we assume Gray coded constellation, each symbol error typicallly causes 1 out of 2 bits to be in error
Pb ~= Ps/2.

Hope this helps.


haleh December 23, 2009 at 1:48 pm

Hi Krishna,
you mentioned Pb ~= Ps/k …is it versus Eb/No or Es/No?


NOOR April 19, 2009 at 8:46 am

hi cold you please help me how can i get the code for this
The objective here is to compare VBLAST and Alamouti STBC in the context of MIMO-OFDM operating over frequency-selective Rayleigh fading channels. Consider a 2×2 system with N=64 carriers and a cyclic prefix long enough to avoid interblock interference. QPSK is used in STBC and BPSK is used in V-BLAST in order to have the same spectral efficiency. The discrete-time channels are assumed to be mutually uncorrelated and have L taps each. The taps are uncorrelated and obey an exponential power delay profile, i.e. E{|hk|2} = C.exp(- k) where C is a constant; take =0.2. It is assumed that the channel does not vary over two OFDM symbols. Assuming perfect knowledge of the channels at the receiver, provide simulations results depicting the average BERs for the two systems versus the average SNR in the cases where L=1, L=4, L=8, and L=16. Comment on the obtained results.
as soon as you can


Avatar of Krishna Sankar Krishna Sankar April 25, 2009 at 7:09 am

@NOOR: The following three posts might provide you the backgroud material to solve this problem:
(a) Alamouti STBC
(b) MIMO with Zero Forcing Equalizer
http://www.dsplog.com/2008/10/24/mimo-zero-forcing/ and
(c) BER for BPSK in OFDM with a 10 tap Rayleigh channel

Good luck.


NOOR April 19, 2009 at 8:41 am

1-Why did we map the uniform random integers onto the complex symbols in 64 QAM simulations?
2-Why does increased transmitted power decrease the error rate of the system ?

3-How does this equation D(r^t,sm)=abs(r^t-sm)^2 become optimum detector ?


Avatar of Krishna Sankar Krishna Sankar April 21, 2009 at 5:44 am

@NOOR: My replies:
1. The transmit data might be coming from some higher layer, which we assume to be random. So we use rand() function to define random bits, group them and assign to constellation points.
2. The effect of noise becomes smaller as we increase the transmit power
3. I believe you wrote the equation of Maximum likelihood, correct?


Melinda March 19, 2009 at 4:30 pm


QPSK has – 4 constellation points; 16 QAM -16 constellation points; 64 – 64 constellation points.

16QAM vs QPSK -> Now with the 16 possible points in the constellation diagram we have 16 possible symbols. For this 16 symbols we need 4 bits for coding . Compared to the QPSK modulation now we have doubled the transfer rate when using the same symbol clock.But compared to the QPSK, points are closer to each other and so the allowed noise circle radius is decreased. Noise can be interpreted as a vector which turns around the points of the constellation diagram producing a circle with a noise amplitude dependend radius. If we have normalized constellation (i.e. max distance is 1 – i.e. distance between two outer edges of circle of outer constellation points), then:
required distance QAM16 -> 1/(SQRT(QAM res.)) = 1/SQRT(16) = 0.25
required distance QPSK -> 1/(SQRT(QPSK res.)) = 1/SQRT(4) = 0.5
So we get a ratio of QPSK/QAM distance required to get no overlap of the points of: 20 * log(o.5/0.25) = 6dB.
So to have the same S/N ratio with the same noise level the signal for 16QAM has to be 6 dB stronger than QPSK. The same case is between 64QAM and 16 QAM(6db difference), 256QAM and 64QAM(6db difference) ….
We see that with each bit we add to the symbol rate we need a 3 dB better S/N of the received signal. So we see the tradeoff we have to do between the increasing transfer rate and the required S/N ratio.
Of course another way to increase the transfer rate is a higher symbol clock with the same symbol width.
(PS All this I found in AN97047.pdf http://www.nxp.com/acrobat_download/applicationnotes/AN97047_1.pdf)

But, I saw also formula(in MATLAB help) Es/No = Eb/No + 10log10(k); where k is the number of information bits per symbol.
By this formula we get:
QPSK: Es/No = Eb/No + 10log10(2)=Eb/No + 3.0103;
16QAM: Es/No = Eb/No + 10log10(4)=Eb/No + 6.0206;
64QAM: Es/No = Eb/No + 10log10(6)=Eb/No + 7.7815;

For BER of 10e-5, we get for QPSK that required Eb/No is about 9.5 dB, for 16QAM is about 13dB, for 64QAM is about 17,5dB…(I get this by MATLAB bertool). So we now have:
QPSK: Es/No = Eb/No + 10log10(2)=9.5 + 3.0103 ~ 12.5 dB;
16QAM: Es/No = Eb/No + 10log10(4)=13 + 6.0206 ~ 20 dB;
64QAM: Es/No = Eb/No + 10log10(6)=17.5 + 7.7815 ~ 26.2 dB;

So as You see the difference between 12.5 and 20 is not 6dB, in case QPSK vs 16QAM!

(PS: I think that this is a very important line: “So to have the same S/N ratio with the same noise level the signal for 16QAM has to be 6 dB stronger than QPSK.” – in AN97047.pdf)

So what is correct? Is this the same thing I try to correlate or…
If so, why is that?

Thanks and best regards


Avatar of Krishna Sankar Krishna Sankar March 21, 2009 at 4:32 pm

@Melinda: For sure, that was a long comment. :)
If I may summarize, the jist of the questions is: Should the difference between QPSK and 16-QAM be 6dB (as claimed in NXP paper) OR around 7.5dB (as seen from Mathworks simulations).

To do the comparison, may I suggest using the average distance approach. The average distance between
constellation points in
(a) QPSK is 2/sqrt(2)
(b) 16-QAM is 2/sqrt(10)
For details on why the term 1/sqrt(2) and 1/sqrt(10) are present, please refer to the post on scaling factor in QAM

It is reasonable to guess that as average distance reduces, the error rate increases. Doing a relative comparison,
diff in dB = 20*log10((2/sqrt(2))/(2/sqrt(10) )) = 7dB. This means that, for achieving the same symbol error rate, 16-QAM requires 7dB more Es/No than QPSK.
And this what I observed, when I performed simulations comparing all modulation schemes. Click here for the article in dspdesignline.com.

Hope this helps.


Allyson March 16, 2009 at 8:11 am

Hi Krishna,

What is the exact formula for BER QPSK (Theoretical). I saw that you have SER for QPSK which i think differ from BER right?


Avatar of Krishna Sankar Krishna Sankar March 21, 2009 at 8:22 am

@Allyson: BER for QPSK is same as BER for BPSK for a given value of Eb/N0. You may look at the following article in dspdesignline.com for reference.


Ranjan December 16, 2008 at 2:20 pm

I am in seach of BER formula for QPSk OFDM.may I get some help from you.


Avatar of Krishna Sankar Krishna Sankar December 17, 2008 at 6:18 am

@Ranjan: BER for QPSK in OFDM in AWGN should be same as BER for QPSK in AWGN. I have written posts on BER for BPSK in OFDM in AWGN
URI: http://www.dsplog.com/2008/06/10/ofdm-bpsk-bit-error/
and one on BER for QPSK in AWGN

Hope this helps.


Avatar of Krishna Sankar Krishna Sankar November 25, 2008 at 6:09 am

@krishna kant: It is a bit difficult to comment based on your given observation. From the Chapter 8 of Digitial Communication Proakis, I can see that k=7 should have the lowest BER for a given Eb/No, then k = 5 and worst ber is for k=3.

Maybe you can have a look at the figures in the text book and compare your curves against the text book curves.

All the best.


krishna kant November 23, 2008 at 6:44 pm

sorry ,the errors had increased as k increased.so why is this


krishna kant November 23, 2008 at 6:43 pm

hello sir,i have a case where i encode a message with convolutional coder and puncture it , map it to 16 qam and in the receiver- demodulate it using hard decisions , depuncture and perform viterbi decoding. this was done with constraint lengths k=3,5,7 and corresponding generator polynomials (5,7) ; (23,35) and (171,133).i plotted the BER vs SNR curves (with SNR considered from 2 to 12).The performance of the configuration had improved as k increased. why is it so? plase reply sor


Avatar of Krishna Sankar Krishna Sankar November 9, 2008 at 6:52 pm

@lealem: I have not written posts for BER with 64QAM. However, I have written one on BER for 16QAM
URI: http://www.dsplog.com/2008/06/05/16qam-bit-error-gray-mapping/
I think you should be able to adapt the code to handle 64QAM case. Good luck.


sajjad June 8, 2009 at 2:42 am

hi krishna
i wana matlab code for adaptive modulation using BPSK,QPSK and QAM.also need the plot of spectral efficiency vs SNR for adaptive modulation.


Avatar of Krishna Sankar Krishna Sankar June 8, 2009 at 6:04 am

@sajjad: Though I do not have the code for adaptive modulation, I guess it should be reasonably easy for you to adaptively change from BPSK to QPSK to QAM as the Eb/N0 increases, based on a minimum BER constraint. You may look @ the post comparing BPSK, QPSK, M-PSK, M-QAM etc as reference

Hope this helps.


sara zaalik March 31, 2012 at 2:18 pm

hello Krishna, i want a matlab code that simulates the BER of 4×1 Extended Alamouti Space Time Block Coding (EASTBC), with ZF and ML recievers, the channel is rayleigh .. thanks alot and waiting for your reply.



Avatar of Krishna Sankar Krishna Sankar April 1, 2012 at 5:44 am

@sara: Sorry, I have not tried modeling EASTBC

lealem November 7, 2008 at 11:17 am

hello! Krishina how are you today? i would like you to ask a help concerning 64-QAM modulation technique. i was doing a matlab simulation for 64-QAM OFDM but i didn’t get the exact output, do you have a matlab script which is used to simulate performance(BER Vs SNR) of 64-QAM modulation technique. hope u will send it to me this afternoon.
Thank you inadvance


Cancel reply

Leave a Comment

Previous post:

Next post: