Direct Transmission - BPSK - Rayleigh Fading

MATLAB PROGRAM

clc;

clear all;


N = 10^5; % number of symbols


ip0 = randi([0,1], 1,N); % random symbol generation

s = 2*ip0-1;  % BPSK mapping


snr_dB = 0:2:20;  % SNR in dB


fad_chan = 1/sqrt(2)*(randn(1,N)+1i*randn(1,N)); % complex channel gain


noise = 1/sqrt(2)*(randn(1,N)+1i*randn(1,N)); % AWGN


for ii = 1:length(snr_dB)  % iteration for each SNR 

  

  %% simulation  

  snr = 10^(snr_dB(ii)/10);  

  rxd = sqrt(snr)*s.*fad_chan + noise; % received signal  

  r1 = conj(fad_chan).*rxd;  % compensation for fading (equalization)

  s_hat = real(r1)>0;       % decision making

  n_err = size(find(s_hat-ip0),2);   % number of errors for given SNR

  err_sim(ii) = n_err/N;  % error for given SNR

  

  %% analytical

  err_ana(ii) = 0.5*(1-sqrt(snr/(1+snr)));

  

end



figure;

semilogy(snr_dB, err_sim,'--+k');

hold on; grid on;

semilogy(snr_dB, err_ana,'-ok');

title('Direct Transmission - BPSK - Rayleigh Fading')


xlabel('SNR (dB)');

ylabel('Error rate');

legend('simulation', 'analytical');


SIMULATED OUTPUT

DOWNLOAD LINK