snr2pb.m

来自「提供了使用matlab仿真2FSK误码率的源程序」· M 代码 · 共 46 行

M
46
字号
function p=snr2pb(snr_in_db)
N=10000;
eb=1;
snr=10^(snr_in_db/10);
sgma=sqrt(eb/(2*snr));
phi=0;
%生成输入数据
for i=1:N,
    temp=rand(i);
    if(temp<0.5),
        dsource(i)=0;
    else
        dsource(i)=1;
    end
end;
%检测并计算误码率
numoerr=0;
for i=1:N,
    %解调输出
    if (dsource(i)==0),
        r0c=sqrt(eb)*cos(phi)+gausamp(sgma);
        r0s=sqrt(eb)*sin(phi)+gausamp(sgma);
        r1c=gausamp(sgma);
        r1s=gausamp(sgma);
    else
        r0c=gausamp(sgma);
        r0s=gausamp(sgma);
        r1c=sqrt(eb)*cos(phi)+gausamp(sgma);
        r1s=sqrt(eb)*sin(phi)+gausamp(sgma);
    end;
    %平方率检测输出
    r0=roc^2+r0s^2;
    r1=r1c^2+r1s^2;
    %判决
    if (r0>r1),
        decis=0;
    else
        decis=1;
    end;
    %如果检测结果不正确,无码计算器加1
    if (decis~=dsource(i)),
        numoferr=numoferr+1;
    end;
end;
p=numoferr/(N);

⌨️ 快捷键说明

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