MATLAB LanguageДля петель


замечания

Итерация над вектором столбца

Общий источник ошибок пытается перебрать элементы вектора столбца. Вектор столбца обрабатывается как матрица с одним столбцом. (В Matlab фактически нет различий.) Цикл for выполняется один раз, когда переменная цикла устанавливается в столбец.

% Prints once: [3, 1]
my_vector = [1; 2; 3];
for i = my_vector
    display(size(i))
end

Изменение переменной итерации

Изменение переменной итерации изменяет ее значение для текущей итерации, но не влияет на ее значение в последующих итерациях.

% Prints 1, 2, 3, 4, 5
for i = 1:5
    display(i)
    i = 5; % Fail at trying to terminate the loop
end

Специальные характеристики a:b в правой части

В базовом примере рассматривается 1:n как обычный экземпляр создания вектора строки, а затем итерации по нему. По соображениям производительности Matlab фактически обрабатывает любые a:b или a:c:b специально, не создавая вектор строки полностью, а вместо этого создавая каждый элемент по одному за раз.

Это можно обнаружить, слегка изменив синтаксис.

% Loops forever
for i = 1:1e50
end
% Crashes immediately
for i = [1:1e50]
end

Для петель Связанные примеры