3.1. Создание и выполнение скриптов в matlab
В предыдущих разделах все примеры выполнялись в режиме командной строки, когда команда выполняется сразу же после ее ввода. Такой режим удобен, если нужно быстро проверить как работает та или иная функция или рассчитать небольшую задачу. Недостатком такого режима является то, что при перезапуске среды MATLAB последовательность команд не сохраняется нигде кроме окна истории, которое не предназначено для постоянного хранения последовательности команд. Для больших задач, а также для задач, которые нужно запускать на выполнение несколько раз, удобнее сохранить последовательность действий в так называемый скрипт (script). Скрипты сохраняются в файлы с расширением .m, которые в документации иногда называются m-файлы (m-files).
Скрипты представляют собой обычные текстовые файлы, которые можно создавать и редактировать в любом текстовом редакторе, который позволяет сохранять текст без служебной информации, но в среде MATLAB уже есть встроенный текстовый редактор, специально предназначенный для программирования на языке MATLAB.
Для того чтобы создать скрипт и открыть его в редакторе MATLAB, нужно в главном меню выбрать пункт File - New - Script или нажать кнопку "New Script" на панели инструментов ( ). При этом откроется окно, показанное на рисунке 3.1.
Рис. 3.1.
Другой способ создания нового скрипта состоит в использовании команды edit в окне "Command Window. В этом случае можно создать файл с заданным именем, передавая имя скрипта как параметр:
>> edit myscript.m
Если файл myscript.m уже существует в текущей директории (текущая директория - это директория, в которой MATLAB ищет файлы, указанные только по имени без указания полного пути, текущая директория показана в окне "Current Folder"), то он будет открыт во встроенном редакторе, в противном случае MATLAB предложит создать файл с таким именем.
Встроенный редактор MATLAB – довольно удобный инструмент, который заметно облегчает написание и исправление больших программ. Среди особенностей редактора можно отметить:
раскраска синтаксиса языка MATLAB;
подсветка парных скобок;
подсказки параметров функций во всплывающем окне (Рис. 40);
встроенный отладчик;
подсветка ошибок по мере набора текста программы без запуска скрипта на выполнение.
Скрипты представляют собой последовательности тех же самых команд, которые использовались выше (с той лишь разницей, что в скриптах не нужно набирать строку приглашения командного режима >>). Например, скрипт, созданный на основе одной из последовательностей команд предыдущего раздела, будет выглядеть следующим образом:
clear
% Верхний левый график
[x1, y1] = meshgrid (-2: 0.1: 2, -2: 0.1: 2);
f1 = x1 .^ 2 + y1 .^ 2;
subplot (2, 2, 1)
surf (x1, y1, f1)
% Верхний правый график
x2 = -10: 0.05: 10;
f2 = sinc (x2 / pi);
subplot (2, 2, 2)
plot (x2, f2)
grid on
% Нижний график
x3 = -10: 0.01: 10;
f3 = exp (-(x3 .* x3));
subplot (2, 1, 2)
plot (x3, f3)
Внешний вид редактора, в котором был набран этот текст, показан на рисунке 40.
Рис. 3.2.
Для того, чтобы запустить этот скрипт на выполнение, нужно выбрать пункт меню Debug - Run... (вместо многоточия будет указано имя файла скрипта), нажать одноименную кнопку на панели инструментов ( ), или нажить горячую клавишу F5. Дальнейшие примеры будут предполагать, что они запускаются в виде скрипта, поэтому символы приглашения командного режима (>>) будут отсутствовать, хотя те же самые команды можно последовательно набирать и в командном режиме.
Так как длинные команды плохо читаются, то рекомендуется их всегда разбивать на несколько строк. Обычно считается, что строка программы не должна превышать 80 символов (это число появилось еще во времена текстовых терминалов, когда на экране по горизонтали умещалось только такое количество символов). Поэтому в редакторе MATLAB даже проведена вертикальная линия на ширине 76 символов, за которую не желательно выходить.
Так как транслятор считает, что каждая команда заканчивается символом переноса строк (или конца файла), это накладывает ограничение на разбиение длинной команды на две строки. Для того чтобы сообщить транслятору, что команда будет продолжена на следующей строке, используется оператор "..." (три точки). Например, если нужно команду
[x1, y1] = meshgrid (-2: 0.1: 2, -2: 0.1: 2);
разбить на две строки, чтобы повысить ее удобочитаемость, это можно сделать следующим образом:
[x1, y1] = meshgrid (-2: 0.1: 2, ...
-2: 0.1: 2);
В MATLAB, как и в других языках программирования, есть несколько управляющих конструкций для организации проверки условий, чтобы иметь возможность выполнять различные действия в зависимости от заданных условий, а также операторы для организации циклов.
- Оглавление
- Предисловие
- Раздел 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. Конечно-разностная аппроксимация для граничных узлов
- Задания
- Литература