运行上述代码后仍然显示左侧索引与右侧大小不兼容,请修改
时间: 2024-02-27 13:52:13 浏览: 57
解决SQL SERVER 2008数据库表中修改字段后不能保存
这个错误通常是由于两个向量的维度不匹配引起的。在你提供的代码中,出现这个错误的原因是在计算误比特率时,没有正确初始化 `ber` 变量的大小。
在修改代码时,你需要将 `ber` 变量初始化为一个与 `EbN0` 变量大小相同的向量,例如:
```
ber = zeros(size(EbN0));
```
这将创建一个大小与 `EbN0` 变量相同的、元素值全部为零的向量,用于存储不同信噪比下计算得到的误比特率。
下面是修改后的代码:
```
clear all
nsamp = 10;
s0 = ones(1, nsamp);
s1 = [ones(1, nsamp/2) -ones(1, nsamp/2)];
nsymbol = 100000;
EbN0 = 0:12;
msg = randi(nsymbol, 1);
s00 = zeros(nsymbol, 1);
s11 = zeros(nsymbol, 1);
indx = find(msg == 0);
s00(indx) = 1;
s00 = s00 * s0;
indx1 = find(msg == 1);
s11(indx1) = 1;
s11 = s11 * s1;
s = s00 + s11;
s = s.';
ber = zeros(size(EbN0)); % 初始化 ber 变量
for indx = 1:length(EbN0)
decmsg = zeros(1, nsymbol);
r = awgn(s, EbN0(indx) - 7);
r00 = s0 * r;
r11 = s1 * r;
indx1 = find(r11 >= r00);
decmsg(indx1) = 1;
[err, ber(indx)] = biterr(msg, decmsg); % 修改 biterr 的输入参数顺序
end
semilogy(EbN0, ber, '-ko', EbN0, qfunc(sqrt(10.^(EbN0/10))));
title('二进制正交信号误比特率性能')
xlabel('EbN0'); ylabel('误比特率Pe')
legend('仿真结果', '理论结果')
```
阅读全文