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

通讯编程文档

开发平台:

Matlab

  1. function [p]=smldPe59(snr_in_dB)
  2. % [p]=smldPe59(snr_in_dB)
  3. % SMLDPE59  simulates the error probability for the given
  4. %    snr_in_dB, signal-to-noise ratio in dB.
  5. M=16;     % 16-ary PAM
  6. d=1;
  7. SNR=exp(snr_in_dB*log(10)/10);     % signal-to-noise ratio per bit
  8. sgma=sqrt((85*d^2)/(8*SNR));     % sigma, standard deviation of noise
  9. N=10000;       % number of symbols being simulated
  10. % generation of the data source
  11. for i=1:N,
  12.    temp=rand;           % a uniform random variable over (0,1)
  13.    index=floor(M*temp);        % The index is an integer from 0 to M-1, where
  14.        % all the possible values are equally likely.
  15.    dsource(i)=index;
  16. end;
  17. % detection, and probability of error calculation
  18. numoferr=0;
  19. for i=1:N,
  20.   % matched filter outputs
  21.   % (2*dsource(i)-M+1)*d is the mapping to the 16-ary constellation.
  22.   r=(2*dsource(i)-M+1)*d+gngauss(sgma);  
  23.   % the detector 
  24.   if (r>(M-2)*d),
  25.     decis=15;
  26.   elseif (r>(M-4)*d),
  27.     decis=14;
  28.   elseif (r>(M-6)*d),
  29.     decis=13;
  30.   elseif (r>(M-8)*d),
  31.     decis=12;
  32.   elseif (r>(M-10)*d),
  33.     decis=11;
  34.   elseif (r>(M-12)*d),
  35.     decis=10;
  36.   elseif (r>(M-14)*d),
  37.     decis=9;
  38.   elseif (r>(M-16)*d),
  39.     decis=8;
  40.   elseif (r>(M-18)*d),
  41.     decis=7;
  42.   elseif (r>(M-20)*d),
  43.     decis=6;
  44.   elseif (r>(M-22)*d),
  45.     decis=5;
  46.   elseif (r>(M-24)*d),
  47.     decis=4;
  48.   elseif (r>(M-26)*d),
  49.     decis=3;
  50.   elseif (r>(M-28)*d),
  51.     decis=2;
  52.   elseif (r>(M-30)*d),
  53.     decis=1;
  54.   else
  55.     decis=0;     
  56.   end;
  57.   if (decis~=dsource(i)),   % If it is an error, increase the error counter.
  58.     numoferr=numoferr+1;
  59.   end;
  60. end;
  61. p=numoferr/N;         % probability of error estimate