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

通讯编程文档

开发平台:

Matlab

  1. function [p]=ss_Pe96(rho_in_dB)
  2. % [p]=ss_Pe96(rho_in_dB)
  3. % SS_PE96  finds the measured error rate. The value of
  4. %    signal per interference ratio in dB is given as an 
  5. %    input to the function.
  6. rho=10^(rho_in_dB/10);
  7. Eb=rho;        % energy per bit
  8. if (rho>2),
  9.   alpha=2/rho;        % optimal alpha if rho>2
  10. else
  11.   alpha=1;        % optimal alpha if rho<2
  12. end;
  13. sgma=sqrt(1/(2*alpha));        % noise standard deviation
  14. N=10000;               % number of bits transmitted
  15. % generation of the data sequence
  16. for i=1:N,
  17.   temp=rand;
  18.   if (temp<0.5)
  19.     data(i)=1;
  20.   else
  21.     data(i)=0;
  22.   end;
  23. end;
  24. % Find the received signals.
  25. for i=1:N,
  26.   % the transmitted signal
  27.   if (data(i)==0),
  28.     r1c(i)=sqrt(Eb);
  29.     r1s(i)=0;
  30.     r2c(i)=0;
  31.     r2s(i)=0;
  32.   else
  33.     r1c(i)=0;
  34.     r1s(i)=0;
  35.     r2c(i)=sqrt(Eb);
  36.     r2s(i)=0;
  37.   end;
  38.   % The received signal is found by adding noise with probability alpha.
  39.   if (rand<alpha),
  40.     r1c(i)=r1c(i)+gngauss(sgma);
  41.     r1s(i)=r1s(i)+gngauss(sgma);
  42.     r2c(i)=r2c(i)+gngauss(sgma);
  43.     r2s(i)=r2s(i)+gngauss(sgma);
  44.   end;
  45. end;
  46. % Make the decisions and count the number of errors made.
  47. num_of_err=0;
  48. for i=1:N,
  49.   r1=r1c(i)^2+r1s(i)^2;         % first decision variable
  50.   r2=r2c(i)^2+r2s(i)^2;    % second decision variable
  51.   % Decision is made next.
  52.   if (r1>r2),
  53.     decis=0;
  54.   else
  55.     decis=1;
  56.   end;
  57.   % Increment the counter if this is an error.
  58.   if (decis~=data(i)),
  59.     num_of_err=num_of_err+1;
  60.   end;
  61. end;
  62. % measured bit error rate is then
  63. p=num_of_err/N;