- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
3. Управление последовательностью исполнения операторов
Как было отмечено выше, сценарий – это текстовый файл, в котором записаны команды, подлежащие выполнению. Последовательность выполнения команд сценария может быть изменена с помощью следующих операторов управления:
оператор условия if, в сочетании с оператором else и elseif выполняет группу операторов в соответствии с некоторыми логическими условиями;
оператор переключения switch, в сочетании с операторами case и otherwise выполняет различные группы операторов в зависимости от значения некоторого логического условия;
оператор цикла while выполняет группу операторов заранее неизвестное число раз, в соответствии с некоторым логическим условием завершения;
оператор цикла for выполняет группу операторов заранее известное число раз.
Все операторы управления включают оператор end, чтобы указать конец блока, в котором действует этот оператор управления. Рассмотрим эти операторы более подробно.
3.1. Оператор условия if
Оператор условия (развилки) позволяет выбрать одну альтернативу. Он может выступать в одной из трёх форм.
Во-первых,
if условие
операторы
end
Эта форма соответствует блок-схеме, представленной на рис. 3.2, а. Оператор условия if ... end вычисляет результат проверки некоторого выражения условие и выполняет или не выполняет соответствующую группу инструкций операторы в зависимости от значения этого результата. Если условие истинно, то Matlab выполнит все операторы, стоящие между if и end, а затем продолжит выполнение программы со строки после end. Если условие ложно, то Matlab пропустит все операторы между if и end и продолжит выполнение со строки после end.
На рис. 3.3 приведено окно редактора, в котором размещен текст программы, проверяющей, является ли значение переменной х, вводимое с клавиатуры, целым числом.
Рис. 3.3. Окно редактора с текстом скрипта
Скрипт сохранен в файле Simple.m на диске D в каталоге MATLAB701 в папке work. При запуске скритпа на выполнение на экран в рабочем окне Matlab будет выдано приглашение
Введите число
Если ввести 7, то результатом работы программы будет
7 - целое число
Если же ввести 7.2, то на экран ничего не выведется.
Во-вторых, можно использовать более развернутый вариант развилки
if условие
операторы1
else ..
оператры2
end
В этой форме имеется дополнительное ветвление внутри тела оператора if (рис. 3.2, б). Оператор else не содержит условия. Последовательность инструкций операторы2, связанная с ним, выполняются, если выражение условие оператора if ложно. На основе такой формы оператора if предыдущая задача решается более красиво.
x=input('Введите число ');
if fix(x)==x
disp([num2str(x) ' - целое число'])
else
disp([num2str(x) ' - не целое число'])
end
В-третьих, самая общая конструкция развилки
if условие1
операторы1
elseif условие2
операторы2
else
операторы3
end
в которой оператор elseif содержит условие2, которое вычисляется, если предшествующее условие1 оператора if ложно. Здесь один оператор if встроен (вложен) в else ветку другого оператора if (рис. 3.2, в). Инструкции операторы2, связанные с оператором elseif, выполняются, если условие2 истинно, иначе выполняются операторы3 else ветки. В следующем фрагменте программы проверяется, является ли символ, введенный с клавиатуры, прописной или строчной латинской буквой:
sym=input('Введите символ ','s');
if sym>='A' & sym<='Z'
disp([sym ' - прописная латинская буква'])
elseif sym>='a' & sym<='z'
disp([sym ' - строчная латинская буква'])
else
disp([sym ' - не латинская буква'])
end
Примечание: поскольку sym – символьная переменная, то в disp нет необходимости в преобразовании типа конкатенируемых значений.
Оператор elseif может многократно использоваться внутри оператора условия if. Возможен вариант вложенного оператора if без последней ветки else
if условие1
операторы1
elseif условие2
операторы2
end
Какая бы из форм развилки не применялась, в любом случае область действия условного оператора начинается ключевым словом if, а заканчивается ключевым словом end. Под условием понимается произвольное выражение, истинность или ложность которого понимается как отличие от нуля или равенство нулю соответственно. Чаще всего для построения выражения условие используют операции сравнения и логические операции. Следует отметить особенности построения развилок, связанные с тотальным использованием массивов в языке программирования системы Matlab. Массивы можно использовать в выражениях, входящих в условие. В этом случае, истинность условия наступает, когда истинны (не равны нулю) все элементы массива. Если хоть один элемент такого массива будет равен нулю, то условие считается ложным. Ложность будет иметь место и при использовании пустых массивов. Приведём простейший пример, иллюстрирующий работу условного оператора с условием-массивом.
a = [ 1 2; 4 0 ];
if a
b = 1;
else
b = 2;
В результате выполнения этого фрагмента переменная b получит значение, равное 2, так как матрица a содержит один нулевой элемент, и всё условие считается ложным. Запись if a по своему действию полностью эквивалентна записи if a~=0 или записи if all(a(:)).