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