📄 smldp510.m
字号:
function [p]=smldP510(snr_in_dB)% [p]=smldP510(snr_in_dB)% SMLDP510 simulates the probability of error for the given% snr_in_dB, signal to noise ratio in dB.M=4; % quarternary orthogonal signallingE=1;SNR=exp(snr_in_dB*log(10)/10); % signal to noise ratio per bitsgma=sqrt(E^2/(4*SNR)); % sigma, standard deviation of noiseN=10000; % number of symbols being simulated% generation of the quarternary data sourcefor i=1:N, temp=rand; % a uniform random variable over (0,1) if (temp<0.25), dsource1(i)=0; dsource2(i)=0; elseif (temp<0.5), dsource1(i)=0; dsource2(i)=1; elseif (temp<0.75), dsource1(i)=1; dsource2(i)=0; else dsource1(i)=1; dsource2(i)=1; endend;% detection, and probability of error calculationnumoferr=0;for i=1:N, % matched filter outputs if ((dsource1(i)==0) & (dsource2(i)==0)), r0=sqrt(E)+gngauss(sgma); r1=gngauss(sgma); r2=gngauss(sgma); r3=gngauss(sgma); elseif ((dsource1(i)==0) & (dsource2(i)==1)), r0=gngauss(sgma); r1=sqrt(E)+gngauss(sgma); r2=gngauss(sgma); r3=gngauss(sgma); elseif ((dsource1(i)==1) & (dsource2(i)==0)), r0=gngauss(sgma); r1=gngauss(sgma); r2=sqrt(E)+gngauss(sgma); r3=gngauss(sgma); else r0=gngauss(sgma); r1=gngauss(sgma); r2=gngauss(sgma); r3=sqrt(E)+gngauss(sgma); end; % the detector max_r=max([r0 r1 r2 r3]); if (r0==max_r), decis1=0; decis2=0; elseif (r1==max_r), decis1=0; decis2=1; elseif (r2==max_r), decis1=1; decis2=0; else decis1=1; decis2=1; end; % count the number of bit errors made in this decision if (decis1~=dsource1(i)), % if it is an error, increase the error counter numoferr=numoferr+1; end; if (decis2~=dsource2(i)), % if it is an error, increase the error counter numoferr=numoferr+1; end;end;p=numoferr/(2*N); % bit error probability estimate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -