% 网关节点之间的退化 if ismember(i, gateway1) && sum(a1(i, gateway1) == 3) > floor(n_gateway1/2)+1 && n_gateway1 > 0 for j = 1:n_gateway1 if rand() < 0.5 && state1(gateway1(j)) == 0 state1(gateway1(j)) = 2; t_degrade(gateway1(j)) = t + t_degrade; end end end 位置 2 的索引无效。数组索引必须为正整数或逻辑值。 出错 oooo (line 782) if ismember(i, gateway1) && sum(a1(i, gateway1) == 3) > floor(n_gateway1/2)+1 && n_gateway1 > 0 怎么修改
时间: 2023-08-31 13:06:36 浏览: 103
连连看大作业_实验报告1
这个错误提示表明索引的位置必须为正整数或逻辑值,而现在的位置可能不符合这个要求。根据这个错误提示,我们可以检查代码中是否有使用了非正整数或逻辑值的索引。
在这段代码中,问题可能出现在第8行,即 `state1(gateway1(j)) = 2;`,因为 `gateway1(j)` 可能不是正整数或逻辑值。
为了解决这个问题,我们可以将 `gateway1(j)` 转换为整数,可以使用 `round` 函数或者 `floor` 函数。具体地,将第8行修改为:
```
state1(round(gateway1(j))) = 2;
```
或者:
```
state1(floor(gateway1(j))) = 2;
```
这样就可以避免该错误了。
阅读全文