Ошибка неверного индекса в Scilab при попытке доступа к элементу массива - PullRequest
1 голос
/ 06 ноября 2010

Я не уверен, почему я не могу сделать это в Scilab.

-->foo=zeros(500);

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

Почему я получаю ошибку «Неверный индекс»? Я думал, что инициализировал foo как массив из 500 элементов, каждый из которых был установлен в 0?

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010

В Scilab вы должны указать как количество строк, так и количество столбцов. Итак, если вы хотите создать матрицу 500x500, вам нужно сказать нули (500, 500). Если вы хотите вектор 500х1, вам нужно сказать нули (500, 1).

Если вы хотите создать матрицу нулей, в которой ровно столько строк и столбцов, сколько в другой матрице (скажем, A), вам нужно сказать нули (A). Отсюда и неразбериха.

В Scilab нули (500) принимают 500 в качестве матрицы 1x1 и генерируют матрицу нулей размером 1x1, то есть [0]. В MATLAB для нулей (500) в качестве размера требуемой матрицы было бы 500, предполагая квадратную матрицу.

1 голос
/ 06 ноября 2010

Если zeros в Scilab ведет себя так же, как zeros в Matlab, то вызов zeros(500) создает массив 500x500 из 0. Тем не менее, foo(300) было бы допустимым выражением Matlab, поскольку Matlab понимает то, что он называет «линейным индексированием» для массивов ранга больше 1.

Если zeros в Scilab действительно ведет себя бот как zeros в Matlab, я не могу помочь.

0 голосов
/ 19 мая 2014

printf ("% d \ n", Md (y, u))! - ошибка 21.в строке 69 exec-файла вызывается:

como soluciono esto?

...