⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smldpe59.m

📁 M=4正交信号时数字通信系统进行蒙特卡罗仿真程序
💻 M
字号:
function [p]=smldPe59(snr_in_dB)
% [p]=smldPe59(snr_in_dB)
%              SMLDPE59仿真求出以dB为单
%              位的指定信噪比的误码率.
M=4;             % 四进制正交信号
E=1;
SNR=exp(snr_in_dB*log(10)/10);    % 每比特信噪比
sgma=sqrt(E^2/(4*SNR));           % 噪声的标准偏差
N=10000;                          % 被仿真符号的数目
% 四进制数据源的产生
for i=1:N,
    temp=rand;                    % 在(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;
    end
end;
% 判决和误码率计算
numoferr=0;
for i=1:N,
    % 匹配滤波器输出
    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;
    % 判决器
    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;
    % 计算在本次判决中比特误差的数目
    if(decis1~=dsource1(i)),               % 如果出错,计错器加1.
        numoferr=numoferr+1;
    end;
    if(decis2~=dsource2(i)),               % 如果出错,计错器加1.
        numoferr=numoferr+1;
    end;
end;
p=numoferr/(2*N);                          % 比特误码率估算
    

⌨️ 快捷键说明

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