尝试访问数组元素时 Scilab 中出现无效索引错误
我不知道为什么我不能在 Scilab 中执行此操作。
-->foo=zeros(500);
-->foo(300)
!--error 21
Invalid index.
为什么我会收到“无效索引”错误?我以为我已经将 foo 初始化为一个包含 500 个元素的数组,每个元素都设置为 0?
I'm not sure why I can't do this in Scilab.
-->foo=zeros(500);
-->foo(300)
!--error 21
Invalid index.
Why do I get the 'Invalid index' error? I thought I had initialized foo as an array with 500 elements, each of which was set to 0?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Scilab 中,您必须同时给出行数和列数。所以,如果你想创建一个 500x500 矩阵,你需要说 Zeros(500, 500)。如果你想要一个 500x1 的向量,你需要说 Zeros(500, 1)。
如果要创建一个具有与另一个矩阵(例如 A)完全相同的行和列的零矩阵,则需要使用 Zeros(A)。这就是混乱的根源。
在 Scilab 中,zeros(500) 会将 500 作为 1x1 矩阵并生成大小为 1x1 的 Zeros 矩阵,即 [0]。在 MATLAB 中,假设是方阵,zeros(500) 将采用 500 作为所需矩阵的大小。
In Scilab, you have to give both the number of rows as well as the number of columns. So, if you want to create a 500x500 matrix, you need to say zeros(500, 500). If you want a 500x1 vector, you need to say zeros(500, 1).
If you want to create a zeros matrix that has precisely as many rows and columns as another matrix (say A), you need to say zeros(A). This is where the confusion stems from.
In Scilab, zeros(500) would take 500 as a 1x1 matrix and generate a zeros matrix of size 1x1, that is [0]. In MATLAB, zeros(500) would take 500 to be the size of the matrix required, assuming a square matrix.
如果 Scilab 中的
zeros
的行为与 Matlab 中的zeros
类似,则调用zeros(500)
将创建一个由 0 组成的 500x500 数组。也就是说,foo(300)
将是一个有效的 Matlab 表达式,因为 Matlab 理解它在秩大于 1 的数组上所谓的“线性索引”。如果 Scilab 中的
zeros
确实如此bot 的行为就像 Matlab 中的zeros
我无能为力。If
zeros
in Scilab behaves just likezeros
in Matlab the callzeros(500)
creates a 500x500 array of 0s. That said,foo(300)
would be a valid Matlab expression as Matlab understands what it calls 'linear indexing' on arrays of rank greater than 1.If
zeros
in Scilab does bot behave just likezeros
in Matlab I can't help.printf("%d\n",Md(y,u))
!--错误21
Índice 无效。
在 exec 文件的第 69 行调用:
como soluciono esto?
printf("%d\n",Md(y,u))
!--error 21
Índice inválido.
at line 69 of exec file called by :
como soluciono esto?