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.
Yandex.RTB R-A-252273-3
- Оглавление
- Предисловие
- Раздел 1. Основные сведения о среде программирования «matlab»
- Глава 1. Вычисления в командном режиме
- 1.1. Простейшие математические операции в matlab
- 1.2. Переменные
- 1.3. Создание матриц
- 1.4. Доступ к элементам матриц
- 1.5. Операции с матрицами
- 1.6. Ввод, вывод и работа со строками
- Глава 2. Построение графиков в matlab
- 2.1. Построение графика в виде двумерной линии
- 2.2. Оформление графиков
- 2.3. Построение трехмерных графиков
- 2.4. Построение линий уровня
- 2.5. Построение векторного поля
- 2.6. Отображение нескольких графиков в одном окне
- Глава 3. Скрипты в matlab и управляющие конструкции
- 3.1. Создание и выполнение скриптов в matlab
- 3.2. Оператор for
- 3.3. Логические операции
- 3.4. Оператор if / elseif / else
- 3.5. Оператор while
- 3.6. Операторы break / continue
- 3.7. Оператор switch
- 3.8. Создание функций
- Раздел 2. Краткие теоретические сведения и задания Тема 1. Векторный анализ
- 1.1. Элементы векторного анализа
- Задания
- Тема 2. Уравнения Максвелла (произвольная и гармоническая временная зависимость, статические, стационарные и квазистационарные поля)
- 2.1. Система уравнений электродинамики – уравнения Максвелла
- 2.2. Граничные условия. Принцип эквивалентности
- Задания
- Тема 3. Плоские волны
- 3.1. Явление дисперсии и групповая скорость
- Задания
- Тема 4. Граничные задачи, уравнения и методы
- 4.1. К классификации электромагнитных явлений
- Задания
- 4.2. Метод конечных разностей
- 4.2.1. Конечно-разностная аппроксимация
- 4.2.2. Конечно-разностная аппроксимация уравнений Лапласа и Пуассона
- 4.2.3. Конечно-разностная аппроксимация для граничных узлов
- Задания
- Литература