3.4. Оператор if / elseif / else
Если программа должна выполнять разные действия в зависимости от определенных условий, используется оператор if, который аналогичен одноименным операторам из других языков программирования. Синтаксис оператора if описывается следующим образом:
if условие 1
последовательность команд 1
elseif условие 2
последовательность команд 2
elseif условие 3
последовательность команд 3
.
.
.
else
последовательность команд N
end
Сначала проверяется на истинность условие 1, если оно окажется истинным, то будет выполняться последовательность команд 1, если условие 1 не выполняется, начинается проверка ветвей elseif. Сначала проверяется условие 2, если оно истинно, то будет выполняться последовательность команд 2, если ложно, то проверяется условие 3, если оно окажется истинным, то будет выполняться последовательность команд 3 и т. д. до последнего оператора elseif, количество которых не ограничено. Если ни одно из условий не оказалось истинным, выполняется последовательность команд после оператора else.
В этом операторе ветви elseif и else являются не обязательными и могут отсутствовать.
В качестве примера рассмотрим задачу, когда дана одномерная матрица foo, необходимо сформировать матрицу result таким образом, что i-ый элемент матрицы result должен быть равен 1, если i-й элемент матрицы foo больше 0, должен быть равен -1, если i-й элемент матрицы foo меньше 0, и должен быть равен 0, если i-й элемент матрицы foo равен 0. Скрипт для решения данной задачи может выглядеть следующим образом:
% Удалить все переменные
clear;
% Исходная матрица, в зависимости от элементов которой
% будем формировать результат
foo = [1 5 -10 0 -2 3];
% Матрица, куда будет сохранен результат (начальная инициализация нулями)
result = zeros (1, length (foo));
% Переменная index будет принимать значения от 1 до 6
% (для данного размера матрицы foo)
for index = 1:length(foo)
% Проверка каждого элемента матрицы foo на знак
if foo(index) > 0
result(index) = 1;
elseif foo (index) < 0
result(index) = -1;
else
result(index) = 0;
end
end
% Вывод исходной матрицы и результата
foo
result
Результат выполнения этого скрипта выглядит следующим образом:
foo =
1 5 -10 0 -2 3
result =
1 1 -1 0 -1 1
Строго говоря, в данном примере строка создания результирующей матрицы result = zeros (1, length (foo)); не обязательна, так как на каждой итерации во время выполнения операций присваивания (result(index) = ...) размер матрицы result будет увеличиваться таким образом, чтобы в ней существовал элемент с номером index, однако это ведет к дополнительным расходам времени на перераспределение памяти, поэтому, если известен размер результирующей матрицы, желательно ее создать заранее с нужным размером.
Так как еще до выполнения цикла for мы создали матрицу result и заполнили ее нулями (с помощью функции zeros), то ветвь else в операторе if является не обязательной, так как в случае пропуска строки result(index) = 0;, элемент с индексом index все равно окажется равным 0. Поэтому скрипт можно сократить (что нельзя было бы сделать, если бы мы пропустили начальную инициализацию матрицы result с помощью функции zeros):
% Удалить все переменные
clear;
% Исходная матрица, в зависимости от элементов которой
% будем формировать результат
foo = [1 5 -10 0 -2 3];
% Матрица, куда будет сохранен результат (начальная инициализация нулями)
result = zeros (1, length (foo));
% Переменная index будет принимать значения от 1 до 6
% (для данного размера матрицы foo)
for index = 1:length(foo)
% Проверка каждого элемента матрицы foo на знак
if foo(index) > 0
result(index) = 1;
elseif foo (index) < 0
result(index) = -1;
end
end
% Вывод исходной матрицы и результата
foo
result
Результат выполнения этого скрипта по сравнению с предыдущим не изменится.
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. Конечно-разностная аппроксимация для граничных узлов
- Задания
- Литература