Когда вы удаляете строку из матрицы, она больше не имеет row
строк, а row-1
. Поскольку вы не можете регулировать пределы цикла, вы будете индексировать вне диапазона. Кроме того, вы пропустите строку i+1
, если удалите строку i
.
Вместо этого сначала найдите все строки, которые необходимо удалить, а затем удалите их все сразу:
index = all(matrix == 0, 2);
matrix(index,:) = [];
Конечно, вы можете написать это в одной строке кода.