2019独角兽企业重金招聘Python工程师标准>>>
主程序:
%计算蒙特卡洛仿真误码率
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文件的命令一行一行回显在命令窗口观察执行效果