wumalu.m
来自「通信原理误码率的仿真程序MATLAB中开发」· M 代码 · 共 28 行
M
28 行
%误码率
s0=0;s1=1;
p0=0.4; %信源概率
p1=1-p0;
SNR_db=-5:0.5:20; %仿真信噪比范围
SNR=10.^(SNR_db./10);
ma=s1^2./SNR; %噪声方差范围
N=1e4;
for k=1:length(ma)
X=(rand(1,N)>p0); %信源产生
n=sqrt(ma(k)).*randn(1,N);%噪声
xi=s1.*X+n;
C_vd=(s0+s1)/2+ma(k)/(s1-s0)*log(p0./p1);%计算最佳判决门限
y=(xi>C_vd);%判决输出
err(k)=(sum(X-y~=0))./N;%误码率统计
end
semilogy(SNR_db,err,'o');hold on;
for k=1:length(ma)
C_vd=(s0+s1)./2+ma(k)./(s1-s0).*log(p0./p1);%计算最佳判决门限
pe0=0.5-0.5*erf((C_vd-s0)/(sqrt(2*ma(k))));%发零错误率
pe1=0.5+0.5*erf((C_vd-s1)/(sqrt(2*ma(k))));%发一错误率
pe(k)=p0*pe0+p1*pe1; %平均错误率
end
semilogy(SNR_db,pe);
xlabel('SNR(db)');
ylabel('p_e');
legend('仿真结果','理论曲线');
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?