Вы получаете эту ошибку, потому что во время выполнения этого цикла for
вы можете удалить некоторые столбцы. Поэтому размеры матрицы уменьшатся, и вы попытаетесь получить доступ к элементам, которые были перемещены в другое место.
Чтобы сделать то, что вы хотите, вы должны либо написать цикл while
, сохраняя индексы вручную. Другое решение состоит в том, чтобы векторизовать ваше решение, как показал итамар Кац. Это решение в большей степени соответствует MATLAB, чем запись цикла while
.
Но я заметил, что позволить случайному алгоритму излучать векторы случайной длины иногда бывает сложнее обрабатывать, чем векторы фиксированной длины. Поэтому вы можете захотеть построить свой вектор таким образом, чтобы вам даже не нужно было удалять такие записи, в зависимости от вашего приложения это может быть достигнуто путем генерации первой строки и других строк с различными инструкциями.