位置 2 处的索引超出数组边界(不能超出 15)。 出错 Untitled (line 24) K(i,j) = sum(sum(w.*patch(row_min:row_max, col_min:col_max)))/sum(sum(w)); 怎么解决
时间: 2023-10-08 14:14:25 浏览: 105
关于C#索引超出了数组界限的问题??
4星 · 用户满意度95%
这个错误的意思是你试图访问一个数组的索引,而该索引超出了数组的边界。在这种情况下,您可以检查一下您的代码,看看是否有以下问题:
1. 您是否在循环中使用了错误的索引或超出了数组的大小?
2. 您是否使用了错误的变量或数据结构?
3. 您是否正确地初始化了数组?
对于您的代码,我认为问题出在您计算 K(i,j) 的时候,由于 row_min 和 col_min 可能小于 1,导致您访问了数组的负数索引。您可以在计算 K(i,j) 的时候,先把 patch(row_min:row_max, col_min:col_max) 中小于 1 的索引置为 0,即:
```matlab
patch(row_min:row_max, col_min:col_max) = max(patch(row_min:row_max, col_min:col_max), 0);
K(i,j) = sum(sum(w.*patch(row_min:row_max, col_min:col_max)))/sum(sum(w));
```
这样就能避免访问数组的负数索引了。
阅读全文