biterr那一行仍然显示左侧和右侧的大小不兼容
时间: 2024-02-28 18:51:58 浏览: 86
非常抱歉,我发现我之前的修改有误,看来还需要再修改一下,把第19行的decmsg改成一个矩阵来存储每个比特的判决结果:
```
clear all
nsamp=10;
s0=ones(1,nsamp);
s1=[-ones(1,nsamp/2) ones(1,nsamp/2)];
nsymbol=100000;
EbN0=0:12;
msg=randi([0,1],1,nsymbol);
s00=zeros(1,nsymbol);
s11=zeros(1,nsymbol);
indx=find(msg==0); %比特0在发送消息中的位置
s00(indx)=1;
s00=kron(s00, s0); %比特0影射为发送波形s0
indx1=find(msg==1); %比特1在发送消息中的位置
s11(indx1)=1;
s11=kron(s11, s1); %比特1映射为发送波形s1
s=s00+s11; %总的发送波形
s=s.'; %数据转置,方便接收端处理
for indx=1:length(EbN0)
decmsg=zeros(nsymbol,1);
r=awgn(s,EbN0(indx)-7); %通过AWGN信道
r00=s0*r.'; %与s0相关
r11=s1*r.'; %与s1相关
indx1=find(r11>=r00);
decmsg(indx1)=1; %判决
[err,ber(indx)]=biterr(msg,decmsg);
end
semilogy(EbN0, ber, '-ko', EbN0, qfunc(sqrt(10.^(EbN0/10))));
title('二进制正交信号误比特率性能')
xlabel('EbN0');ylabel('误比特率Pe')
legend('仿真结果理论结果')
```
主要是将decmsg从一维向量改成一个列向量,存储每个比特的判决结果,以匹配msg的列向量形式。这样就不会出现左右大小不兼容的问题了。希望这次修改可以解决问题。
阅读全文