Smldpe59.m
上传用户:loeagle
上传日期:2013-03-02
资源大小:1236k
文件大小:2k
- function [p]=smldPe59(snr_in_dB)
- % [p]=smldPe59(snr_in_dB)
- % SMLDPE59 simulates the error probability for the given
- % snr_in_dB, signal-to-noise ratio in dB.
- M=16; % 16-ary PAM
- d=1;
- SNR=exp(snr_in_dB*log(10)/10); % signal-to-noise ratio per bit
- sgma=sqrt((85*d^2)/(8*SNR)); % sigma, standard deviation of noise
- N=10000; % number of symbols being simulated
- % generation of the data source
- for i=1:N,
- temp=rand; % a uniform random variable over (0,1)
- index=floor(M*temp); % The index is an integer from 0 to M-1, where
- % all the possible values are equally likely.
- dsource(i)=index;
- end;
- % detection, and probability of error calculation
- numoferr=0;
- for i=1:N,
- % matched filter outputs
- % (2*dsource(i)-M+1)*d is the mapping to the 16-ary constellation.
- r=(2*dsource(i)-M+1)*d+gngauss(sgma);
- % the detector
- if (r>(M-2)*d),
- decis=15;
- elseif (r>(M-4)*d),
- decis=14;
- elseif (r>(M-6)*d),
- decis=13;
- elseif (r>(M-8)*d),
- decis=12;
- elseif (r>(M-10)*d),
- decis=11;
- elseif (r>(M-12)*d),
- decis=10;
- elseif (r>(M-14)*d),
- decis=9;
- elseif (r>(M-16)*d),
- decis=8;
- elseif (r>(M-18)*d),
- decis=7;
- elseif (r>(M-20)*d),
- decis=6;
- elseif (r>(M-22)*d),
- decis=5;
- elseif (r>(M-24)*d),
- decis=4;
- elseif (r>(M-26)*d),
- decis=3;
- elseif (r>(M-28)*d),
- decis=2;
- elseif (r>(M-30)*d),
- decis=1;
- else
- decis=0;
- end;
- if (decis~=dsource(i)), % If it is an error, increase the error counter.
- numoferr=numoferr+1;
- end;
- end;
- p=numoferr/N; % probability of error estimate