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

通讯编程文档

开发平台:

Matlab

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