
2. Matlab.
Лекция 5 (10).
2.7. Программирование на языке Matlab.
(Создание М-файлов).
MATLAB является не только эффективной интерактивной вычислительной средой, но и мощным языком программирования. Файлы на языке MATLAB имеют расширение .m и называются М-файлами. М-файлы могут быть или сценариями (scripts), которые просто выполняют группу операторов (выражений), или же - функциями (functions), которые могут иметь входные аргументы и выходные параметры. Файл сценария иногда называют файл-программы или файл-процедуры.
М-файлы создаются в текстовом редакторе и затем используются так же, как стандартная функция или команда системы MATLAB.
Основные свойства М-файлов можно представить в виде следующей таблицы:
М-сценарии |
М-функции |
Не имеют входных и выходных параметров |
Допускают входные и выходные параметры |
Работают с данными из рабочего пространства |
Внутренние переменные по умолчанию являются локальными |
Предназначены для автоматизации последовательности шагов, которые нужно выполнять много раз |
Предназначены для расширения возможностей языка MATLAB (библиотеки функций, пакеты прикладных программ) |
После исполнения сценария переменные останутся в рабочем пространстве |
Локальные параметры не попадают в рабочее пространство |
М-файлы вызываются по имени из других файлов или из командной строки. Для функции еще указываются аргументы. Текст функции начинается с заголовка, который может иметь следующие варианты записей:
Function FName1 % нет входных и выходных параметров
Function FName2 (arg1, arg2, arg3) % нет выходных параметров
Function Ret1 = FName3 (arg1, arg2) % выходной параметр один
Function [Ret1, Ret2, Ret3] = FName4 (arg1) % вектор выходных параметров
Заголовок определяет интерфейс функции (способ взаимодействия с ней). Число входных и выходных параметров не лимитируется. Часто для краткости входные параметры называют аргументами, а выходные – значениями функции. Имя функции в заголовке должно совпадать с именем файла (без учета .m).
После заголовка следует тело функции. Заголовок и тело вместе называются определением функции. При вызове функции имена входных и выходных параметров могут не совпадать с именами в определении функции, поэтому они называются формальными.
Комментарии начинаются со знака %. Они автоматически окрашиваются в зеленый цвет. Первый комментарий после заголовка называется “ Строкой H1 (H1 line)”. MATLAB выводит эту строку в командное окно после вызова справки функцией lookfor или после запроса помощи по папке, в которую входит М-файл.
Эта команда ищет указанное слово в строках H1-line всех файл-функций в каталогах, указанных в путях поиска, в том числе и в текущем каталоге. Так, если например, задать в командной строке >> lookfor factorial, то MATLAB найдет не только ссылку на функцию factorial, но и на все функции, в H1 line которых содержится слово factorial :
Если запросить содержание папок с М-функциями через команду Help, то также выводится первая строчка комментария (H1 line) для каждой функции. Например:
…
. . .
Остальные строки комментария называются “Текст помощи (Help text)”; MATLAB выводит в командное окно данный текст вместе со строкой H1, когда запрашивается содержание конкретной М- функции с помощью команды type:
Информация по назначению и особенностям конкретной функции может быть получена по команде help имя_функции. Например:
Все встроенные функции MATLAB оформлены именно в таком стиле, поэтому при создании набора функций, предназначенных для широкого круга пользователей, есть смысл придерживаться данных соглашений. Например, собственная функция по расчету факториала fact может иметь следующее содержание:
function f = fact (n) % Заголовок функции
% FACT Factorial. % Первая строка помощи (H1 line)
% FACT(N) returns the factorial of N % Текст помощи (Help text)
% usually denoted by N! % Обычно обозначается N!
% Put simply, FACT(N) is PROD(1:N). % Проще говоря, …
f = prod(1:n); % Тело функции
При обращении к функции можно использовать аргументы с размерами и размерностями, отличающимися от использованных в определении функции. Например, вместо массива допускается использовать скаляр, т.к. он в MATLAB также является массивом (размером 1х1). Если функция имеет несколько возвращаемых параметров, ее можно использовать так же, как функцию с единственным выходным значением. В этом случае будет использоваться только первое из возвращаемых значений. Например, если заголовок функции будет иметь вид Function [Ret1, Ret2, Ret3] = XXX (arg1), то при записи А=XXX(20) переменной A присвоится значение выходного параметра Ret1.