www.gusucode.com > UWB_matlab源码程序 > CP0901/cp0901_MUIBER_2PPM.m

    %
% Function 9.3 : "cp0901_MUIBER_2PPM"
%
% Evaluates the theoretical probability of error
% for a 2PPM system in AWGN channels under the
% Standard Gaussian Approximation
%
% 'ebno'     is a vector containing the values in dB of the %            ratio Eb/No
% 'erx0'     is the energy of the useful signal
% 'erxMUI'   is a vector containing the received energies
%            of the 
%            interfering users.
% 'pulse'    is the waveform of the basic pulse
% 'Rb'       is the user bit rate [b/s]
% 'PPMshift' is the value of the PPM shift [s]
% 'fc'       is the sampling time [Hz]
% 'gamma_r'  represents the ratio (Ts/(Tb/Ns))
%

function [BER] = cp0901_MUIBER_2PPM(ebno,erx0,erxMUI,...
   pulse,Rb,PPMshift,fc,gamma_r)

% ----------------------------------------------------
% Step One - Evaluation of the required constant terms
% ----------------------------------------------------

% R0(epsilon) [R]

  dt = 1 / fc;                      % sampling period
  PPM_samples = floor(PPMshift/dt);
  pulse_samples = length(pulse);
  Ep = sum((pulse.^2).*dt);
  pulse = pulse./sqrt(Ep);          % energy normalization  
  p0 = zeros(1,PPM_samples+pulse_samples);
  p0(1:length(pulse)) = pulse;
  p1 = cp0804_signalshift(p0,fc,PPMshift);
  R = sum((p0.*p1).*dt);

% (Sigma_m)^2 [sm2]

  sm2 = cp0901_sm2_PPM(pulse,PPMshift,fc);
  
% MUI energy summation [EMUI]

  EMUI = sum(erxMUI./erx0);
  
% -------------------------------------
% Step Two - Evaluation of SIR and SNRn
% -------------------------------------

SIR = (((1-R)^2)*gamma_r)/(sm2*Rb*EMUI);

EBN0 = 10.^(ebno/10);
SNRn = EBN0.*(1-R);

% -----------------------------------
% Step Three - Performance evaluation
% -----------------------------------

SNRref = 1./((1./SNRn)+(1/SIR));

BER = 0.5.*erfc(sqrt(SNRref./2));