qammoto.m

来自「16QAM的误码率性能分析的matlab仿真」· M 代码 · 共 43 行

M
43
字号
function [p]=qammoto(snr_in_dB)
N=1000;
d=1;
Eav=10*d^2;
snr=10^(snr_in_dB/10);
sgma=sqrt(Eav/(8*snr));     % 16QAM调制的噪声的方差
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,
    qam_sig(i,:)=mapping(dsource(i),:);
end;

for i=1:N,
    n=gngauss(sgma);
    r(i,:)=qam_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;
    [min_metric decis]=min(metrics);
    if(decis~=dsource(i)),
        numoferr=numoferr+1;
    end;
end;

p=numoferr/(N);
    
    
    
    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?