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

通讯编程文档

开发平台:

Matlab

  1. function [p]=smldP511(snr_in_dB)
  2. % [p]=smldP511(snr_in_dB)
  3. % SMLDP511  simulates the probability of error for the given
  4. %    snr_in_dB, signal-to-noise ratio in dB, for the system 
  5. %    described in Illustrated Problem 5.11.
  6. M=4;     % quaternary biorthogonal signaling
  7. E=1;
  8. SNR=exp(snr_in_dB*log(10)/10);     % signal-to-noise ratio per bit
  9. sgma=sqrt(E^2/(4*SNR));       % sigma, standard deviation of noise
  10. N=10000;       % number of symbols being simulated
  11. % generation of the quaternary data source
  12. for i=1:N,
  13.    temp=rand;           % uniform random variable over (0,1)
  14.    if (temp<0.25),
  15.       dsource(i)=0; 
  16.    elseif (temp<0.5),
  17.       dsource(i)=1; 
  18.    elseif (temp<0.75),
  19.       dsource(i)=2; 
  20.    else
  21.       dsource(i)=3; 
  22.    end
  23. end;
  24. % detection, and error probability computation
  25. numoferr=0;
  26. for i=1:N,
  27.    % the matched filter outputs
  28.    if (dsource(i)==0)
  29.       r0=sqrt(E)+gngauss(sgma);
  30.       r1=gngauss(sgma);
  31.    elseif (dsource(i)==1)
  32.       r0=gngauss(sgma);
  33.       r1=sqrt(E)+gngauss(sgma);
  34.    elseif (dsource(i)==2)
  35.       r0=-sqrt(E)+gngauss(sgma);
  36.       r1=gngauss(sgma);
  37.    else
  38.       r0=gngauss(sgma);
  39.       r1=-sqrt(E)+gngauss(sgma);
  40.    end;
  41.    % detector follows
  42.    if (r0>abs(r1)),
  43.       decis=0;
  44.    elseif (r1>abs(r0)),
  45.       decis=1;
  46.    elseif (r0<-abs(r1)),
  47.       decis=2;
  48.    else
  49.       decis=3;
  50.    end;
  51.    if (decis~=dsource(i)),      % If it is an error, increase the error counter.
  52.       numoferr=numoferr+1;
  53.    end;
  54. end;
  55. p=numoferr/N;                 % bit error probability estimate