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

通讯编程文档

开发平台:

Matlab

  1. function [p]=ss_Pe97(rho_in_dB)
  2. % [p]=ss_Pe97(rho_in_dB)
  3. % SS_PE97  finds the measured error rate. The value of
  4. %    signal per interference ratio in dB is given as an input 
  5. %    to the function.
  6. rho=10^(rho_in_dB/10);
  7. Eb=rho; % energy per information bit
  8. E=Eb/2; % energy per symbol transmitted
  9. % the optimal value of alpha 
  10. if (rho>2),
  11.   alpha=2/rho;
  12. else
  13.   alpha=1;
  14. end;
  15. % the variance of the additive noise 
  16. if (E>1),
  17.   sgma=sqrt(E/2);
  18. else
  19.   sgma=sqrt(1/2);
  20. end;
  21. N=10000;               % number of bits transmitted
  22. % generation of the data sequence
  23. for i=1:N,
  24.   temp=rand;
  25.   if (temp<0.5)
  26.     data(i)=1;
  27.   else
  28.     data(i)=0;
  29.   end;
  30. end;
  31. % Find the transmitted signals.
  32. for i=1:N,
  33.   if (data(i)==0),
  34.     tr11c(i)=sqrt(E);  tr12c(i)=sqrt(E);
  35.     tr11s(i)=0;  tr12s(i)=0;
  36.     tr21c(i)=0;  tr22c(i)=0;
  37.     tr21s(i)=0;  tr22s(i)=0;
  38.   else
  39.     tr11c(i)=0;  tr12c(i)=0;
  40.     tr11s(i)=0;  tr12s(i)=0;
  41.     tr21c(i)=sqrt(E);  tr22c(i)=sqrt(E);
  42.     tr21s(i)=0;  tr22s(i)=0;
  43.   end;
  44. end;
  45. % Find the received signals, make the decisions, and count the number of errors made.
  46. num_of_err=0;
  47. for i=1:N,
  48.   % determine if there is jamming 
  49.   if (rand<alpha),
  50.     jamming1=1;         % jamming present on the second transmission
  51.   else
  52.     jamming1=0;         % jamming not present on the first transmission
  53.   end;
  54.   if (rand<alpha),
  55.     jamming2=1;         % jamming present on the second transmission
  56.   else
  57.     jamming2=0;         % jamming not present on the second transmission
  58.   end;
  59.   % The received signals are
  60.   if (jamming1==1)
  61.     r11c=tr11c(i)+gngauss(sgma);    r11s=tr11s(i)+gngauss(sgma);
  62.     r21c=tr21c(i)+gngauss(sgma);    r21s=tr21s(i)+gngauss(sgma);
  63.   else
  64.     r11c=tr11c(i);    r11s=tr11s(i);
  65.     r21c=tr21c(i);    r21s=tr21s(i);
  66.   end;
  67.   if (jamming2==1)
  68.     r12c=tr12c(i)+gngauss(sgma);    r12s=tr12s(i)+gngauss(sgma);
  69.     r22c=tr22c(i)+gngauss(sgma);    r22s=tr22s(i)+gngauss(sgma);
  70.   else
  71.     r12c=tr12c(i);    r12s=tr12s(i);
  72.     r22c=tr22c(i);    r22s=tr22s(i);
  73.   end;
  74.   % Compute the decision variables, first the weights.
  75.   if (jamming1==1),
  76.     w1=1/sgma^2;
  77.   else
  78.     w1=10;
  79.   end;
  80.   if (jamming2==1),
  81.     w2=1/sgma^2;
  82.   else
  83.     w2=10;
  84.   end;
  85.   % The intermediate decision variables are computed as follows.
  86.   r11=r11c^2+r11s^2;
  87.   r12=r12c^2+r12s^2;
  88.   r21=r21c^2+r21s^2;
  89.   r22=r22c^2+r22s^2;
  90.   % Finally, the resulting decision variables x and y are computed.
  91.   x=w1*r11+w2*r12;
  92.   y=w1*r21+w2*r22;
  93.   % Make the decision.
  94.   if (x>y),
  95.     decis=0;
  96.   else
  97.     decis=1;
  98.   end;
  99.   % Increment the counter if this is an error.
  100.   if (decis~=data(i)),
  101.     num_of_err=num_of_err+1;
  102.   end;
  103. end;
  104. % The measured bit error rate is then
  105. p=num_of_err/N;