цикл FOR MATLAB является статическим по своей природе; Вы не можете изменять переменную цикла между итерациями, в отличие от для (инициализация; условие; приращение) структуры цикла в других языках. Это означает, что следующий код всегда печатает 1, 2, 3, 4, 5 независимо от значения B.
A = 1:5;
for i = A
A = B;
disp(i);
end
Если вы хотите иметь возможность реагировать на изменения в структуре данных во время итераций, WHILE loop может быть более подходящим - вы сможете протестировать условие цикла на каждой итерации и установите значение переменной (ов) цикла, как вы хотите:
n = 10;
f = n;
while n > 1
n = n-1;
f = f*n;
end
disp(['n! = ' num2str(f)])
Кстати, цикл for-each в Java (и, возможно, в других языках) приводит к неопределенному поведению, когда структура данных изменяется во время итерации. Если вам нужно изменить структуру данных, вы должны использовать соответствующий экземпляр Iterator , который позволяет добавлять и удалять элементы в коллекции, которую вы перебираете. Хорошей новостью является то, что MATLAB поддерживает объекты Java, поэтому вы можете сделать что-то вроде этого:
A = java.util.ArrayList();
A.add(1);
A.add(2);
A.add(3);
A.add(4);
A.add(5);
itr = A.listIterator();
while itr.hasNext()
k = itr.next();
disp(k);
% modify data structure while iterating
itr.remove();
itr.add(k);
end