bpnetTest cellRow = 73.8000 cellCol = 98 下标索引必须为正整数类型或逻辑类型。 出错 bpnetTest (line 15) if(A(currentRow*cellRow+i,currentCol*cellCol+j)==0)
时间: 2024-03-10 20:47:15 浏览: 17
根据你给出的错误信息,可以看出问题出现在第15行,即访问像素值时出现了下标索引必须为正整数类型或逻辑类型的错误。这说明在访问像素值时,使用了非正整数类型或逻辑类型的值。
根据代码,可以看出 cellRow 和 cellCol 变量的值分别为 73.8 和 98,这说明在计算像素值时,可能出现了小数类型的下标索引,导致程序出现错误。
为了解决这个问题,你需要确保在访问像素值时,使用的下标索引必须为正整数类型。你可以尝试使用 floor 函数将小数类型的下标索引转换为整数类型,例如:
```matlab
if(A(floor(currentRow*cellRow)+i, floor(currentCol*cellCol)+j) == 0)
```
这样可以避免出现下标索引类型错误的问题。如果还有其他问题,可以继续提问。
相关问题
bpnetTest cellRow = 24 cellCol = 54 class = 0.2470 0.9047 0.1308 0.5859 下标索引必须为正整数类型或逻辑类型。 出错 bpnetTest (line 27) subplot(122),imshow([(name1(class)),'.png']),title(['该字母被识别为:']);
这个错误是因为在使用数组索引时使用了一个浮点数,而数组的索引必须是整数或逻辑类型。具体来说,class是一个包含了4个浮点数的向量,它是神经网络的输出结果。在这里,应该将class转化为一个整数表示识别结果的下标,然后再使用它来获取对应的字母名称。可以使用MATLAB中的函数`find`来找到class中最大值所在的位置,即为识别结果的下标。例如,可以将下面这行代码:
```
class = bpnet(B');
```
改为:
```
[~,class] = max(bpnet(B'));
```
这样就可以得到正确的结果了。
下标索引必须为正整数类型或逻辑类型。 出错 yiqun1 (line 188) plkplk=plk(nonze
在Matlab中,下标索引必须是正整数类型或逻辑类型,否则会出现错误。在给变量赋值时,如果索引不是整数或逻辑类型,则会导致错误。根据您提供的代码,出错的地方是在第188行的yiqun1函数中,具体是在plkplk=plk(nonze处。
错误的原因是,plkplk变量的索引类型非法,可能是非整数或非逻辑类型。解决该错误的方法是对索引进行检查和修正,确保索引的类型是合法的整数或逻辑类型。