@supas: Replies
1/ ideally, one would want to give different noise realization for each snr point. with that in mind, having the wgn statement inside the for loop is better
2/ wgn is created using randn function

I have a question regrading “sigma” the standard deviation of noise:
We know that sigma = sqrt(No/2), for complex noise. right?
But how about real noise? Is sigma = sqrt(No)?
where No is noise power spectral density.
I look forward to hear from you soon.
Many Thanks

pls can you help solve this question; Given a stationary transmitter is sending at a center frequency of 900 MHz, the receiver is
travelling at speeds of (a) 1 km/hr; (b) 10 km/hr; (c) 100 km/hr; or (d) 500 km/hr. Draw
a graph of four curves that show deviation of spectral frequencies from the center frequency
for the above four scenarios. Use a legend properly to distinguish different scenarios.
5. Suppose that a mobile node is moving at a speed of 150 km/hr in a typical urban environment
(e.g., highway). It transmits a signal to the base station at a center frequency of fc = 1 GHz
using a binary modulation at a data rate R. It is known that the typical RMS delay spread
of multipath propagation in this scenario is around 5 s. For each of the following cases,
decide if the received signal is best described as undergoing fast/slow fading, frequency
selective fading or flat fading.
(a) The mobile node is sending at a data rate of R = 1 Mbps.
(b) The mobile node is sending at a data rate of R = 500 kbps.
(c) The mobile node is sending at a data rate of R = 50 kbps.

First of all, congratulations for this helpful and nice explanation. I’m dealing with the similar task (maybe the same) these days. I determine two waveforms, Tb and BW, then I’m trying to draw the plot of Pe versus BW. Is yours exactly the same thing that I want to do? However, in my design, there are two integrators. I couldn’t get the point that whether you used integrator in your matlab code or not. Also, if we use lowpass filter, instead of AWGN is there a change? I’m very new at digital communication, so I’m sorry for these bad questions

@Ozgee: Replies:
1/ This simulation is doing bit error rate vs SNR (not vs Bandwidth)
2/ This code does not have any integrator – but a typical implementation will need a matched filter
see the following example : http://www.dsplog.com/2009/05/08/ber-with-matched-filtering/
3/ Loop filter and awgn two independent aspects.

I need this in matlab with expalnation.
Compute the error probability of a BPSK as a function of Es/NodB (in decibel)
{1; 2; 3; 4; 5; 6; 7; 8; 9; 10}.
1.What is the energy of a BPSK symbol (Es)? And the Energy per bit (Eb)?
Comment.
2.The noise variance is
sigma^2 =N0/2
hence for each value of Es/NodB you can derive the associated sigma^2 that you
need to generate your additive white gaussian noise.
3.Generate a vector x representing N=1000000 BPSK equiprobable symbols.
4.Estimate the transmitted symbol x based on the received signal y = x + n.
Show the histogram of y for Es/NodB = 1 and Es/NodB = 10 (comment the
figures)
5.Compute the average error probability as the number of errors over the total
number of transmitted symbols N.
6.Repeat the steps for each value of Es/NodB and plot the corresponding P(e) in
a log scale (use the function semilogy with “blue” line). Comment the results.
What is the minimum Es/NodB to guarantee a P(e) < 10^-5? In the same
gure plot ("red" line) the theoretical P(e) of a BPSK (see slides). Comment

@pawan: you can either use the visual information from the ber plot to find the minimum snr required to hit a given bit error rate. for eg, bpsk in awgn requires around 7dB of Eb/N0 to hit 10^-3 ber. One can also use the erfinv() function.

Hi Krishna,
I want to demo about DSSS spread spectrum systems by MATLAB. it’s my project
it uses modBPSK and PN
but i’m not good at matlab programming
can you help me about it ?
thankyou very very much !!
my email : phuc0605bk@gmail.com

In this post, it is very useful that you show the relationship between BER and SNR. Actually, I want to describe the relationship between BER and transmission distance for BPSK in AWGN channel. Please give some advices for this.

Dear Krishnan,
Thank you so much for your help!
I have another problem that I can not understand as:
I used the formula: BER = 0.5*erfc(SNR) for BPSK in AWGN channel to plot the picture which show relationship between BER and propagation distance through the relationship between SNR and distance based on free space path loss model. But I can not explain why BER can not be greater than 0.5 even the distance is increased up top very large value. I think that this result is not suitable with the fact that when BER will be increased to 1 when distance increased from 0 to infinite.

Hello Sir
I am new here and i need your help.Please give me answers of my few questions. I will be thankful to you.:
1. ip = rand(1,N)>0.5
how it generate only +1 and -1
what is the concept of using the term>0.5

2. Eb_N0_dB = [-3:10]
how the range of Eb/No is chosen and what is the need of this?

@khushi: my replies
1. rand() generates a uniformly distributed number in the range from [0 to 1). The >0.5 allows to generate a input sequence with approximately equal probabilities for 0 and 1.
Then 2*0 – 1 = -1 and 2*1 – 1 = +1

2. This is the region where the BER for BPSK modulation changes from from very high ber (>0.1) to very low ber (<10^-4)

Hi Krishna,
Could you answer the following q’s please if you have the time? Thanks. Zoe

1. I don’t know how the following counts. Is nErr(ii) an array?
And I don’t precisely know what ‘size’ and ‘find’ functions do?
(I know ip-ipHat = 0 is no error)

nErr(ii) = size(find([ip- ipHat]),2);

2. In the following is the decimal version of EbNo getting multiplied with n, mean of the Gaussian noise? (of course then added with s, -1 or 1, depending on what was sent)
y = s + 10^(-Eb_N0_dB(ii)/20)*n

3. The following is confusing. Why two real and imaginary component Gausian functions added and normalized by inverse of “sqrt(2)”
Could you write the formula or equation it is derived from?

how are you.I need a help from you because I have a project and there some points i don`t understand it.

It is about the square root raised cosine pulse ,we need to plot it with different roll-off factor(B=0.25,B=0.5,B=1.
After that consider a binary antipodal signaling over an ideal AWGN channel at the normalized bit rate of 1 bit second where TB =1
x(t)=+or-p(t) +w(t)
where w(t) is an additive white gausian noise ,simulate model for this system and plot the resulting BER (B=0.5)

Hello Krishna Pillai,
thanks alot for the wonderful work you did here.please can i have d privilege to have your personal email address. I have something personal to email to you with respect to my undergraduate project work.Thanks.

Please help me with simulating BPSK with direct-sequence spreading using m-sequence .I have tried doing the spreading and the despreading as well as noise addition but the BER vs. EbN0 curve is higher!!!! than the theoretical one ,which is the same as BPSK without spreading .
the problem could be with the addition of the noise ; I did multiply the transmitted chips by 1/sqrt(N) ,where N is spreading factor ,in order to make sure that the bit power is 1 .

@Krishna: Hello Krishna
I have tried the no noise case and gave me zero BER . I couldn’t figure out what is the problem with the scaling ??!! Do you have any code for spreading and despreading ?
I need the correct coe for my final project on my Bachelor degree. So I should be very grateful if you can help me with this.

i want code on CDMA transimeter and reciver with AWGN for multi user by LLR log like ratio in receiver iterative decoding ,…….i make it but without LLR can u help me plz also i put spreader but not coded as block thx

Dear Mr. Krishna
Would you help me in my project!!!
I study this paper in IEEE for satrting my thesis in master degree. “Cross-Layer combining of adaptive Modulation and coding with truncated ARQ over wireless links” .1343909 abstract
This paper appears in: Wireless Communications, IEEE Transactions on
Issue Date: Sept. 2004
Volume: 3 Issue:5
On page(s): 1746 – 1755
but I have som misunderstand whith this paper and manye other papers like this .
The first problem is finding average SNR in mode(n).
I don’t know how can I select the average SNR in (7), (8),(15) ,…
and the second problem is ,if we select the SNR whit gama distribution in matlab for example:
gamrand(a,b)
then gama average is: ab (in gama distribution).
In fig 4, 5 ,… we have average SNR in horizontal axis and I don’t know how select from 0 to 30 db
best regards

Thank u very much Mr.Krishna.. Could you please name a few companies recruiting in this field… I knew only the IT companies no idea about this type of companies and what will the requirements to get into those companies……

I checked this one no need for ‘ber2′.. I used ‘ber’ as an array to store the values of bit error ratio since biterr is an inbuilt fuction and [n,b] where ‘b’ bit error ratio for a particular snr value and we need Bit Error Ratios for all differen SNR values, for that I used variable ‘ber’ to store the values of ‘b’

Yes Mr.Krishna…
I’m currently pursuing my M.Tech(Communication Engineering) in VIT.. I’m willing to work in wireless field.. I need ur guidelines to work in communication field or in signal processing so that I can prepare for my future… Pls do reply waiting for ur precious reply.. Thank You

@Thiyagi: All the best for your studies. With out being specific, I believe having the following knowledge will help you in good stead when trying to chart out a career in wireless communication/signal processing :
a) Understanding of RF architecture, RF impairments and it’s effect on the system performance
b) Phase/frequency syncrhronization
c) Channel effects – channel estimation/tracking
d) Channel coding
e) Multi user communication … to name a few…

Hello Mr.Krishna Pillai I tried to plot the BER for BPSK using the following code but didn’t get correctly..Could you please kindly correct me what went wrong..
clc
clear all
close all
ber=[];
x= randint(1,200);
y= [2];
k= log2(y);
z= reshape(x,length(x)/k,k);
d=bi2de(z);
M=[2];
s=pskmod(d,M);%Psk modulation

Mr.Krishna for the below code i’m achieving same BER at less SNR comparing to the theoretical value, since i used AWGN inbuilt function to add noise..Whether this approach is correct? With the program given in this website it works good, from this program I tried with my logic just want to know whether the below logic is correct..Thank u
clc
close all;
clear all;
ber2=[];
N = 10^6; % number of bits or symbols
x = randint(1,N);

@Thiyagi: The code looks ok. You can check couple of points:
a) awgn : whether the noise power is as expected. Maybe you can try with ‘measured’ option.
From Mathworks http://www.mathworks.in/help/toolbox/comm/ref/awgn.html
“y = awgn(x,snr,’measured’) is the same as y = awgn(x,snr), except that awgn measures the power of x before adding noise.”

b) Counting the number of error. That piece of code looks funny. Did not understand the need for ber and ber2.
Should be easy for you to figure out.

In fact sir Krishna Pillai want to make noise variance equal to 1 or 0dB.
you can check by command max((10^(-Eb_N0_dB(ii)/20)*n))= 1.01 where as
max((10^(-Eb_N0_dB(ii)/10)*n))= 0.3251 so its clear scaling…..remember before these commands i just removed the complex part i.e n = 1/sqrt(2)*[randn(1,N)]; for my easyness.

I also noticed that this scaling change for system to system e.g for non coherent 4FSK -it becomes like (10^(-sqrt(2)*Es_2N0_dB(ii)/20))*n becoz in 4FSK i need variance 0.5.so i scaled it to 0.5 by just multiplying by sqrt(2)

Could i have codings with different modulations with different subcarriers for any one user in MIMO OFDM system .output shouild be throughput versus time or ber and time.please help me sir.Thank you in advance

I am doing some research on chaotic carriers and I was planing to make this BER for comparison.
Your post save me a lot of time to focus on the real subject of my work.
Thank you very much for the help!

what about 8-PSK ?
is it the same to 16-PSK and just change M=8 only?
or there is other things that i should to change ?
becouse when i changed M to 8 i got an output and no errors
pls answer me it’s very importanat
thanks alot man

hi
i m doing graduation we have a project in which we have to design the communication sysem in which data+modulation(bpsk and 8-psk)+awgn then threshold detector and then we had to compute bit error rate.. can you help me in this…..

Thanks for your detailed post!
But I have question about the comment of this line in your codes
s = 2*m-1; % BPSK modulation 0 -> -1; 1 -> 0
I think maybe you want to change original 0 to -1, but 1 should be no change, is it?

Oops i am sorry if this is a total blunder.. In digital modulation techniques we modulate a sine or a cos wave using bits and transmit them as sine or cos waves.. But in this code for BPSK modulation I never found the usage of such things.. could you please clarify my doubts in simple words… Regards Ajith

@Ajith: No, its not a blunder at all, tt’s a genuine query. There are two aspects to the reply.
a) In the case of baseband transmissions, we send the information on pulses and in the most simplest case, we send out rectangular pulses of varying amplitude to convey the information (or we can do some better pulse shaping to reduce the out of band emissions, while not introducing ISI)
b) In the case of pass band transmissions, we do the pulse shaping, then upconvert to a carrier and then transmit.

In both (a) and (b), for computing BER, the results which we get even if we do not simulate pulse shaping + up conversion is same as the one without it (assuming, we undo the operations optimally). Hence did not put those in place.

hello sir
can you please guide me,how can i plot BER error rate of uncoded and coded BPSK
i know the formula of BER for Uncoded BPSK ,i have plotted it,but I am really cunfused about the Coded Bpsk,I am using BCH codes which are block codes
Waiting for your reply

or we can use awgn function to pass through awgn channel which will add real noise if data is real and will add complex noise if data is complex… if i proceed in that way the performance is not matching with the theoritical analasys… can u explain me clearly why should we add complex noise…
expecting early reply….
Thanking u sir

@rama krishna: Adding complex noise does not affect the end result (as we are ignoring the imaginary part at the receiver). However, just make sure that scaling is correct. You should multiply factor of 1/sqrt(2) to the noise term which you have defined.

dear sir Krishna Sankar
I am very happy to find your blog … and found what I was looking for … I am a student majoring in telecommunications engineering and was doing the final tasks of rain attenuation, said supervisors told to discover how much value other than tresshold BER for MQAM rmodulasi … I want to ask how can I download the book John Proakis as an accurate reference book saya.Mohon bantuanya final … and also how the graph of the BER curve modulation 16…………

Hi,
Can anyone help me in my project!!!
i Have read here that there is no difference between BER vs SNR in case of BPSK and OFDM using BPSK.
But my project guide has told me to mathematically prove that BER vs SNR is better for OFDM using BPSK than simple BPSK.
Suppose there is N no. of subcarrier.Then for each subcarrier there will be BER.But if i want to calculate the total BER for n no. of sub carrier then how the BER of indivisual subcarriers are related???

I need to design and develop a simulation platform in C/C++ to simulate the performance for BPSK- and 8PSK modulation through an AWGN channel and evaluate the biterror rate (BER) performance for BPSK and 8PSK in the range Eb/N0 2 [−4, 8] dB.Can you help me with any suggestion or source code.

Hi Krishna,
I know the BER of BPSK is 0.5*erfc(sqrt(10.^(Eb_N0_dB/10))),
if I put channel coding before the modulation,and the code rate is R,
then if the BER equals 0.5*erfc(sqrt(R*10.^(Eb_N0_dB/10)))?
then BER with code rate 1/2 is higher than 3/4,but acturally ,it should be
lower. where is my mistake ?

In theory, when i applied my SNR into your coding, i got the result.
But, when i applied my SNR into your coding for simulation, i got the problem. I think that problem occurred at SNR or BER. But i dont know where my coding is problem? Can you help me pliz…
Thanks a lot..

hi krisna,
i hope you are fine.plz could you send me BPSK,QPSK,16QAM,64QAM modulation and demodulation simulation in matlab and simulation of adaptive modulation of convolutionaly coded for BPSK,QPSK,16QAM,64QAM?please help me.

Please guys I am having trouble writing a code for non coherent detection, I am required as part of my project to Assume Rayleigh fading channel with BPSK modulation. Using MAT-LAB plot bit error probability (BEP) under non-coherent de-tection. Your ¯gures should include plots from both analysis and simulation.Use average SNR (complex) from -5 to 20 dB.

I am working on an adaptive modulation model on Simulink. For that first I am trying to get probability of error rate vs snr of different modulation techniques. On modelling 16 QAM modem I have problem plotting its graph by getting bit err rate from simulink model and performing graph plotting on matlab. following is the code im using in matlab..

Hi…
I need to Simulink Probability of error for PSK, 16QAM & MFSK. but don’t know how to simulink the equation: Pe=0.5*erfc(sqrt(snr)).
I tried to call the fuction from Matlab using Embedded Function Block in Simulink. But, the program din’t work. Can u suggest me a Block for finding Pe or a Program to call from .m file..?

I was working on a IEEE paper titled”Xiaodi Zhang and N.C. Beaulieu, “A Closed-Form BER Expression for BPSK Using MRC in Correlated CCI and Rayleigh Fading,” IEEE Trans. Communications, vol. 55, no. 12, pp. 2249-2252, Dec. 2007.”.
Since you have also worked on similar field, I hope u can help me..

I was stuck with re creating the 1st fig in the paper.
SO, can you please look into it and help me out..

Hi Krishna.
Thank you very much. God will bless you. Below is the answer you gave me for my concern on this formular 10^(-Eb_N0_dB(ii)/20)*n
“Do not change the division factor. Rather change the value of Eb_N0_dB. The division by 20 is required to convert dB into voltage”.
Please give me more direction, by giving me an example of what you mean by changing the VALUE of Eb_No_dB. or how do we get the value
Am thinking is Eb_No_dB =[0:10], [0:20], [0:30] and so on, but am not very sure. Pls, you are indeed a very good teacher, help me out

Thanks, you are really very helpful, you must really reap the fruit of your efforts.
NNAMDI

Hi Krishna.
Thank you very much. God will bless you. Below is the answer you gave me for my concern on this formular 10^(-Eb_N0_dB(ii)/20)*n
“Do not change the division factor. Rather change the value of Eb_N0_dB. The division by 20 is required to convert dB into voltage”.
Please give me more direction, by giving me an example of what you mean by changing the VALUE of Eb_No_dB.
Am thinking is Eb_No_dB =[0:10], [0:20], [0:30] and so on, but am not very sure. Pls, you are indeed a very good teacher, help me out

Thanks, you are really very helpful, you must really reap the fruit of your efforts.
NNAMDI

Hi krishna, I have actually read the answers given to you by the concerns generated by the formula below
10^(-Eb_N0_dB(ii)/20)*n
for further clarification, i have actually divided by 18,16,14,12——3 to get different plots that actually decreases down the graph . Want to know if is how one can plot for BER with variable noise in the channel. I will appreciate if you reply me soon. Thanks

Hi krishna, I have actually read the answers given to you by the concerns generated by the formula below
10^(-Eb_N0_dB(ii)/20)*n
for further clarification, i have actually divided by 18,16,14,12——3 to get different plots that actually decreases down the graph . Want to know if is how one can plot for BER with variable noise in the channel. I will appreciate if you reply me soon. Thanks

@christine: The random numbers generated by the program can be initialized to enable us to run multiple simulations with the ‘exact same’ random numbers . Setting the state of the rand() or randn() enables one to do so.
Use >>help rand or >> help randn to get more information.

Dear Krishna:
I knew that OFDM technique, improve the BER performance in frequency selective fading channel, Can you help me in writing code using matlab program show that , I have probem in how write code for frequence selective fading.
Thank you .

I knew that OFDM technique, improve the BER performance in frequency selective fading channel, Can you help me in writing code using matlab program show that , I have probem in how write code for frequence selective fading.
Thank you .

hello Krishna Pillai!
I’m a student in Ho Chi Minh City, Viet Nam. I’m searching about “the impact of real channel over MiMo system”. your code is useful. So, we assume that receiver is unknown h matrix and we must explore channel by channel estimation. Do you help me?
Hope you will response me!

I am working on Forward error correction codes. I have plotted the BER performance curve for Reed solomon codes using BPSK modulation over an AWGN channel from EbNo 0 – 1 . However, the curves are overlapping at the begining between EbNo values 0 and 1 and also in the middle.

Also the curves for convolutional codes overlap at the begining between 0 and 1. and also in the concatenated codes.

Could you please give me a detailed explanationc on the reason why the overlapping occurs and the significance.

The RS codes used were RS(255,191), RS(255,223), RS(255,239) and RS(255,247).
Thanks, hope to hear from you soon.

I would like to ask you a simple question. I am trying to make a simple simulation using a matlab. It is about that one node using SF(spreading factor)=2, and another node using SF = 8 (orthogonal to each) are encoding the data and sending to one node (asynchronous network) with same power but from different distance at the same time. how can i simulate it? when decoding at the receiver, it uses same ovsf code as the node using SF = 8.

@leth: I do not have a code combining BPSK/QPSK/QAM etc to do adaptive modulation. However, you may find individual posts describing these modulation schemes @ http://www.dsplog.com/2008/10/01/download-free-e-book/
As you said, one way to make an adaptive modulation scheme is to define a BER threshold (lets say 10^04) to switch from one modulation scheme to another.

Thank you for your effort…
i have some question
1. y = s + 10^(-Eb_N0_dB(ii)/20)*n;
2. theoryBer = 0.5*erfc(sqrt(10.^(Eb_N0_dB/10)))
i don`t know why Eb_N0_dB(ii) has minus value…
and
At first term,^(-Eb_N0_dB(ii) is divided by 20 but, at second term Eb_N0_dB is divided by 10.
Why Eb_N0_dB is divided by diferrent value??
My question is very poor, nevertheless i will wait for your comment
Have a nice day

@Moon: My replies
1/ Before this scaling, the signal term s and the noise term n has the same variance of 1. The term -Eb_N0_dB reduces the noise variance
2/ The scaling is happening on the noise voltage signal, hence the factor of 1/20. In the theoretical equation, note that there is a square root term outside the 1/10 factor. This is equivalent to having 1/20 factor. Agree?

first of all, thanks a lot for ur job, it´s really useful for all the DSP internet communty.

here my question, I´m carrying out some simulations on simulink. modulating BPSK, spreading w/ gold code, going through awgn, despreading and demodulating BPSK, and at the end I measure the BER.

using simple BPSK mod/demod provided in the communications block set, I´ve got a relative high BER (.5), then I found the so-called “Real BPSK mod/demod” which basically a “real-imag to complex”/”complex to real-imag” block is added to the BPSK mod/demod, and the resulting BER is around .1.

I´ve tried to find unsuccessfully an explanation to this on technical literature.

Dear Krishna, thanks for your codes. I am plotting BER for BPSK and QPSK but i am not getting same BER curve. As it should be same for both. I know that the plot should be BER vs EbN0. But how to get EbN0 from SNR? In your codes you have written Eb_N0_dB, is this EbN0?? I think it is SNR. If this is EbN0, why am i not getting same curve for BPSK and QPSK… Please Help

@Eduardo Solano: If the simulation curve is happening to the right of the theoretical curve, it typically means that you are adding more noise than what is required. Also make sure that you simulate for atleast 10^6 bits, such that you get statistically accurate results.

thnx for ur response,,it means dat u need to have atleast 2 no of rcvd bits at da reciever 2 be compared..but my confusion is that how to use vblast when i am considering diversity mimo,where i have to use combing technique first?? can i implement vblast in dat case or not???

@maya: Well, understanding V-BLAST with Zero Forcing equalization is the most simplest way. From our linear algebra days, we know that if we have two unknowns, we need atleast two equations to solve them.

Adapting them to MIMO V-BLAST, the two unknowns are the unknown transmitted data, and the two equations are provided by the two receive antennas. Just putting a simple example,
y1 = a*x1 +b*x2
y2 = c*x1 + d*x2
where
y1, y2 are received symbols
a,b,c,d are channel taps (which are known) and
x1, x2 are unknown transmit symbols.

Dear krishna
I hope you are fine. I am in 5th semister of my bachelors of telecommunications. So I am new to this field and facing lots of difficulties. I find your site very impressive and have joined it recently. Can you kindly tell me why we normalize things? thnx

@kanchana: Well, I have not quite discussed about cdma in the blog till date. Hope to do so in future.
I beleive the intent of the rake receiver is to coherently combine information from all the multipath taps such that the bit-error rate is reduced. I have posted about maximal ratio combining for a 1 transmit 2 receive receive diversity case.http://www.dsplog.com/2008/09/28/maximal-ratio-combining/
Though the context is different, I think you should be able to adapt that to suit your needs.

@Student: hmm..let me try to understand. For bit0 you are sending -ve sine wave, and for bit1 you are sending +ve sinewave right. At the receiver you cmay undo the effect of the sine wave by multiplying the received signal with the sine wave and taking the mean. Then perform hard decision decoding on that signal.
Does that help?

Hi, can you help with this issue,consider QPSK transmission over flat fading Rayleigh channels and a 1×2 system.The channels on the different diversity branches are assumed to have the same variance and the noise samples are assumed to be uncorrelated and circularly symmetric Gaussian variables with the same variance.
Consider three combining schemes: MRC, EGC and SC, for plot the BER versus the average signal-to-noise ratio (SNR).
I hope you can help me

All your posts have been very helpful and easily understandable. I was looking for a code that has all the modulations(bpsk,qpsk,mpsk,ask,bfsk,msk etc…) in a single program and to compare their BER, PSD curves. please let me know if you have any.

A randomly generated bit stream should be transmitted through an AWGN channel using BPSK. THe received symbols should then be converted again to a bit stream. The received bit stream should be compared with the original one to determine the total number of errors and hence the bit error probability. The probability of error should be calculated for several values of EB/No.
Once the above system is succesfully simulated an additional block of channel coding should be incorporated in the system. A (15,11) Hamming code should be used for this purpose. Simulation of this should be performed to increase the performance of the system.

@Shahrukh: My replies:
1. Example Matlab code is provided in this post
2. The equation for BER for BPSK for a given value of Eb/N0 is provided in this post
3. I have not tried simulating with Hamming code. However, you may check the article on convolutional coding
with Viterbi decodinghttp://www.dsplog.com/2009/01/04/viterbi/

Hi there, very useful site. I have a couple of questions regarding the BPSK:

1) Could you go in to a little more detail why you use complex noise vs. real. Although it doesn’t make a difference for BPSK, I’m assuming it actually will with other modulation methods. I didn’t see this in any of my textbooks.

2) In your code for the BPSK, you divide by 20. Shouldn’t that be 10? Given an SNR in dB, we get S/N0 = 10*log(SNR-dB / 10).
This gives N0 for a given signal power S.
The variance^2 = N0/2 and if we assume 0 mean, this gives us our AWGN, which is a random variable describing the noise amplitude. In my simulation, if I use 10 instead of 20, my results were way off, but 10 gives a perfect match with theory.

@ Matt K: My replies
1). Yes, for BPSK the noise component on the imaginary arm is ignored. To make the noise model same as with other modulation schemes, I kept it as complex.
2). The division by 20 is to convert the dB to scale the voltage signal. In my simulation model, the noise term n is a Gaussian random variable with mean 0 and variance 1. Therefore, I am scaling the noise voltage by 10^(-Eb_N0_dB(ii)/20)*n. Thats why I used 20.
In general, it depends on how one creates the model. Different people have different coding style. However, its the end result which matters.

tq krishna…i understand it more than before..i really appreciate it..
however can i ask u bout the graph of BPSK between simulation and theoretical in term of BER vs SNR…
how the shape of graph become like that?

I am new here. I find this site really very useful. Thanks for everything. I have a question reg BPSK sim. I did it with awgn function and I am not getting theo and sim graphs overlapping. Please answer this as soon as you get time . thanks

@nyna: In the transmitter, we will first be converting bits into analog voltage (+1/-1 in the case of BPSK). However, we cannot transmit them as is, as it will occupy lots of spectrum (which is not desirable). Hence we need to do filtering. However, when doing filtering, we introduce ISI (inter symbol inteference) i.e each symbol may interfere with the next symbol and so on.

hai..krishna..i want ask you the function of hamming code and bCh code..it because i already simulate the block using that coding…can you give me the formula for i’m calculate theory the bit error rate when using coding for i compare between theory and simulate…..also can you give me the graph ber vs Eb/No when coding..tq

hi hope you are fine. In your code you have scaled the noise with the term 10^(-Eb_N0_dB(ii)/20)
my question is why we do this?I mean why we need to scale the noise power as per the defined bit to noise ratio? Any references will help me a lot
fire back soon plz !!!

@invizible soul: Sorry for the delayed response. I am traveling with out a reliable access to internet.

In this analysis, our objective is to analyze the impact of noise on the reliable decoding of BPSK modulation. To analyze the impact, we need to find out the performance (bit error rate) for different values of noise. Hence we scale the noise by noise power.

@mak: As I understand from your query, you want to switch from one modulation scheme to another based on a defined error rate constraint. For eg, for lower SNR’ you would want to use BPSK, then move on to QPSK/4QAM for medium SNR’s and then hit 16QAM at high SNR’s.

@Ideal: It just means that any value of y (real component) greater than 0 is assigned to 1 and if less than 0 is assigned as 0. This is called hard decision decoding.

Soft decisions – where we do not decide on what was transmitted based on the received constellation – are used typically when there is a decoder block (like Viterbi) following the constellation demapping.

@Ideal: So you are able to plot both the curves using independent functions/scripts, but not able to combine them. Correct? This should be a reasonably easy aspect to resolve.
You can have a main script which generates the transmit symbol, Eb/No values etc. Pass it two function
(a) for awgn channel y = x + n,
(b) for rayleigh channel y = hx+n
Each function will count equalize, count the errors and report the number of errors for each value of Eb/No.

I have made a program for BER of BPSK in AWGN and Rayleigh fading channel, now I want to combine the both results in one graph, when I combine the results, the curve for rayleigh change but for awgn not change, can you give any idea what should i do, either i make a functions of both separately and call in one program or i should do something else?

Might want to consider using a separate integration variable for the definition of the erfc function, since the variable x was used for both the erfc argument and integration variable.

Perhaps just use ‘z’ or ‘y’ for the erfc integration variable, i.e., erfc(x) = 2/sqrt(pi) * Integral_x_inf { exp(-z^2/2)*dz } . This will then make it clear that the erfc argument ‘x’ is used to modify the integration limits, as opposed to the actual function being integrated.

@ravi kumar: In AWGN, there should not be any advantage by using OFDM modulation. OFDM can be thought of as a simple up-conversion scheme where each information gets multiplied on different sub-carrier frequencies.

hi,
I do not understand why the BER curves for both BPSK and BPSK with OFDM are almost same where the BPSK with OFDM get
advantage i.e., decrease in BER in case of BPSK with OFDM.
So please give me the idea by differentiate the two curves and how the BER can be decreased with OFDM as soon as possible. iam waiting for u r response hopefully,thanku

I do not understand why a complex gaussian noise is required. The source here belongs to a BPSK modulation so I think, in practice we have a real noise, because we do just activate the in phase component and not the quadrature phase component.

@rahul: Thanks.
I believe you are looking for the code for transmit pulse shaing filter. You can look at the article and the code in the posts with the tag ‘pulse-shaping’http://www.dsplog.com/tag/pulse-shaping/
That should help you get going.

@Jhony: If I may put very briefly, fading is the characteristic of the wireless channel. The channel (read enviornment) will vary with time and will exhibit different behaviour for differnt frequencies.

One of the most simplest and useful model of fading is to visualize it as filter whose coefficients change in time.

@Jhony: Thanks. Am doing good. How are u? Glad to notice that you are not desperate now
Typically, to keep the code simple, I tried to avoid in-built functions. The randn() function + scaling the does the job. Thats all.

@srinivas: This is to scale the noise term ‘n’, so that we can obtain BER for different values of Eb/No. In the simulations, we define Eb/No in dB. To convert dB to define a scaling term for noise voltage, we use 10^(Eb_N0_dB/20).

Oh… were you unable to find the Matlab/Octave code? The link to the code is under the heading Simulation model.

Anyways, for BPSK it is simple. We observe the real part of the received symbol. If the real part is greater than 0 decode as +1, if the real part is less than 0 decode as -1.

Once we have the decoded symbols available, the number of differing symbols can be obtained by
nErr = size(find([ip- ipHat]),2);
Ofcourse, using find() is only one among the many different ways to compute this.

Dear Krishna,
Your simulation and theory prgram is very usefull and helpfull.
Could you please send me the syntax matlab comand of QPSK modulation for OFDM under multipath (i.e 3 path) fading.
Very thanks in advance.
shareef

One who is interested in including his/her name in 3 research conferences in international IEEE conference should reply on email address me_researcher@yahoo.com. Both papers are related to mobile communication. Total of 3 authors list will be included in each Paper. 2 author names have already been included. Interested candidates who want to include his/her name at 3rd position will be required to pay for the registration fee.
Matlab Code as well as the full paper will be sent to the individual after acceptance of paper from the conference.
Fee submission will be through Freelancer and elance. Candidate name will be included in Paper after milestone payment is released by him/her. Milestone payment is one which is in the custody of broker (Freelancer or Elance authority) and not in the custody of either party. After the paper is accepted and the client is conformed about the acheivement, only then he will be allowed to pay. Time is short so the policy of 1st come 1st serve will be entertained.

I have to give a value to bit rate (Tb) and observe the effect of this variable on probability of error by changing it. My graph must be error versus bandwidth by accepting noise as zero. Do you have such a code?