采用检测器输入作为仿真对象重新仿真上题
时间: 2023-07-07 20:38:13 浏览: 191
我理解您的意思是将检测器输出作为仿真对象重新仿真,以下是修改后的代码:
```
clear all
nsamp=10;
s0=ones(1,nsamp);
s1=-s0;
nsymbol=100000;
EbN0=0:10;
msg=randi([0 1],1,nsymbol);
s00=zeros(nsymbol,1);
s11=zeros(nsymbol,1);
indx=find(msg==0);
s00(indx)=1;
s00=kron(s00,s0)';
indx1=find(msg==1);
s11(indx1)=1;
s11=kron(s11,s1)';
s=s00+s11;
for indx=1:length(EbN0)
decmsg=zeros(1,nsymbol);
r=awgn(s,EbN0(indx)-7,'measured');
r00=s0*r;
indx1=find(r00<0);
decmsg(indx1)=1;
r11=s1*r;
indx2=find(r11>=0); % 使用检测器输出
decmsg(indx2)=1;
[err,ber(indx)]=biterr(msg,decmsg);
end
semilogy(EbN0,ber,'-ko',EbN0,qfunc(sqrt(10. ^(EbN0/10))),'-k*',EbN0,qfunc(sqrt(2*10.^(EbN0/10))));
title('双极性信号误比特率性能')
xlabel('EbN0');
ylabel('误比特率Pe')
legend('仿真结果','理论结果(EbNo)','理论结果(EbN0/2)')
```
将检测器的输出作为决策依据可以更好地反映实际情况,此处使用了接收到的信号经过s1乘积后的结果作为检测器的输入,当检测器输出大于等于0时,认为接收到的信号为1。
阅读全文