蒙特卡罗仿真双极性数字基带系统在…

主程序:

%计算蒙特卡洛仿真误码率

SNRindB1=0:1:12%信噪比数组(单位dB),用于蒙特卡洛仿真
SNRindB2=0:0.01:12;%同上,用于误码率理论计算

求蒙特卡洛计算对应不同初始信噪比的误码率
for i=1:length(SNRindB1)  

 smld_err_prb(i)=exa0308_Fun_singlePe(SNRindB1(i));
end

%作误码率的对数图
semilogy(SNRindB1,smld_err_prb,'r*');

%计算理论误码率
for i=1:length(SNRindB2)
    SNR=10^(SNRindB2(i)/10);%把dB值转换为倍数
    theo_err_prb(i)=(1/2)*erfc(sqrt(SNR/4));
end
hold on
semilogy(SNRindB2,theo_err_prb);
grid on

子函数:

function [p]=exa038_Fun_singlePe(snr_in_dB)
E=1;
SNR=10^(snr_in_dB/10);
sgma=E/sqrt(2*SNR);%计算理论方差
N=10000;
disource=(sign(rand(1,N)-0.5)+1)/2;
numoferr=0;
for i=1:length(disource)
    if disource(i)==1
        r=E+randn*sgma;%对应接收信号
    else
        r=0+randn*sgma;
    end
    if(r>0.5*E)%判决门限为A/2
        decis=1;
    else
        decis=0;
    end
    if(decis~=disource(i))
        numoferr=numoferr+1;
    end
end
p=numoferr/N;

蒙特卡罗仿真双极性数字基带系统在不同信噪比下的误码率曲线

echon on 作用:把m文件的命令一行一行回显在命令窗口观察执行效果


你可能感兴趣的:(matlab建模仿真)