我不确定为什么我不能在Scilab中这样做。
-->foo=zeros(500);
-->foo(300)
!--error 21
Invalid index.
为什么我会收到“无效索引”错误?我以为我已经将foo初始化为一个包含500个元素的数组,每个元素都被设置为0?
答案 0 :(得分:2)
在Scilab中,您必须同时提供行数和列数。因此,如果要创建500x500矩阵,则需要说零(500,500)。如果你想要一个500x1向量,你需要说零(500,1)。
如果要创建一个零行矩阵,其行和列与另一个矩阵(例如A)一样多,则需要使用零(A)。这就是混乱的源头所在。
在Scilab中,零(500)将500作为1x1矩阵并生成大小为1x1的零矩阵,即[0]。在MATLAB中,假设一个方阵,零(500)将需要500作为所需矩阵的大小。
答案 1 :(得分:1)
如果Scilab中的zeros
与Matlab中的zeros
行为相同,则调用zeros(500)
会创建一个500x500的0数组。也就是说,foo(300)
将是一个有效的Matlab表达式,因为Matlab在秩大于1的数组上理解它所谓的“线性索引”。
如果Scilab中的zeros
机器人的行为与Matlab中的zeros
一样,我无能为力。
答案 2 :(得分:0)
的printf( “%d \ n” 个,MD(Y,U)) ! - 错误21 Índiceinválido。 在exec文件的第69行调用:
como soluciono esto?