www.gusucode.com > DS-cdma仿真matlab程序 > code8/cdma/final31_fh.m

    %**********************************************************************
%        This program computes the average BER versus Eb/No of K users
%			transmitting BPSK symbols at an equal power level using a 
%			slow FH-MA scheme assumming perfect synchronism and orthogonal
%			codes in AWGN
%        
%        AUTHOR: Wenbin Luo
%        DATE  : 05/01/01
%
%			final31_fh.m
% 
%*********************************************************************

clear all;
%close all;

format long;
%set up the threshold Vt 
Vt = 0;

Plot_Pe = [];

K = 16; %4,8,16
N = 32;
x_num = 5000;
plot_EbNo = -20:3:10;
for EbNo = -20:3:10,
   
%convert back from dB
Eb_No = EbNo; %dB
Eb_No = 10.^(Eb_No/10);
%assume No = 2;
No = 2;
Eb = No * Eb_No;
%calculate power p
Tc = 1;
Ts = N * Tc;
p = Eb / Ts;

%generate BPSK symbols randomly with value +1 or -1
x = bingen(x_num);

%DS-SS modulate symbols with user code
UserCode = fh(N,K);
c = UserCode(1,:);
y = ds_mod(c(:),x);

%add other users' signal as interference
for t = 2:1:K,
   tmp_x = bingen(x_num); 
   tmp   = UserCode(t,:);
   tmp_y = ds_mod(tmp(:),tmp_x);
   y = y + tmp_y;
end % t

%scale by appropriate power factor
y = sqrt(p)*y;

%add AWGN to signal
y = awgn_complex(y,1);

%DS-SS demodulate symbols with user code
x_de = real(ds_demod(conj(c(:)),y));

%decision
x_de(find(x_de < 0)) = -1;
x_de(find(x_de >=0)) =  1;

Pe = length(find(x - x_de))/x_num;
Plot_Pe = [Plot_Pe Pe];
end %end for EbNo

%display the calculated Pd and Pfa
Plot_Pe

%plot Pe versus Eb/No
%subplot(2,1,1)
semilogy(plot_EbNo,Plot_Pe,'m*-')
xlabel('Eb/No (dB)')
ylabel('BER')
title('BER versus Eb/No using slow FH-MA: perfect synchronism between users');
grid on;