2014-02-16 27 views
0

我在尝试填充数组时遇到了MatLab中的此错误。 MatLab说,赋值B(j, 1) = z(z-counter)包含一个负值或非整数值。但是,当我尝试执行代码后查看工作空间中的变量值时。
j =1, counter =1, z =1获取错误“下标索引必须是真正的正整数或逻辑”尽管工作空间表示我的可变全部= 1

for j= 1:1:totalSizeOfMatrix 
    if(j <= totalNumberInBottom) 
     if(mod(j, lengthOfBottomRow) == 1) 
      counter= counter +1; 
     end 
     z = mod(j,lengthOfBottomRow); 
     B(j,1) = z(z-counter); 
    end 
    if(j > totalNumberInBottom && j <= totalNumberNotInTop) 
     if(mod(j, lengthOfSecondRow) == 1) 
      counter= counter +1; 
     end 
     z = mod(j,lengthOfSecondRow); 
     B(j,1) = z(z-counter); 
    end 
    if(j > totalNumberInBottom) 
     if(mod(j, lengthOfTopRow) == 1) 
      counter= counter +1; 
     end 
     z = mod(j,lengthOfTopRow); 
     B(j,1) = z(z-counter); 
    end 
end 
+1

MATALB索引从1开始。因此,z(0)无效。 –

+0

另请参见[此问题](http://stackoverflow.com/questions/20054047/subscript-indices-must-either-be-real-positive-integers-or-logicals-generic-sol)[通用方法] (http://stackoverflow.com/a/20054048/983722)来处理这个错误。 –

回答

1

如果z = 1counter = 1,然后z - counter为零。

因此,z(z-counter)正试图访问z(0),这是一个错误。

相关问题