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

通讯编程文档

开发平台:

Matlab

  1. function [p]=smldPe57(snr_in_dB)
  2. % [p]=smldPe57(snr_in_dB)
  3. % SMLDPE57  simulates the probability of error for the given
  4. %    snr_in_dB, signal to noise ratio in dB.
  5. d=1;
  6. SNR=exp(snr_in_dB*log(10)/10);     % signal to noise ratio per bit
  7. sgma=sqrt((5*d^2)/(4*SNR));     % sigma, standard deviation of noise
  8. N=10000;       % number of symbols being simulated
  9. % generation of the quarternary data source follows
  10. for i=1:N,
  11.   temp=rand;           % a uniform random variable over (0,1)
  12.   if (temp<0.25),
  13.     dsource(i)=0;            % with probability 1/4, source output is "00"
  14.   elseif (temp<0.5),
  15.     dsource(i)=1;            % with probability 1/4, source output is "01"
  16.   elseif (temp<0.75),
  17.     dsource(i)=2;            % with probability 1/4, source output is "10"
  18.   else
  19.     dsource(i)=3;        % with probability 1/4, source output is "11"
  20.   end
  21. end;
  22. % detection, and probability of error calculation
  23. numoferr=0;
  24. for i=1:N,
  25.   % The matched filter outputs
  26.   if (dsource(i)==0),
  27.     r=-3*d+gngauss(sgma);   % if the source output is "00"
  28.   elseif (dsource(i)==1),
  29.     r=-d+gngauss(sgma);     % if the source output is "01"
  30.   elseif (dsource(i)==2)  
  31.     r=d+gngauss(sgma);      % if the source output is "10"
  32.   else
  33.     r=3*d+gngauss(sgma);    % if the source output is "11"
  34.   end;
  35.   % detector follows
  36.   if (r<-2*d),
  37.     decis=0;       % decision is "00"
  38.   elseif (r<0),
  39.     decis=1;       % decision is "01"
  40.   elseif (r<2*d),
  41.     decis=2;       % decision is "10"
  42.   else
  43.     decis=3;       % decision is "11"
  44.   end;
  45.   if (decis~=dsource(i)),    % if it is an error, increase the error counter
  46.     numoferr=numoferr+1;
  47.   end;
  48. end;
  49. p=numoferr/N;          % probability of error estimate