Ss_pe94.m
上传用户:loeagle
上传日期:2013-03-02
资源大小:1236k
文件大小:2k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function [p]=ss_Pe94(snr_in_dB, Lc, A, w0)
  2. % [p]=ss_Pe94(snr_in_dB, Lc, A, w0)
  3. % SS_PE94  finds the measured error rate. The function 
  4. %    that returns the measured probability of error for the given value of 
  5. %    the snr_in_dB, Lc, A and w0.
  6. snr=10^(snr_in_dB/10);
  7. sgma=1;        % Noise standard deviation is fixed.
  8. Eb=2*sgma^2*snr;       % signal level required to achieve the given 
  9.        % signal-to-noise ratio
  10. E_chip=Eb/Lc;        % energy per chip
  11. N=10000;        % number of bits transmitted
  12. % The generation of the data, noise, interference, decoding process and error
  13. % counting is performed all together in order to decrease the run time of the 
  14. % program. This is accomplished by avoiding very large sized vectors.
  15. num_of_err=0;
  16. for i=1:N,
  17.   % Generate the next data bit.
  18.   temp=rand;
  19.   if (temp<0.5),
  20.     data=-1;
  21.   else
  22.     data=1;
  23.   end;
  24.   % Repeat it Lc times, i.e. divide it into chips.
  25.   for j=1:Lc,
  26.     repeated_data(j)=data;
  27.   end;
  28.   % pn sequence for the duration of the bit is generated next
  29.   for j=1:Lc,
  30.     temp=rand;
  31.     if (temp<0.5),
  32.       pn_seq(j)=-1;
  33.     else
  34.       pn_seq(j)=1;
  35.     end;
  36.   end;
  37.   % the transmitted signal is
  38.   trans_sig=sqrt(E_chip)*repeated_data.*pn_seq;
  39.   % AWGN with variance sgma^2
  40.   noise=sgma*randn(1,Lc);
  41.   % interference 
  42.   n=(i-1)*Lc+1:i*Lc;
  43.   interference=A*sin(w0*n);
  44.   % received signal
  45.   rec_sig=trans_sig+noise+interference;
  46.   % Determine the decision variable from the received signal.
  47.   temp=rec_sig.*pn_seq;
  48.   decision_variable=sum(temp);
  49.   % making decision
  50.   if (decision_variable<0),
  51.     decision=-1;
  52.   else
  53.     decision=1;
  54.   end;
  55.   % If it is an error, increment the error counter.
  56.   if (decision~=data),
  57.     num_of_err=num_of_err+1;
  58.   end;
  59. end;
  60. % then the measured error probability is
  61. p=num_of_err/N;