位置 1 处的索引超出数组边界。索引不能超过 1。 出错 VisCrypt (第 39 行) share2((a),(2*b-1):(2*b))=pixShare(2,1:2);
时间: 2023-11-30 18:04:20 浏览: 160
这个错误通常意味着您正在尝试写入一个超出数组边界的元素。在这种情况下,您正在尝试写入 `share2` 的一个索引位置,该位置超出了 `share2` 的列数。
在这个特定的代码中,我认为问题可能在于 `share2` 的第二个维度的大小不足以容纳 `2*b`。您可以尝试打印 `s` 和 `b` 的值以进行调试,以查看它们的实际值。如果 `s(2) < 2 * b`,则您需要扩展 `share2` 的大小。
您可以在代码中添加以下行来扩展 `share2` 的大小:
```matlab
if 2*b > size(share2, 2)
share2 = [share2, zeros(size(share2, 1), 2*b - size(share2, 2))];
end
```
这将在必要时给 `share2` 添加额外的列。将此行添加到黑色像素处理循环的顶部,并在 `share2` 赋值语句之前运行,以确保 `share2` 具有足够的列数。
相关问题
位置 1 处的索引超出数组边界。索引不能超过 1。 出错 VisCrypt (第 39 行) share2((a),(2b-1):(2b))=pixShare(2,1:2);
这个错误通常意味着您正在尝试写入一个超出数组边界的元素。在这种情况下,您正在尝试写入 `share2` 的一个索引位置,该位置超出了 `share2` 的列数。
在这个特定的代码中,我认为问题可能在于表达式 `(2b-1):(2b)` 中未使用乘号 `*`,导致 Matlab 将 `2b` 解释为一个变量名,而不是乘积。
您可以将表达式更改为 `(2*b-1):(2*b)`,以确保正确计算列索引。
以上代码出现了问题White Pixel Processing... 位置 1 处的索引超出数组边界。索引不能超过 1。 出错 VisCrypt (第 39 行) share2((a),(2b-1):(2b))=pixShare(2,1:2);
这个错误提示意味着在执行以下代码时有错误:
```
share2((a),(2*b-1):(2*b))=pixShare(2,1:2);
```
这是由于 `b` 没有被正确地放在括号中,导致 `2b-1` 和 `2b` 没有被解释为正确的表达式。为了解决这个问题,你应该在 `(2*b-1)` 和 `(2*b)` 周围加上括号,像这样:
```
share2((a),((2*b-1):(2*b)))=pixShare(2,1:2);
```
这样就可以正确地将 `pixShare(2,1:2)` 分配给 `share2` 数组中的相应位置。
阅读全文