Académique Documents
Professionnel Documents
Culture Documents
data_user11=data_user1bpsk';
spdata1_user1=data_user11*code1; % Spreading
spdata12=(spdata1_user1)';
ifftdata_user1=ifft(spdata12); % Taking the IFFT
ifftdata12=ifftdata_user1';
y1=[ifftdata12(:,[(n-2):n]) ifftdata12];
transdata1=y1';
tx_user1=transdata1; % Transmitting data for user1
data_user21=data_user2bpsk';
spdata2=data_user21*code2; % Spreading
spdata22=(spdata2)';
ifftdata_user2=ifft(spdata22); % Taking the IFFT
ifftdata22=ifftdata_user2';
y2=[ifftdata22(:,[(n-2):n]) ifftdata22];
transdata2=y2';
tx_user2=transdata2; % Transmitting data for user2
ch1=repmat(gain1,(n+3),1);
ch2=repmat(gain2,(n+3),1);
ch3=repmat(gain3,(n+3),1);
ch4=repmat(gain4,(n+3),1);
data_noise1=data_channel(:);
data_noise2=reshape(data_noise1,1,length(data_noise1));
noise = 1/sqrt(2)*[randn(1,length(data_noise2)) +
j*randn(1,length(data_noise2))];
snr = [0:20]; % multiple Eb/N0 values
for i = 1:length(snr)
y = data_noise2 + (sqrt(1)*10^(-snr(i)/20))*noise; %Addition of Noise
%--------------------------Receiver ---------------------------------------
rx1=reshape(data_received,(n+3),length(data_received)/(n+3));
rx12=rx1';
rx13 = rx12(:,[(4:(n+3))]);
rx14=rx13';
%-----------------Taking FFT ----------------------------------------------
fft_data_received =fft(rx14);
channel_response=fft([gain1;gain2;gain3;gain4],n);
data_equilized=fft_data_received.*conj(channel_response);
recdata11=(data_equilized'*code1')';
recdata12=real(recdata11)>0;
errors_user1(i) = size(find([data_user1- recdata12]),2); %Errors for User1
SBer1 = errors_user1/N; % simulated ber user1
recdata21=(data_equilized'*code2')';
recdata22=real(recdata21)>0;
errors_user2(i) = size(find([data_user2- recdata22]),2); %Errors for User1
SBer2 = errors_user2/M; % simulated ber user2
end
% ------------------------Theoretical Result-------------------------------
snrlnr=10.^(snr/10);
TBer = 0.5*erfc(sqrt(snrlnr)); % Theoretical BER for AWGN
TBerf = 0.5.*(1-sqrt(snrlnr./(snrlnr+1)));% theoretical BER fro Flat fadding
%-------------------Displaying Result--------------------------------------
figure
semilogy(snr,TBer,'c*-','LineWidth',2);
hold on;
semilogy(snr,TBerf,'r-','LineWidth',3);
hold on;
semilogy(snr,SBer1,'bd','LineWidth',4);
hold on;
semilogy(snr,SBer2,'go-','LineWidth',1);
axis([0 20 10^-5 0.5]);
grid on
legend('Theoratical BER for BPSK on AWGN ','Theoratical BER for BPSK on
Rayleigh Channel ' ,'Simulated BER for User13','Simulated BER for User24');
xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('BER Vs Eb/No on Rayleigh Channel')