2010-11-06 3 views
1

Я не уверен, почему я не могу сделать это в Scilab.Неверная ошибка индекса в Scilab при попытке доступа к элементу массива

-->foo=zeros(500); 

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

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

ответ

1

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

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

+1

Oh ... Я предположил, что 'zeros (500)' создал массив 500x1. Если я делаю 'foo = нули (500, 1)', он работает. – Pieter

2

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

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

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

0

printf ("% d \ n", Md (y, u)) ! - ошибка 21 Índice inválido. в строке 69 файла exec, указанной по:

como soluciono esto?

+0

Пожалуйста, дайте ответ на английском языке – Lal

+0

Обратите внимание, что это вопрос, а не ответ: вам даже не нужно переводить, вопросительный знак показывает это. «Как я это решаю?» –