AWGN Channel - generating noise for required SNR

Status
Not open for further replies.

saeddawoud

Full Member level 3
Joined
Apr 27, 2007
Messages
153
Helped
6
Reputation
12
Reaction score
1
Trophy points
1,298
Activity points
2,144
AWGN Channel

Hello,

In AWGN channel, how is white noise generated using MATLAB? I mean, I have a code at hand, but I did not understand it. For example, it says somewhere in the code:

y = s + 10^(-Eb_N0_dB(ii)/20)*n;

where s is the transmitted sequence, Eb_N0_dB is the SNR, and n is the additive white noise. Can anyone explain to me the noise term, please? Why do we use the expression 10^(-Eb_N0_dB(ii)/20)*n?

Regards
 

Re: AWGN Channel


Thank you Mathuranathan for replying.

Actually, I still do not get why we use the expression 10^(-Eb_N0_dB(ii)/20)*n for the noise. Anyway, from the link you gave me, I found a built-in function in MATLAB which is AWGN() function that adds noise depending on the SNR. I tried it as in the following code:

Code:
function BER
clear;
N=10^6;
SNRdB=[-3:10];
SNR=10.^(SNRdB/10);
b=rand(1,N)>0.5;
s=2*b-1;
for ii=1:length(SNRdB)
    y=awgn(s,SNRdB(ii),'measured');
    bHat=real(y)>0;
    Diff=xor(bHat,b);
    nErr(ii)=length(find(Diff));
end

simBER=nErr/N;
theoryBER=0.5*erfc(sqrt(SNR));
semilogy(SNRdB,simBER,'k*',SNRdB,theoryBER,'bx');
legend('Simualtion','Theory');

but there is a shift between the theoritical and simulated results. Why is that? Is there anything wrong in the code?

Thanks in advance
 

Re: AWGN Channel


But when I replaced the addition of additive white Gaussian noise line y=awgn(s,SNRdB(ii),'measured'); by y = s + 10^(-Eb_N0_dB(ii)/20)*n; both results (the simulated and theoritical) collide. It does not make sense!!!

Regards
 

Re: AWGN Channel

mathuranathan said:
Can u plot the graph in both cases to understand the situation ?

Regards
Mathuranathan
 

    V

    Points: 2
    Helpful Answer Positive Rating
Re: AWGN Channel


Ok, it is clear now. One last thing, why we multiply the variance by the noise in the term 10^(-Eb_N0_dB(ii)/20)*n?

Thanks in advance
 

Re: AWGN Channel

I have noticed that, when I set the range of errors from 10^-7 up to 0.5, the simulation curve stopped on 10^-6. Why is that?
 

I think it is clear now the concept of adding AWGN to the transmitted signal over AWGN channel. Let me summarize:

For a specific SNR we need to add a noise term to the transmitted symbol such that the SNR is as specified, i.e.: if the SNR(dB)=15, we need to add a noise term such that the SNR(dB)=15 dB. To do this, we assume that the signal energy is unity (Why?), and then:

Code:
y=s+10.^(-15/20)*n

where y is the received signal, s is the transmitted signal, and n is the additive noise generated using randn function that generates normal RVs with zero mean and unity variance. the SNR (linear) of the above equation is:

\[\frac{1}{10^{-15/10}}=10^{15/10}=15 \mbox{dB}\]. But, is the assumption that the energy of the signal = 1 is valid?

Now, let us turn to the multipath fading channles. In this case the receiced signal will be:

Code:
y=h*s+10.^(-15/20)*n

the SNR in this case is:

\[\frac{|h|^2\,E_s}{\sigma_n^2}\]

Shall we assume that the numerator is unity? I.e.: |h|^2*Es =1? Why?

Thanks in advance
 
Last edited by a moderator:

Re: AWGN Channel

mathuranathan said:
...
For proper result if you want to use awgn function , translate the Eb/N0 to required SNR (in power) and then use the function
...

How can I do that? I want to use the awgn function in my codes.

Thanks in advance
 

mathuranathan said:
S/N = Eb/N0 * R/B
where R is the data rate and B is the bandwidth of the channel.

here S/N is in terms of power (signal power / noise power).

Thank you very much for replying, but then, we need to specify the data rate and the bandwidth of the channel. How can we know the most appropriate values for these variables? and how will they affect the final result? Can you give me a simple example, please?

Regards
 

Is y=s-(20 log⁡(SNR)*n) the same with y = s + 10^(-Eb_N0_dB(ii)/20)*n?
please reply me as soon as possible.

---------- Post added at 05:28 ---------- Previous post was at 05:21 ----------


Is y=s-(20 log⁡(SNR)*n) the same with y = s + 10^(-Eb_N0_dB(ii)/20)*n?
please reply me as soon as possible. And then, i would like to know the value of n?
 

Is SNR here in dB or linear?
 

i think it is in dB!

In the equation y = s + 10^(-Eb_N0_dB(ii)/20)*n, EB_N0_dB is the SNR is dB, and it is correct. Why do you need another formula? Your formula is not right. An alternative will be:

y=s+(1/sqrt(SNR))*n, where SNR here is in linear scale.
 
Thank u for ur reply!! but i need to change a little bit. how can i change the equation, y = s + 10^(-Eb_N0_dB(ii)/20)*n to another way? Please tell me! i am not so clear ! Thank u! Is this equation y=s+(1/sqrt(SNR))*n right and same with y = s + 10^(-Eb_N0_dB(ii)/20)*n?
 


It is correct as long as SNR is in Linear scale, and s is BPSK. Do not forget to write SNR(ii) because SNR will be a vector.
 
How to include the path loss exponent and the distance between the source & destination in the channel H???
 

i thinck it will be y=s+(1/sqrt(2*SNR))*n not ........ y=s+(1/sqrt(SNR))*n
because σ = √(N0/2)
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…