logo search
matlab_final

3.2. Оператор for

Оператор for предназначен для организации цикла, в котором некоторая переменная поочередно принимает значения из заданной последовательности чисел. Синтаксис оператора for выглядит следующим образом:

for index = values

Последовательность команд

end

Здесь values задает последовательность, элементы которой поочередно присваиваются переменной index. Наиболее очевидное применение оператора for состоит в переборе последовательности чисел с равным шагом, когда values задается в виде firstvalue: step: lastvalue.

Пусть, например, требуется построить серию графиков для ряда значений . В этом случае скрипт может выглядеть следующим образом:

% Создание новой фигуры

figure;

% "Заморозим" фигуру, чтобы графики добавлялись в окно,

% и не затирали друг друга

hold on

% Интервал по оси X, на котором строится график

x = -5: 0.01: 5;

% Переменная alpha изменяется в интервале [0.5; 3] с шагом 0.5

for alpha = 0.5: 0.5: 3

% Расчет очередного графика

y = exp (-(x .^ 2) / alpha);

% Рисование очередного графика

plot (x, y)

end

% "Разморозим" график

hold off

Результат выполнения этого скрипта показан на рисунке 3.3.

Рис. 3.3.

Если значение  должно изменяться с шагом 1 (например, в интервале от 1 до 3), то цикл можно было бы записать следующим образом:

% Переменная alpha изменяется в интервале [1; 3] с шагом 1

for alpha = 1:3

% Расчет очередного графика

y = exp (-(x .^ 2) / alpha);

% Рисование очередного графика

plot (x, y)

end

Так как в операторе for справа от знака присваивания находится обычная матрица (в данных примерах одномерная), то переменная  может принимать последовательно любые значения, не обязательно отстоящие друг от друга на равный шаг. Например, цикл можно было бы написать следующим образом:

% Переменная alpha принимает следующие значения: 1, 3, 10, 3.5, 12

for alpha = [1, 3, 10, 3.5, 12]

% Расчет очередного графика

y = exp (-(x .^ 2) / alpha);

% Рисование очередного графика

plot (x, y)

end

Не обязательно матрицу значений создавать в самом операторе for. Следующий пример показывает, что значения для цикла можно брать из заранее подготовленной матрицы.

% Создание новой фигуры

figure;

% "Заморозим" фигуру, чтобы графики добавлялись в окно,

% и не затирали друг друга

hold on

% Интервал по оси X, на котором строится график

x = -5: 0.01: 5;

% Значения, которые будет принимать переменная alpha

values = [1, 3, 10, 3.5, 12];

for alpha = values

% Расчет очередного графика

y = exp (-(x .^ 2) / alpha);

% Рисование очередного графика

plot (x, y)

end

% "Разморозим" график

hold off

Циклы могут быть вложенные один в другой. Для демонстрации этой возможности ниже приведен скрипт, который строит рисунок 38.

figure

% Количество строк

rowcount = 3;

% Количество столбцов

colcount = 5;

% Цикл по столбцам

for col = 1:colcount

% Цикл по строкам

for row = 1: rowcount

% Расчет номера графика

index = (row - 1) * colcount + col;

% Создание графика

subplot (rowcount, colcount, index)

% Преобразование номера в строку

label = num2str (index);

% Вывод текста с размером шрифта 20 и

% горизонтальным выравниванием по центру

text (0, 0, label, 'FontSize', 20, ...

'HorizontalAlignment','center')

xlim ([-1 1])

ylim ([-1 1])

end

end

Можно заметить, что поведение оператора for в MATLAB отличается от поведения одноименного оператора в таких языках как Pascal, Delphi, C, C++ (до стандарта C++ 11), C# и соответствует скорее оператору foreach в языке C# или оператору for в языке Python.