Поскольку alldcell{t}
может не существовать для некоторых значений t
, если условие для присвоения ему значений в
if Penalties{t}(r)== 0;
alldcel{t}(r)=inf;
end
никогда не устраивает. Предположим для некоторых t
, что все значения Penalties{t}
отличаются от нуля. Тогда вы никогда не назначите inf
на alldcell{t}
. Это означает, что вы расширяете массив ячеек alldcell
только тогда, когда Penalties{t}
равен нулю для некоторого r
. Если условие никогда не выполняется, alldcell{t}
не будет существовать, и запрос его приведет к ошибке массива ячеек.
Вы должны хотя бы инициализировать его, используя alldcell = cell(TotalnoOfGrids,1)
.
Кроме того, сравнение на равенство нулю с использованием a==0
не очень хорошая идея. Вы должны использовать abs(a)<tol
для небольшого значения tol
.