www.gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第8章/Qxiufun.m

    function y=Qxiufun(x)
y=(1/2)*erfc(x/sqrt(2));

function p=xiumoto(s_in_dB)
N=1000;d=1;
Eav=10*d^2;
snr=10^(s_in_dB/10);
sgma=sqrt(Eav/(8*snr));
M=16;
for i=1:N
    temp=rand;
    dsource(i)=1+floor(M*temp);
end
mapping=[-3*d 3*d;-d 3*d;d 3*d;3*d 3*d;-3*d d;-d d;d d;3*d d;...
        -3*d -d;-d -d;d -d;3*d -d;-3*d -3*d;-d -3*d;d -3*d;3*d -3*d];
for i=1:N
    q_sig(i,:)=mapping(dsource(i),:);
end
for i=1:N
    n=gngauss(sgma);     %产生高斯随机噪声
    r(i,:)=q_sig(i,:)+n; %在信号上叠加噪声
end
numoferr=0;
for i=1:N
    for j=1:M
        metrics(j)=(r(i,1)-mapping(j,1))^2+(r(i,2)-mapping(j,2))^2;
    end
    [m_metrics decis]=min(metrics);
    if(decis~=dsource(i))     %若出现错误情况,误比特数为1
        numoferr=numoferr+1;
    end
end
p=numoferr/(N);