generating AWGN in matlab
Show older comments
I'd like to have your overview if what I'm doing is OK.
I need to plot the BER vs Eb/No. So the noise power which I should generate should be related to Eb/No.
- bits are encoded into 1/2 rate encoder.
- the output of the encoder is converted to +1 and -1 symbols
- symbols are oversampled by OS ratio.
- the oversampled symbols are passed through Gaussian filter and this is the data which i send to the channel.
now i need to generate AWGN:
EbNo_dB_bit_list = -2:0.25:2;
EsNo_dB_no_code = EbNo_dB_bit_list - 10*log10(OS);
dec_EsNo_dB_no_code=10.^(-EsNo_dB_no_code/10);
sigma2 = 1/(2*Rate)*dec_EsNo_dB_no_code; % to include the code rate
ni = randn(1,length(modulated));
nq =randn(1,length(modulated));
noise=(ni+1j*nq)*sqrt(sigma2(k));
Answers (2)
Bhavik Doshi
on 22 Aug 2013
Edited: Walter Roberson
on 30 Aug 2015
clc; close all; clear all; sym=1000; snr=30; M=2;
msg=randi(1, M-1,sym) mod=pskmod(msg,M); for i=0:snr yn=awgn(mod,i); msgbar=pskdemod(yn,M); [a(i+1) b(i+1)]=biterr(msgbar,msg); end semilogy(0:snr,b,'r'); grid on title('Simple AWGN'); xlabel('Eb/No'); ylabel('BER');
Bhavik Doshi
on 30 Aug 2015
0 votes
Let us consider that final signal this coded as x matrix. Assumption: x is a mxn matrix. x is already over sampled x is already modulated and coded as per requirement you need y = xh + n where h is complex channel and n is noise.
Now, as you mentioned, you do not need h, assuming wired transmission.
y= x+n.
Matlab implementation:
y = awgn(x, snr);
use x as your coded modulated signal matrix or vector. snr = choose value between 0 to 30 db only.
Categories
Find more on Propagation and Channel Models in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!