1

我不确定为什么我不能在 Scilab 中做到这一点。

-->foo=zeros(500);

-->foo(300)
         !--error 21 
Invalid index.

为什么我会收到“无效索引”错误?我以为我已经将 foo 初始化为一个包含 500 个元素的数组,每个元素都设置为 0?

4

3 回答 3

2

在 Scilab 中,您必须同时提供行数和列数。所以,如果你想创建一个 500x500 的矩阵,你需要说 zeros(500, 500)。如果你想要一个 500x1 的向量,你需要说 zeros(500, 1)。

如果要创建一个行和列与另一个矩阵(例如 A)完全相同的 zeros 矩阵,则需要说 zeros(A)。这就是混乱的根源。

在 Scilab 中,zeros(500) 将 500 作为 1x1 矩阵并生成大小为 1x1 的 zeros 矩阵,即 [0]。在 MATLAB 中,zeros(500) 将采用 500 作为所需矩阵的大小,假设为方阵。

于 2010-11-09T15:07:44.597 回答
1

如果zeros在 Scilab 中的行为就像zeros在 Matlab 中一样,则调用zeros(500)会创建一个 500x500 的 0 数组。也就是说,这foo(300)将是一个有效的 Matlab 表达式,因为 Matlab 理解它所谓的对秩大于 1 的数组的“线性索引”。

如果zeros在 Scilab 中机器人的行为就像zeros在 Matlab 中一样,我将无能为力。

于 2010-11-06T10:46:41.537 回答
0

printf("%d\n",Md(y,u)) !--错误 21 无效。在 exec 文件的第 69 行调用:

como soluciono esto?

于 2014-05-19T17:39:31.043 回答