mathuranathan said:The above code attempts to add noise (term - '10^(-Eb_N0_dB(ii)/20)*n') to a signal (term - 's').
the term y contains signal+noise.
The above code generates a noise term with required signal to noise ratio. Eb_N0_dB(ii) is a function that generates the scaling factor to generate required signal to noise ratio.
here ii is the input argument specifying the SNR in dB
For more details von how to generate noise for required SNR
https://gaussianwaves.blogspot.com/2010/02/generating-signal-waveform-with.html
Regards
Mathuranathan
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');
mathuranathan said:Hi
There is nothing wrong with the code.
The simulated value may be different from the theoretical value. The theoretical result uses a well defined equation whereas the simulated result is obtained from a set of generated inputs. Always the simulated result will show deviation from the theoretical result.
Regards
Mathuranathan
mathuranathan said:Can u plot the graph in both cases to understand the situation ?
Regards
Mathuranathan
mathuranathan said:Hi saeddawoud
The term 10^(-Eb_N0_dB(ii)/20)*n is derived as follows
For AWGN channel with noise power spectral density N0 the standard deviation of noise is given by
σ = √(N0/2) --------> (1)
For BPSK the symbol energies are assumed to be normalized to 1 (since 0 represented by -1 and 1 represented by +1 )
Given Eb_N0_dB has to be converted to linear scale first
Eb/N0 = 10 ^(Eb_N0_dB/10); --->(2)
Now we need to find the sigma of noise according to the desired Eb/No ratio
if Eb=1 in (2)
then
1/N0 = 10 ^(Eb_N0_dB/10)
=> N0 = 1/(10 ^(Eb_N0_dB/10) ) ---> (3)
(3) in (1)
σ = √(1/(10 ^(Eb_N0_dB/10) )/2)
or
σ =1/√2 * 1/(10 ^(Eb_N0_dB/20)
this is how the term is derived
The problem here is not due to equation , it is due the way the awgn function is used.
The awgn measures the SNR (signal power/noise power) (note: everything in terms of power) but Eb/N0 is in terms of energy
For proper result if you want to use awgn function , translate the Eb/N0 to required SNR (in power) and then use the function
Regards
Mathuranathan
y=s+10.^(-15/20)*n
y=h*s+10.^(-15/20)*n
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
...
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).
Is y=s-(20 log(SNR)*n) the same with y = s + 10^(-Eb_N0_dB(ii)/20)*n?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
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
Is SNR here in dB or linear?
i think it is in dB!
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?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?