команда matlab "any" сообщает вам, есть ли ненулевые элементы.
sum (Array (i,:, :) == 0) выдаст true для некоторых смесей положительных и отрицательных элементов (например, [1 1 -2]), что, вероятно, не способ сделать это.
Я бы хотел быть умным и рассказать вам, как это сделать без циклов for, но накладные расходы на цикл for здесь невелики, и код, вероятно, будет более понятным, если вы продолжите цикл for. Ваша ошибка в этой строке:
Array(i,:,:) = []
что, вероятно, заставляет Matlab кричать на вас о несоответствии количества элементов
исправление состоит в том, чтобы отслеживать, какие элементы вы хотите удалить, а затем позаботиться об этом в конце цикла
valid = false([1 Numloadcases]); %preallocate
for i = 1:Numloadcases
valid(i) = any(any(Array(i,:,:)));
end
Array = Array(valid,:,:);
Если Array - это обычный массив ND, вы, вероятно, не захотите собирать кучу команд, поэтому эта альтернативная формулировка будет работать
valid = false([1 Numloacases]);
for i = 1:Numloadcases
valid(i) = any(reshape(Array(i,:,:), 1, []);
end
Array = Array(valid,:,:);