(7 votes, average: 3.29 out of 5)

# Symbol Error rate for QAM (16, 64, 256,.., M-QAM)

by on January 1, 2012

In May 2008, we derived the theoretical symbol error rate for a general M-QAM modulation (in  Embedded.comDSPDesignLine.com and dsplog.com) under Additive White Gaussian Noise. While re-reading that post, felt that the article is nice and warrants a re-run, using OFDM as the underlying physical layer. This post discuss the derivation of symbol error rate for a general M-QAM modulation. The companion Matlab script compares the theoretical and the simulated symbol error rate for 16QAM, 64QAM and 256QAM over OFDM in AWGN channel.

Enjoy and HAPPY NEW YEAR 2012 !!!

Quadrature Amplitude Modulation (QAM) schemes like 16-QAM, 64-QAM are used in typical wireless digital communications specifications like IEEE802.11aIEEE802.16d. In this post let us derive the equation for probability of symbol being in error for a general M-QAM constellation, given that the signal (symbol) to noise ratio is $\frac{E_s}{N_0}$ .

## The general M-QAM constellation

The number of points in the constellation is defined as, $M=2^b$ where $b$ is the number of bits in each constellation symbol. In this analysis, it is desirable to restrict $b$ to be an even number for the following reasons (Refer Sec 5.2.2 in [DIG-COMM-BARRY-LEE-MESSERSCHMITT]):

1. Half the bits are represented on the real axis and half the bits are represented on imaginary axis. The in-phase and quadrature signals are independent $b/2$ level Pulse Amplitude Modulation (PAM) signals. This simplifies the design of mapper.

2. For decoding, symbol decisions may be applied independently on the real and imaginary axis, simplifying the receiver implementation.

Note that the above square constellation is not the most optimal scheme for a given signal to noise ratio.

## Average energy of an M-QAM constellation

In a general M-QAM constellation where $M=2^b$ and $b$ the number of bits in each constellation is even, the alphabets used are:

$\alpha_{MQAM}=\left{\pm(2m-1)\pm(2m-1)j\right}$, where $m \in \left{1, \cdots,\frac{\sqrt{M}}{2}\right}$.

For example, considering a 64-QAM ($M=64$) constellation,

$m \in \left{1,\ 2,\ 3,\ 4\right}$ and the alphabets are

$\alpha_{64QAM}=\left{\pm7 \pm7j,\ \pm7 \pm5j,\ \pm7 \pm3j, \pm7 \pm1j,\\\pm5 \pm7j,\ \pm5 \pm5j,\ \pm5 \pm3j,\ \pm5 \pm1j,\ \\\pm3 \pm7j,\ \pm3 \pm5j,\ \pm3 \pm3j,\ \pm3 \pm1j, \\\pm1 \pm7j,\ \pm1 \pm5j,\ \pm1 \pm3j,\ \pm1 \pm1j\right}$.

For computing the average energy of the M-QAM constellation, let us proceed as follows:

(a) Find the sum of energy of the individual alphabets

$\begin{eqnarray}E__\alpha & =&\sum_{m=1}^{\frac{\sqrt{M}}{2}}\left|(2m-1)+j(2m-1)\right|^2\\&=&\frac{\sqrt{M}}{3}(M-1)\end{eqnarray}$

(b) Each alphabet is used $2\sqrt{M}$ times in the M-QAM constellation.

(c) So, to find the average energy from $M$ constellation symbols, divide the product of (a) and (b) by$M$.The average energy is,

$\begin{eqnarray}E_{MQAM} & = & \frac{2\sqrt{M}}{M}E_\alpha\\&=&\frac{2\sqrt{M}}{M}\frac{\sqrt{M}}{3}(M-1)\\&=&\frac{2}{3}(M-1)\end{eqnarray}$.

Plugging in the number for 64-QAM,
$E_{64QAM}=\frac{2}{3}(64-1)=42$.

Plugging in the number for 16-QAM,
$E_{16QAM}=\frac{2}{3}(16-1)=10$.

From the above explanations, it is reasonably intuitive to guess that the scaling factor of $\frac{1}{\sqrt{10}}$$\frac{1}{\sqrt{42}}$ which is seen along with 16-QAM, 64-QAM constellations respectively is for normalizing the average transmit power to unity.

## Finding the symbol error rate

For computing the symbol error rate for an M-QAM modulation, let us consider the 64-QAM constellation as shown in the figure below and extend it to the M-QAM case.

Figure: Constellation plot for 64-QAM modulation (without the scaling factor of $\frac{1}{\sqrt{42}}$)

As can be seen from the above figure, there are three types of constellation points in a general M-QAM constellation:

(a) Constellation points in the corner (red-square)
The number of constellation points in the corner in any M-QAM constellation is always 4, i.e

$N_{corner}=4$

(b) Constellation points in the inside (magneta-diamond)
The number of constellation points in the inside is,

$N_{inside}=(\sqrt{M}-2)(\sqrt{M}-2)$.
For example with M=64, there are 36 constellation points in the inside.

(c) Constellation points neither at the corner, nor at the center (blue-star) The number of constellation points of this category is,
$N_{\mbox{neither inside nor corner}}=4(\sqrt{M}-2)$.

For example with M=64, there are 24 constellation points in the inside.

## Additive White Gaussian Noise (AWGN) channel

$y=k\sqrt{E_s}s+n$, where

$E_s$ is the energy,
$k=\sqrt{\frac{1}{\frac{2}{3}(M-1)}}$ is the normalizing factor,

$s$ is the transmit symbol and
$n$ is the noise.

Assume that the additive noise $n$ follows the Gaussian probability distribution function,

$p(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{\frac{-(x-\mu)^2}{2\sigma^2}$ with

mean $\mu=0$ and

variance $\sigma^2 = \frac{N_0}{2}$.

Symbol in the inside $I=+1, Q=+1$ (magenta-diamond)

The conditional probability distribution function (PDF) of $y$given that the transmitted symbol is $\left{ +k\sqrt{E_s},+k\sqrt{E_s}\right}$ :

$p(y|inside)=\frac{1}{\sqrt{\pi N_0}}e^{\frac{-(y-k\sqrt{Es})^2}{N_0}}$.

As can be seen from the above figure, the symbol in the inside is decoded correctly only if real part of $y$ $(\Re y)$ lies inbetween 0 to 2 and the imaginary part of $y$ $(\Im y)$ lies inbetween 0 to 2. The probability of correct demodulation is,

$p(c|inside) = p\left(\Re y >0, \Re y\le 2k\sqrt{E_s} | +1\right)p\left(\Im y >0, \Im y\le 2k\sqrt{E_s} | +1\right)$.

The probability of the real component falling with in 0 to 2 can be found by integrating the probability distribution function of two parts:

(a) Find the probability that the real component lies from $2$ to $+\infty$.

(b) Find the probability that the real component lies from $-\infty$ to $0$.

(c) Given that the total probability is always 1, for finding the probability of the real component lies within $0$ to $2$, subtract the sum of (a) and (b) from 1.

$\begin{eqnarray}p\left(\Re y >0, \Re y\le 2k\sqrt{E_s} | +1\right)& =& 1-\left[\frac{1}{\sqrt{\pi N_0}}\int_{-\infty}^{0}e^{\frac{-(y-k\sqrt{Es})^2}{N_0}}dy + \frac{1}{\sqrt{\pi N_0}}\int_{2k\sqrt{E_s}}^{+\infty}e^{\frac{-(y-k\sqrt{Es})^2}{N_0}}dy\right]\\& = & 1-erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$

Note: The complementary error function, $erfc(x) = \frac{2}{\sqrt{\pi}}\int_x^\infty e^{-x^2}dx$.

Similarly,

$\begin{eqnarray}p\left(\Im y >0, \Im y\le 2k\sqrt{E_s} | +1\right)& =&1-erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

From the above equations,

$p(c|inside) = \left[1-erfc\left(\sqrt{\frac{E_s}{10N_o}}\right)\right]\left[1-erfc\left(\sqrt{\frac{E_s}{10N_o}}\right)\right]$.

The probability of the symbol decoded being in error is,

$\begin{eqnarray}p(e|inside) &=&1-\left[1-erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\right]^2\\& =& 2erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) - erfc^2\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

Symbol in the corner $I=+7, Q=+7$ (red-square)

The conditional probability distribution function (PDF) of $y$given that the transmitted symbol is $\left{ +7k\sqrt{E_s},+7k\sqrt{E_s}\right}$ :

$p(y|inside)=\frac{1}{\sqrt{\pi N_0}}e^{\frac{-(y-7k\sqrt{Es})^2}{N_0}}$.

As can be seen from the above figure, the symbol in the inside is decoded correctly only if real part of $y$ $(\Re y)$ lies from $6$ to $\infty$ and the imaginary part of $y$ $(\Im y)$ lies from $6$ to $\infty$.

$p(c|corner) = p\left(\Re y >6, \Re y\le \infty| +7\right)p\left(\Im y >0, \Im y\le \infty | +7\right)$.

For finding the probability that the real component lies from $6$ to $\infty$, one can integrate the probability distribution function of the received symbol.

$\begin{eqnarray}p\left(\Re y >6, \Re y\le \infty| +7\right)& =& \frac{1}{\sqrt{\pi N_0}}\int_{6k\sqrt{E_s}}^{+\infty}e^{\frac{-(y-7k\sqrt{Es})^2}{N_0}}dy \\& = & 1-\frac{1}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$

Similarly,

$\begin{eqnarray}p\left(\Im y >6, \Im y\le \infty| +7\right)& =& \frac{1}{\sqrt{\pi N_0}}\int_{6k\sqrt{E_s}}^{+\infty}e^{\frac{-(y-7k\sqrt{Es})^2}{N_0}}dy \\& = & 1-\frac{1}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

So, probability that the decoded symbol is correct given $I=+7, Q=+7$is transmitted is,

$\begin{eqnarray}p(c|corner) &=& \left[1-\frac{1}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) \right]\left[1-\frac{1}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) \right]\\&=&1-erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) + \frac{1}{4}erfc^2\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

Now, the probability of the symbol decoded being in error is,

$\begin{eqnarray}p(e|corner) &=&1-p(c|corner)\\& =& erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) - \frac{1}{4}erfc^2\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

Symbol neither at the corner nor inside $I=+7, Q=+1$ (blue-star)

As can be seen from the above figure, the symbol in the inside is decoded correctly only if real part of $y$ $(\Re y)$ lies from $6$ to $\infty$ and the imaginary part of $y$ $(\Im y)$ lies from 0 to 2.

$p(c|corner) = p\left(\Re y >6, \Re y\le \infty| +7\right)p\left(\Im y >0, \Im y\le \infty | +7\right)$.

For finding the probability that the real component lies from $6$ to $\infty$, one can integrate the probability distribution function of the received symbol.

$\begin{eqnarray}p\left(\Re y >6, \Re y\le \infty| +7\right)& =& \frac{1}{\sqrt{\pi N_0}}\int_{6k\sqrt{E_s}}^{+\infty}e^{\frac{-(y-7k\sqrt{Es})^2}{N_0}}dy \\& = & 1-\frac{1}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

As described for the symbol in the inside scenario, the probability of the imaginary component falling with in 0 to 2 can be found by integrating the probability distribution function of two parts:

(a) Find the probability that the imaginary component lies from $2$ to $+\infty$.

(b) Find the probability that the imaginary component lies from $-\infty$ to $0$.

(c) As the total probability is 1, for finding the probability of the imaginary component lies within $0$ to $2$, subtract the sum of (a) and (b) from 1.

$\begin{eqnarray}p\left(\Im y >0, \Im y\le 2k\sqrt{E_s} | +1\right)& =& 1-\left[\frac{1}{\sqrt{\pi N_0}}\int_{-\infty}^{0}e^{\frac{-(y-k\sqrt{Es})^2}{N_0}}dy + \frac{1}{\sqrt{\pi N_0}}\int_{2k\sqrt{E_s}}^{+\infty}e^{\frac{-(y-k\sqrt{Es})^2}{N_0}}dy\right]\\& = & 1-erfc\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$

So the probability that the symbol is decoded correctly is,

$\begin{eqnarray}p(c|\mbox{neither inside nor corner}) &=& \left[1-erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) \right]\left[1-\frac{1}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) \right]\\&=&1-\frac{3}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) + \frac{1}{2}erfc^2\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$

The probability of error is,

$\begin{eqnarray}p(e|\mbox{neither inside nor corner}) &=&1-p(c|\mbox{neither inside nor corner})\\& =& \frac{3}{2}erfc\left(k\sqrt{\frac{E_s}{N_0}} \right) - \frac{1}{2}erfc^2\left(k\sqrt{\frac{E_s}{N_0}} \right)\end{eqnarray}$.

Total symbol error probability

Given that we have computed the individual symbol error probability for each of the three types of constellation points, to find the joint symbol error rate we compute the average error i.e.

$P(e|MQAM) = \frac{N_{inside}p(e|inside) + \\ N_{corner}p(e|corner) + \\ N_{\mbox{neither inside nor corner}}p(e|\mbox{neither inside nor corner})}{M}$

Pluging in the equations,
$\Large \begin{array}{rrr}P(e|MQAM)& = & 2\left(1-\frac{1}{\sqrt{M}}\right)erfc\left(k\sqrt{\frac{E_s}{N_0}}\right)-\\ & & \left(1-\frac{2}{\sqrt{M}}+ \frac{1}{M}\right)erfc^2\left(k\sqrt{\frac{E_s}{N_0}}\right)\end{array}$.

## OFDM modulation

Let us use the OFDM system loosely based on IEEE 802.11a specifications.

 Parameter Value FFT size. nFFT 64 Number of used subcarriers. nDSC 52 FFT Sampling frequency 20MHz Subcarrier spacing 312.5kHz Used subcarrier index {-26 to -1, +1 to +26} Cylcic prefix duration, Tcp 0.8us Data symbol duration, Td 3.2us Total Symbol duration, Ts 4us

## Simulation model

Simple Matlab/Octave script for computing the symbol error rate for  16QAM/64QAM and 256QAM modulation scheme in additive white gaussian noise channel over OFDM.

## References

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.

anjali February 21, 2013 at 1:54 pm

sir plz help me..I need a code for SNR VS BER of different modulation scheme with code rate 1/2 and 3/4.how can i change the code rate.?

Krishna Sankar February 22, 2013 at 3:08 am

@anjali: which coding scheme are you using – convolutional coding?

anjali January 28, 2013 at 10:23 am

How can we change the code rate in BER vs SNR simulation?

Krishna Sankar February 1, 2013 at 5:33 am

@anjali: typically, one will have a header field indicating the rate of the transmission

Jeremiah December 21, 2012 at 6:36 am

Hi Krishna,

I am trying to simulate SNR of 16-QAM (under Rayleigh fading channel). Any advices on how should I work on as I faced difficulty to generate the matlab.

Regards,

Krishna Sankar December 25, 2012 at 5:45 am

@Jeremiah: That should be relatively easy to code up. The example with BPSK + Rayleigh channel might be of help.
http://www.dsplog.com/2008/08/10/ber-bpsk-rayleigh-channel/

thang December 13, 2012 at 6:59 am

Thanks Krishna Sankar.

riccardo September 29, 2012 at 7:29 pm

Hi,
could you please tell me if it possible and why when in a OFDM code with this parameters:
k = sqrt(1/10) scaling factor
5 tap long channel
zf and mmse 1 tap equalizer
EbN0dB = [0:36]
EsN0dB = EbN0dB + 10*log10(nDSC/nIFFT) + 10*log10(nIFFT/(nIFFT+CP))
using (16QAM)
The MMSE BER curve is actually higher than the ZF BER curve if I use 16 QAM, but when I use in the same program QPSK I get the normal result (MMSE better than ZF)???

I used all the scaling factor that i found in your posts on ofdm and 16QAM and I added to the received signal the noise as 10^(-EsN0dB(ii)/20)*n.
When I perform MMSE I use
C= (1./(conj(hF).*hF+10^(-EsN0dB(ii)/20))).*conj(hF);
y_mse = yF.*C;

The modulation and demodulation is done by
Mod = modem.qammod(‘M’, 16, ‘PhaseOffset’,0,’SymbolOrder’,'gray’,'InputType’,'bit’);
Dem = modem.qamdemod(Mod);
using modulate and demodulate command.

I tried to use one tap channel but I get the same result so I think is not becuse I should use some taps at the equalizer.What I mean is that with 16QAM in Ray channel can one tap MMSE equalizer be worse than one tap ZF or I miss some scaling factor in the equalization or in other parts????

Thanks,

R.

riccardo September 30, 2012 at 6:28 pm

To give you a better idea of what I get I attached the link below of the curves that i get when I use QPSK and 16QAM in OFDM with the same parameters (CP,nBits etc..). In QPSK case I get perfectly identical BER for ZF and MMSE.

http://www.4shared.com/photo/QgFiaXQX/untitled.html

Could it be because of MMSE have only one tap and if I d use 3 or 5 taps MMSE curve will be lower than ZF one??

Regards,

R.

Krishna Sankar October 5, 2012 at 5:16 am

@riccardo: Why is MMSE so poor for 16QAM case? Is the noise variance term in order?

Krishna Sankar October 5, 2012 at 5:39 am

@riccardo; Should we use scaling of 1/10 for the noise variance?
C= (1./(conj(hF).*hF+10^(-EsN0dB(ii)/10))).*conj(hF);

riccardo October 5, 2012 at 3:40 pm

I did it and it looks better but still ZF outperforms MMSE. Here is the ber.
http://www.4shared.com/photo/gA-Hzpzv/untitledu.html
However, I know I’m missing something stupid but I can’t figured it out…Would you mind having a further look to the whole program which work for QPSK but not for 16QAM? I send send an email and we can try to sort it out.

I’m doing a BER comparison between OFDMA and SCFDMA in SISO SIMO and MIMO scenarios, once I got them correctly if you like we can write a post in this blog so it would be helpfull for everyone
Let me know.

Regards,

R.

riccardo October 5, 2012 at 8:41 pm

I sent a email to you with the code.
Thanks.

Krishna Sankar October 6, 2012 at 6:43 am

@riccardo: Given the time constraints, debugging through the code is slightly difficult. Good luck

Mostafa September 19, 2012 at 9:22 am

Hello Sir ,

Can you please advise me , how can i modify this code to use QPSK modulation along with the QAM modulations. I am in desperate need for my project to observe different types of modulation schemes on OFDM system.

Thanks & best Regards

Krishna Sankar September 22, 2012 at 5:56 am

@Mostafa: Try putting M=4 in the simulations for QPSK.

houda September 2, 2012 at 8:53 pm

first of all thanks a lot for your efforts. I am new in matlab and I want to ask you about some instructions in your matlab code.
1- why have u used this instruction even u can use idft directly
xt = (nFFT/sqrt(nDSC))*ifft(fftshift(xF.’)).’;
2- what do u mean by this instruction
xF = [zeros(nOFDMsym,6) ipMod_norm(:,[1:nConstperOFDMsym/2]) zeros(nOFDMsym,1) ipMod_norm(:,[nConstperOFDMsym/2+1:nConstperOFDMsym]) zeros(nOFDMsym,5)] ;
3- I haven’t understand the addition of cyclic prefix
finnaly can u explain what represent all of this instructions in practice

Krishna Sankar September 4, 2012 at 5:03 am

@houda: My replies:
1/ the term (nFFT/sqrt(nDSC)) is for scaling the output power.
the term fftshift() is to provide the frequency domain information in the way ifft() likes.
please check the post on negative frequency
http://www.dsplog.com/2008/08/08/negative-frequency/
http://www.dsplog.com/2008/02/03/understanding-an-ofdm-transmission/

2/ This is forming the xF, a matrix of dimension [ number of ofdm symbols x number of subcarriers]
In this example, i recon the number of subcarriers is 64. And the index
[-32:-27] : 6 subcarriers are 0
[-26:-1] : 26 data subcarriers
0 : no information on dc subcarrier
[1:26] : 26 data subcarriers
[27:31] : 5 subcarriers are 0

3/ Cyclic prefix is added to provide a buffer zone for inter symbol interference from the previous symbol caused due to the multipath channel
http://www.dsplog.com/2008/02/17/cylcic-prefix-in-orthogonal-frequency-division-multiplexing/

houda September 9, 2012 at 8:32 pm

thanks a lot Krishna Sankar.

doojin June 6, 2012 at 11:52 am

I have simple queation!!
at OFDM, increasing FFT size , how about BER curve?? and why??

Krishna Sankar June 11, 2012 at 5:14 am

@doojin: For the same sampling frequency, increasing the fft size means that the subcarrier spacing is narrower resulting in a lower noise power. However we need to lower transmit power of each subcarrier by the same amount to keep the transmit power a constant. Hence, I reckon there is no Eb/N0 vs BER impact by increasing the number of subcarriers.

farshad May 19, 2012 at 5:39 pm

hello.thank you very much for matlab code 16-QAM.
I want this matlab code for 64-QAM but by change 16 to 64 I cant simulation.help me

Best Regards.

sachin May 7, 2012 at 1:21 am

Hello Krishna,
i am sachin. i need some help from you.
i need matlab code for ostbc over nakagami-m channel or BER for the nakagami-m channel.waiting for your feedback and your help.

Krishna Sankar May 8, 2012 at 5:36 am

@sachin: I do not have topics on the articles you described above. But can point you to http://www.dsplog.com/tag/ofdm

imran April 25, 2012 at 9:51 pm

Hello Krishna,
i am imran. i need some help from you. i need a theoretical formula of Bit Error Rate or Symbol error rate for 16-APSK (amplitude phase shift keying). i got the simulation result . but i dont know the exact theoretical formula or equation regarding of this problem.
I saw some of your updated formula for 16-QAM or 16- PSK. i want the like this formula where i can compare my theoretical and simulation constellation plot.

Krishna Sankar April 26, 2012 at 5:53 am

@imran: sorry, i have not discussed 16APSK schemes in the posts

imran April 28, 2012 at 2:52 pm

i would like to request you, please give me some suggestion where i can get this information. Honestly i need desperately this 16-apsk theoretical formula for BER or SER.

ofir michael April 24, 2012 at 11:56 am

you should write about Es : Es_max, Es_min, Es_avrage.
Do you know the formula for OFDM based on 64QAM modulation?

Krishna Sankar April 26, 2012 at 5:47 am

@ofir: Hmmm… the underlying equation for 64QAM will remain the same even in OFDM case. The presence of cyclic prefix, guard subcarriers will mean that the noise scaling needs to be adjusted appropriately.
http://www.dsplog.com/2012/01/01/symbol-error-rate-16qam-64qam-256qam/

ofir michael April 26, 2012 at 12:08 pm

No it will not. In OFDM there are 48 subcarriers of 64qam tansmitted. It changes the SER. The more subcarries you add the bigger the bandwidth becomes, the longer Tsymbol is.

Krishna Sankar April 27, 2012 at 5:43 am

@ofir: Well, the slope of the symbol error rate does not change. Yes, it does get shifted in the x-axis based on the cyclic prefix and the number of subcarriers. I have discussed about a simple BPSK case at http://www.dsplog.com/2008/06/10/ofdm-bpsk-bit-error/
Es/N0 dB = Eb/N0 dB + 10*log10(ndsc/nfft) + 10*log10(td/(td+tcp))

sachin April 20, 2012 at 11:45 pm

any one can give the matlab code for ostbc over nakagami-m channel or BER for the nakagami-m channel

ofir michael April 17, 2012 at 3:27 pm

you have a mistake on “K”.
it does not equal to SQRT(1/(2/3*M-1)).
it’s equal to SQRT(1/(2/3*(M-1)))

Krishna Sankar April 18, 2012 at 5:27 am

@ofir: Hmm… it is SQRT(1/(2/3*(M-1))). Where do you see the error?

ofir michael April 23, 2012 at 10:39 am

k=SQRT(1/(2/3*M-1).

I calculated it and it’s equal to: k=SQRT(1/(2/3*(M-1))).

Krishna Sankar April 23, 2012 at 7:45 pm

@ofir: M-1 is in the numerator

ofir michael April 24, 2012 at 2:38 am

No it is not.
under “Additive White Gaussian Noise (AWGN) channel ”
look at “k”
__________
/ 1
k= /___________
/ _2_ * M-1
\/ 3

when it should be:

__________
/ 1
k= /___________
/ _2_ * (M-1)
\/ 3

reza March 25, 2012 at 10:47 am

I can not run for this project, there is an error in –>

“??? Error using ==> semilogy
Conversion to double from cell is not possible.

Error in ==> compute_symbol_error_rate_qam_ofdm_awgn at 27
semilogy(EsN0dB,theorySer(jj,:),color_vec1(jj));”

Krishna Sankar March 26, 2012 at 5:31 am

@reza: try replacing color_vec1(jj) with color_vec1{jj}

reza March 29, 2012 at 9:53 am

thanks sir. it works!

jio February 3, 2012 at 11:41 am

good job

Krishna Sankar April 24, 2012 at 4:57 am

@ofir: At last, I understood your concern – and I added bracket’s around (M-1). Thanks for pointing that out. It was a typo from my side.

thang November 23, 2012 at 8:14 am

hello
please help me simulation the difference between DVB-T and DVB-T2, i am not good at MATLAB, i have searched a document but i can’t do it because i don’t know how to write progam with matlab.
thankyou very much!