📄 new_error_rate.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%求得误码率和误比特率随信噪比的变化曲线%
%在不通的信噪比下进行仿真,并且在同一信噪比下经过多次仿真求平均值%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display('程序正在执行。。。');
clear;
n=100; %每次仿真信源产生的二进制个数
%先进行BPSK仿真
format long e;
z=10; %对每个信噪比仿真次数
index=1;
cer1=zeros(11,z);
ber1=zeros(11,z);
kk=0;
for SNR=0:1:10 %信噪比从0到10db仿真
kk=kk+1;
for jj=1:1:z %对每个信噪比仿真z次求平均值
[cer,ber]=new_psk_performance(n,index,SNR);
cer1(kk,jj)=cer;
ber1(kk,jj)=ber;
end;
end;
kk=0;
cer_average1=zeros(1,11);
ber_average1=zeros(1,11);
for SNR=0:1:10
kk=kk+1;
cer_average1(kk)=sum(cer1(kk,:))/z;
ber_average1(kk)=sum(ber1(kk,:))/z;
end;
%display(kk);
display(cer_average1);
%display(ber_average1);
SNR=0:1:10;
%下面求理论误码率 在BPSK下误码率和误比特率相等
format long e;
d=sqrt(8*SNR); %求偏移系数d,在BPSK下两个信号反相,相关系数等于-1
%Pe=Q(d/2)
%display(d);
pe=0.5*erfc((d/2)/sqrt(2)); %理论误码率,Q函数Q(x)=0.5*erfc(x/sqrt(2));
display(pe);
subplot(121);
semilogy(SNR,cer_average1,'-',SNR,pe,'--');
grid on;
title('BPSK信号检测的误码率和理论误码率曲线');
xlabel('SNR/dB');
ylabel('Pe');
legend('-检测误码率曲线','--理论误码率曲线');
axis([0,10,0.0000001,1]);
clear;
n=100;
index=2; %QPSK仿真,求得误码率和误比特率曲线
format long e;
z=10; %对每个信噪比仿真次数
cer2=zeros(15,z);
ber2=zeros(15,z);
kk=0;
for SNR=0:1:14 %信噪比从0到14db仿真
kk=kk+1;
for jj=1:1:z %对每个信噪比仿真z次求平均值
[cer,ber]=new_psk_performance(n,index,SNR);
cer2(kk,jj)=cer;
ber2(kk,jj)=ber;
end;
end;
kk=0;
cer_average2=zeros(1,15);
ber_average2=zeros(1,15);
for SNR=0:1:14
kk=kk+1;
cer_average2(kk)=sum(cer2(kk,:))/z;
ber_average2(kk)=sum(ber2(kk,:))/z;
end;
%display(kk);
display(cer_average2);
display(ber_average2);
SNR=0:1:14;
%下面求理论误码率
d=sqrt(8*SNR); %求偏移系数d,在BPSK下两个信号反相,相关系数等于-1
%display(d);
pe=0.5*erfc((d/2)/sqrt(2)); %理论误码率,Q函数Q(x)=0.5*erfc(x/sqrt(2));
display(pe);
subplot(122);
semilogy(SNR,cer_average2,'-',SNR,ber_average2,'.',SNR,pe,'--');
grid on;
title('QPSK信号检测的误码率与误比特率和理论误码率曲线');
xlabel('SNR/dB');
ylabel('Pe');
legend('-检测误码率曲线','...检测误比特率','--理论误码率曲线');
axis([0,14,0.0000001,1]);
format;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -