В предыдущих разделах все примеры выполнялись в режиме командной строки, когда команда выполняется сразу же после ее ввода. Такой режим удобен, если нужно быстро проверить как работает та или иная функция или рассчитать небольшую задачу. Недостатком такого режима является то, что при перезапуске среды MATLAB последовательность команд не сохраняется нигде кроме окна истории, которое не предназначено для постоянного хранения последовательности команд. Для больших задач, а также для задач, которые нужно запускать на выполнение несколько раз, удобнее сохранить последовательность действий в так называемый скрипт (script). Скрипты сохраняются в файлы с расширением .m, которые в документации иногда называются m-файлы (m-files).
Скрипты представляют собой обычные текстовые файлы, которые можно создавать и редактировать в любом текстовом редакторе, который позволяет сохранять текст без служебной информации, но в среде MATLAB уже есть встроенный текстовый редактор, специально предназначенный для программирования на языке MATLAB.
Как запустить MATLAB Online.
Для того чтобы создать скрипт и открыть его в редакторе MATLAB, нужно в главном меню выбрать пункт File — New — Script или нажать кнопку «New Script» на панели инструментов ( ). При этом откроется окно, показанное на рисунке 3.1.
Другой способ создания нового скрипта состоит в использовании команды edit в окне «Command Window. В этом случае можно создать файл с заданным именем, передавая имя скрипта как параметр:
Если файл myscript.m уже существует в текущей директории (текущая директория — это директория, в которой MATLAB ищет файлы, указанные только по имени без указания полного пути, текущая директория показана в окне «Current Folder»), то он будет открыт во встроенном редакторе, в противном случае MATLAB предложит создать файл с таким именем.
Встроенный редактор MATLAB – довольно удобный инструмент, который заметно облегчает написание и исправление больших программ. Среди особенностей редактора можно отметить:
- раскраска синтаксиса языка MATLAB;
- подсветка парных скобок;
- подсказки параметров функций во всплывающем окне (Рис. 40);
- встроенный отладчик;
- подсветка ошибок по мере набора текста программы без запуска скрипта на выполнение.
Скрипты представляют собой последовательности тех же самых команд, которые использовались выше (с той лишь разницей, что в скриптах не нужно набирать строку приглашения командного режима >>). Например, скрипт, созданный на основе одной из последовательностей команд предыдущего раздела, будет выглядеть следующим образом:
% Верхний левый график
[x1, y1] = meshgrid (-2: 0.1: 2, -2: 0.1: 2);
f1 = x1 .^ 2 + y1 .^ 2;
MATLAB 03 Написание программ
% Верхний правый график
Источник: studfile.net
Как запустить программу в матлабе
Чтобы отладить вашу программу MATLAB ® графически, используйте Редактор/Отладчик. Также можно использовать функции отладки в Командном окне. Оба метода являются взаимозаменяемыми.
Прежде чем вы начнете отлаживать, убедитесь, что ваша программа сохранена и что программа и любые файлы, которые это вызывает, существуют на вашем пути поиска файлов или в текущей папке.
Если вы петляете с несохраненными изменениями из Редактора, то файл автоматически сохранен, прежде чем это запустится.
Если вы петляете с несохраненными изменениями из Командного окна, то программное обеспечение MATLAB запускает сохраненную версию файла. Поэтому вы не видите результаты своих изменений.
Установка точки останова
Установите точки останова приостанавливать выполнение файла MATLAB, таким образом, можно исследовать значение или переменные, где вы думаете, что проблема могла быть. Можно установить точки останова с помощью Редактора, с помощью функций в Командном окне или обоих.
Существует три различных типов точек останова: стандарт, условное выражение и ошибка. Чтобы добавить стандартную точку останова в Редакторе, кликните по области точки останова в исполняемой строке, где вы хотите установить точку останова. breakpoint alley является узким столбцом на левой стороне Редактора, справа от номера строки. Также можно использовать ключ F12, чтобы установить точку останова.
Исполняемые строки обозначаются тире (—) в области точки останова. Например, кликните по области точки останова рядом со строкой 2 в коде ниже, чтобы добавить точку останова в той строке.
Если исполняемый оператор охватывает несколько строк, можно установить точку останова в каждой строке в том операторе, даже при том, что дополнительные строки не имеют — (тире) в области точки останова. Например, в этом коде. можно установить точку останова во всех четырех строках:
Для получения дополнительной информации о различных типах точек останова смотрите Установку точек останова.
Петлять
После установки точек останова петляйте из Командного окна или Редактора. Петляние приводит к этим результатам:
Кнопка Run изменяется на
кнопку Pause.
Подсказка в Командном окне изменяется на K>> , указывающий, что MATLAB находится в режиме отладки и что клавиатура сознает ситуацию.
MATLAB делает паузу в первой точке останова в программе. В Редакторе зеленая стрелка только справа от точки останова указывает на паузу. Программа не выполняет строку, где пауза происходит, пока это не продолжает запускаться. Например, здесь отладчик делает паузу, прежде чем программа выполняет x = ones(1,10); .
MATLAB отображает текущую рабочую область в Function Call Stack на вкладке Editor в разделе Debug.
Если вы используете функции отладки от Командного окна, используйте dbstack , чтобы просмотреть Стек вызовов функции.
Для получения дополнительной информации об использовании Стека вызовов функции смотрите, Выбирают Workspace
Приостановка рабочего файла
Чтобы приостановить осуществление программы, в то время как это запускается, перейдите к вкладке Editor и нажмите кнопку Pause. MATLAB приостанавливает выполнение в следующей исполняемой строке и
изменения кнопки Pause в
кнопке Continue. Чтобы продолжить выполнение, нажмите
кнопку Continue.
Приостановка полезна, если вы хотите проверить прогресс длительной программы, чтобы гарантировать, что это запускается как ожидалось.
Примечание
Нажатие на кнопку паузы может заставить MATLAB делать паузу в файле вне вашего собственного программного файла. Нажатие кнопки Continue возобновляет нормальное выполнение, не изменяя результаты файла.
Нахождение и решение проблемы
В то время как ваш код приостановлен, можно просмотреть или изменить значения переменных, или можно изменить код.
Просмотр или замена переменной в то время как отладка
Просмотрите значение переменной при отладке, чтобы видеть, произвела ли строка кода ожидаемый результат или нет. Для этого расположите свой указатель мыши слева от переменной. Текущая стоимость переменной появляется во всплывающей подсказке.
Всплывающая подсказка остается в поле зрения, пока вы не перемещаете указатель. Если вы испытываете затруднения, заставляя всплывающую подсказку появиться, кликните по строке, содержащей переменную, и затем переместите указатель рядом с переменной. Для получения дополнительной информации смотрите, Исследуют Значения В то время как Отладка.
Можно изменить значение переменной при отладке, чтобы видеть, производит ли новое значение ожидаемые результаты. С приостановленной программой присвойте новое значение переменной в Командном окне, браузере Рабочей области или Редакторе Переменных. Затем продолжите запускаться или продвигаться через программу.
Например, здесь MATLAB приостановлен в цикле for где n = 2 :
Введите n = 7; в командной строке, чтобы изменить текущую стоимость n от 2 до 7.
Нажмите Continue , чтобы запустить следующую строку кода.
MATLAB запускает строку кода x(n) = 2 * x(n-1); с n = 7 .
Изменение раздела кода в то время как отладка
Можно изменить раздел кода при отладке, чтобы протестировать возможные меры, не имея необходимость сохранять изменения. Обычно, это — хорошая практика, чтобы изменить файл MATLAB после того, как вы будете выходить из отладки, и затем будете сохранять модификацию и будете петлять. В противном случае вы можете получить неожиданные результаты. Однако существуют ситуации, где вы хотите экспериментировать во время отладки.
Изменить программу при отладке:
В то время как ваш код приостановлен, измените часть файла, который еще не запустился.
Точки останова стали серыми, указывая, что они недопустимы.
Выберите весь код после строки, в которой приостановлен MATLAB, щелкните правой кнопкой, и затем выберите Evaluate Selection из контекстного меню.
После того, как оценка кода завершена, прекратите отлаживать и сохраните или отмените любые изменения, внесенные прежде, чем продолжить процесс отладки.
Продвиньтесь через файл
При отладке можно продвинуться через файл MATLAB, делающий паузу в точках, где вы хотите исследовать значения.
Эта таблица описывает доступные действия отладки и различные методы, которые можно использовать, чтобы выполнить их.
Кнопка на панели инструментов
Продолжите выполнение файла до строки, где курсор расположен. Также доступный в контекстном меню.
Run to Cursor
Выполните текущую строку файла.
Step
Выполните текущую строку файла и, если строка является вызовом другой функции, шага в эту функцию.
Step In
Continue
После вступания, остальная часть выполнения вызванной функциональной или локальной функции, оставляют вызванную функцию и делают паузу.
Step Out
Приостановите режим отладки.
Pause
Выйдите из режима отладки.
Quit Debugging
Окончание сеанса отладки
После того, как вы идентифицируете проблему, заканчиваете сеанс отладки путем движения во вкладку Editor и нажатия на Quit Debugging . Необходимо закончить сеанс отладки, если вы хотите изменить и сохранить файл, или если вы хотите запустить другие программы в MATLAB.
После того, как вы выходите из отладки, делаете паузу, индикаторы в отображении Редактора больше не появляются, и нормальная подсказка >> вновь появляется в Командном окне вместо K>> . Вы больше не можете получать доступ к стеку вызовов.
Если программное обеспечение MATLAB становится небыстро реагирующим, когда оно делает паузу в точке останова, нажмите Ctrl+c, чтобы возвратиться к посдказке MATLAB.
MATLAB – популярный пакет программ для решения технических, математических, статистических задач, вычислений и моделирования. Так же называется и одноимённый язык программирования, который используется в этом пакете. Давайте рассмотрим порядок работы с окном команд и редактором среды MATLAB.
1 Работа с окном команд в среде MATLAB
В среде MATLAB есть несколько режимов работы. Самый простой – это ввод команд непосредственно в окно команд (Command Window).
Окно команд MATLAB
Если оно не видно в интерфейсе программы, откроем его. Найти окно команд можно через меню Desktop Command Window.
Давайте для примера введём в это окно последовательно друг за другом команды
и нажмём клавишу «Ввод» (Enter). Программа моментально создаст переменную X, создаст переменную Y и посчитает её значения по заданной функции, а затем построит её график.
Стрелками клавиатуры вверх и вниз в окне команд мы можем переключаться между введёнными командами, тут же изменять их, а по нажатию Enter отправлять среде MATLAB на исполнение. Стрелками влево и вправо можно перемещаться по введённой команде и редактировать её. Если в конце команды стоит точка с запятой, то результат будет посчитан, но не будет выведен в окно команд; в противном случае результат выполнения команды будет отображён тут же. По любой функции в среде MATLAB есть подробная встроенная справка. Например, чтобы получить справку по команде plot, выделите эту команду, нажмите на неё правой кнопкой мыши, и в открывшемся контекстном меню выберите пункт Help on Selection или нажмите клавишу F1.
Получение справки по командам MATLAB
Удобно? Безусловно. И главное – очень быстро. Все эти действия занимают несколько секунд.
Но что если нужна более сложная организация команд? Если нужно циклическое исполнение каких-то команд? Вводить команды вручную по одной, а потом долго искать их в истории может быть довольно утомительным делом.
2 Работа с редактором в среде MATLAB
Чтобы упростить жизнь учёному, инженеру или студенту, служит окно редактора (Editor). Давайте откроем окно редактора через меню Desktop Editor.
Открытие редактора MATLAB
В окне редактора можно создавать новые переменные, строить графики, писать программы (скрипты), создавать компоненты для обмена с другими средами, создавать приложения с пользовательским интерфейсом (GUI), а также редактировать имеющиеся.
Нас в данный момент интересует написание программы, содержащей функции для повторного использования в будущем. Поэтому идём в меню File редактора и выбираем New M-File.
Создание нового M-файла в MATLAB
М-файлами в среде МАТЛАБ называются файлы, содержащие текст программ (скрипты) или определённые пользователем функции.
Давайте напишем в редакторе простую функцию draw_plot:
Ввод текста программы в окне редактора MATLAB
Создание и выполнение скриптов в MATLAB
В предыдущих разделах все примеры выполнялись в режиме командной строки, когда команда выполняется сразу же после ее ввода. Такой режим удобен, если нужно быстро проверить как работает та или иная функция или рассчитать небольшую задачу. Недостатком такого режима является то, что при перезапуске среды MATLAB последовательность команд не сохраняется нигде кроме окна истории, которое не предназначено для постоянного хранения последовательности команд. Для больших задач, а также для задач, которые нужно запускать на выполнение несколько раз, удобнее сохранить последовательность действий в так называемый скрипт (script). Скрипты сохраняются в файлы с расширением .m, которые в документации иногда называются m-файлы (m-files).
Скрипты представляют собой обычные текстовые файлы, которые можно создавать и редактировать в любом текстовом редакторе, который позволяет сохранять текст без служебной информации, но в среде MATLAB уже есть встроенный текстовый редактор, специально предназначенный для программирования на языке MATLAB.
Для того чтобы создать скрипт и открыть его в редакторе MATLAB, нужно в главном меню выбрать пункт File — New — Script или нажать кнопку «New Script» на панели инструментов ( ). При этом откроется окно, показанное на рисунке 3.1.
Другой способ создания нового скрипта состоит в использовании команды edit в окне «Command Window. В этом случае можно создать файл с заданным именем, передавая имя скрипта как параметр:
Если файл myscript.m уже существует в текущей директории (текущая директория — это директория, в которой MATLAB ищет файлы, указанные только по имени без указания полного пути, текущая директория показана в окне «Current Folder»), то он будет открыт во встроенном редакторе, в противном случае MATLAB предложит создать файл с таким именем.
Встроенный редактор MATLAB – довольно удобный инструмент, который заметно облегчает написание и исправление больших программ. Среди особенностей редактора можно отметить:
· раскраска синтаксиса языка MATLAB;
· подсветка парных скобок;
· подсказки параметров функций во всплывающем окне (Рис. 40);
· подсветка ошибок по мере набора текста программы без запуска скрипта на выполнение.
Скрипты представляют собой последовательности тех же самых команд, которые использовались выше (с той лишь разницей, что в скриптах не нужно набирать строку приглашения командного режима >>). Например, скрипт, созданный на основе одной из последовательностей команд предыдущего раздела, будет выглядеть следующим образом:
% Верхний левый график
[x1, y1] = meshgrid (-2: 0.1: 2, -2: 0.1: 2);
f1 = x1 .^ 2 + y1 .^ 2;
% Верхний правый график
f2 = sinc (x2 / pi);
Внешний вид редактора, в котором был набран этот текст, показан на рисунке 40.
Для того, чтобы запустить этот скрипт на выполнение, нужно выбрать пункт меню Debug — Run. (вместо многоточия будет указано имя файла скрипта), нажать одноименную кнопку на панели инструментов ( ), или нажить горячую клавишу F5. Дальнейшие примеры будут предполагать, что они запускаются в виде скрипта, поэтому символы приглашения командного режима (>>) будут отсутствовать, хотя те же самые команды можно последовательно набирать и в командном режиме.
Так как длинные команды плохо читаются, то рекомендуется их всегда разбивать на несколько строк. Обычно считается, что строка программы не должна превышать 80 символов (это число появилось еще во времена текстовых терминалов, когда на экране по горизонтали умещалось только такое количество символов). Поэтому в редакторе MATLAB даже проведена вертикальная линия на ширине 76 символов, за которую не желательно выходить.
Так как транслятор считает, что каждая команда заканчивается символом переноса строк (или конца файла), это накладывает ограничение на разбиение длинной команды на две строки. Для того чтобы сообщить транслятору, что команда будет продолжена на следующей строке, используется оператор «. » (три точки). Например, если нужно команду
[x1, y1] = meshgrid (-2: 0.1: 2, -2: 0.1: 2);
разбить на две строки, чтобы повысить ее удобочитаемость, это можно сделать следующим образом:
[x1, y1] = meshgrid (-2: 0.1: 2, .
В MATLAB, как и в других языках программирования, есть несколько управляющих конструкций для организации проверки условий, чтобы иметь возможность выполнять различные действия в зависимости от заданных условий, а также операторы для организации циклов.
Оператор for
Оператор for предназначен для организации цикла, в котором некоторая переменная поочередно принимает значения из заданной последовательности чисел. Синтаксис оператора for выглядит следующим образом:
for index = values
Здесь values задает последовательность, элементы которой поочередно присваиваются переменной index. Наиболее очевидное применение оператора for состоит в переборе последовательности чисел с равным шагом, когда values задается в виде firstvalue: step: lastvalue.
Пусть, например, требуется построить серию графиков для ряда значений a. В этом случае скрипт может выглядеть следующим образом:
% Создание новой фигуры
% «Заморозим» фигуру, чтобы графики добавлялись в окно,
% и не затирали друг друга
% Интервал по оси X, на котором строится график
% Переменная alpha изменяется в интервале [0.5; 3] с шагом 0.5
for alpha = 0.5: 0.5: 3
% Расчет очередного графика
y = exp (-(x .^ 2) / alpha);
% Рисование очередного графика
Результат выполнения этого скрипта показан на рисунке 3.3.
Если значение a должно изменяться с шагом 1 (например, в интервале от 1 до 3), то цикл можно было бы записать следующим образом:
% Переменная alpha изменяется в интервале [1; 3] с шагом 1
% Расчет очередного графика
y = exp (-(x .^ 2) / alpha);
% Рисование очередного графика
Так как в операторе for справа от знака присваивания находится обычная матрица (в данных примерах одномерная), то переменная a может принимать последовательно любые значения, не обязательно отстоящие друг от друга на равный шаг. Например, цикл можно было бы написать следующим образом:
% Переменная alpha принимает следующие значения: 1, 3, 10, 3.5, 12
for alpha = [1, 3, 10, 3.5, 12]
% Расчет очередного графика
y = exp (-(x .^ 2) / alpha);
% Рисование очередного графика
Не обязательно матрицу значений создавать в самом операторе for. Следующий пример показывает, что значения для цикла можно брать из заранее подготовленной матрицы.
% Создание новой фигуры
% «Заморозим» фигуру, чтобы графики добавлялись в окно,
% и не затирали друг друга
% Интервал по оси X, на котором строится график
% Значения, которые будет принимать переменная alpha
values = [1, 3, 10, 3.5, 12];
for alpha = values
% Расчет очередного графика
y = exp (-(x .^ 2) / alpha);
% Рисование очередного графика
Циклы могут быть вложенные один в другой. Для демонстрации этой возможности ниже приведен скрипт, который строит рисунок 38.
% Цикл по столбцам
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, .
Можно заметить, что поведение оператора for в MATLAB отличается от поведения одноименного оператора в таких языках как Pascal, Delphi, C, C++ (до стандарта C++ 11), C# и соответствует скорее оператору foreach в языке C# или оператору for в языке Python.
Логические операции
В MATLAB нет специального булевого типа переменных, в качестве булевого значения «Истина» могут выступать все числа, не равные 0 (как правило, используется 1), в качестве значения «Ложь» используется 0.
В таблице 3.1 перечислены некоторые логические операторы и функции.
Логический оператор (функция) | Описание |
> | Больше (поэлементное сравнение) |
>= | Больше или равно (поэлементное сравнение) |
Меньше (поэлементное сравнение) | |
Меньше или равно (поэлементное сравнение) | |
== | Равно (поэлементное сравнение) |
~= | Не равно (поэлементное сравнение) |
Логическое И (применяется для двух матриц, размером 1×1) | |
) | |
|| | Логическое ИЛИ (применяется для двух матриц, размером 1×1) |
| | Логическое поэлементное ИЛИ (применяет логическое ИЛИ для каждого элемента матриц, стоящих слева и справа от оператора |) |
~ | Логическая поэлементная инверсия (НЕ) |
xor | Поэлементное исключающее ИЛИ |
any | Возвращает 1, если в матрице, переданной в качестве параметра, есть хотя бы один не нулевой элемент. В противном случае, функция возвращает 1. |
all | Возвращает 1, если в матрице, переданной в качестве параметров, все элементы не нулевые. В противном случае функция возвращает 0. |
isequal | Возвращает 1, если матрицы, переданные в качестве параметров этой функции равны (две матрицы A и B называются равными, если они имеют одинаковое число строк и столбцов и их соответствующие элементы равны). |
В следующем примере демонстрируется работа некоторых логических операторов.
Источник: stydopedia.ru