qammoto.m

来自「16QAM通信系统的MonteCalo仿真程序」· M 代码 · 共 33 行

M
33
字号
function [p]=qammoto(snr_in_dB)
N=1000;
d=1;                        %符号间的最小距离d
Eav=10*d^2;                 %每个符号的平均能量
snr=10^(snr_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
    qam_sig(i,:)=mapping(dsource(i),:);
end;
for i=1:N
     n=gngauss(sgma);                 %产生高斯随机噪声
     r(i,:)=qam_sig(i,:)+n;           %在信号上叠加噪声
end;
numoferr=0;                           %误比特数初始值置于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;       %若出现错误情况 误比特数增加1
  end;
end;
p=numoferr/(N);

⌨️ 快捷键说明

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