Пользовательские функции и файл-скрипты
Файл-скрипт
Любую последовательность команд в MATLAB можно оформить в виде m-файла.
- Файл-скрипт не имеет входных и выходных аргументов.
- Файл-скрипт работает с данными из рабочей области.
- Все переменные, объявленные в файл-скрипте, являются глобальными.
Структура файл-скрипта
% Файл-скрипт my_script.m
% Комментарий,
% который появляется при вызове команды
% help my_script
x = 0:0.1:0.1;
y = sin(x);
plot(x,y);
Запустить, или другими словами выполнить последовательность действий, записанных в файл-скрипте, можно несколькими способами
- запустить скрипт из редактора, нажав F5 (MS Windows)
- набрать в консоли (Command window) имя скрипта и нажать Enter.
Во втором случае файл-скрипт должен находится в текущем (рабочем) каталоге
или в списке каталогов, которые просматривает MATLAB. Этот список можно изменить нажав кнопку Set Path на ленте Home
Файл-скрипт можно для удобства разделить на секции при помощи удвоенного знака процента %%. Код в каждой секции можно выполнить отдельно от остального кода, нажав F9 (MS Windows), когда курсор находится в нужной секции.
Файл-функции
Собственные функции можно создавать тремя основными способами, используя
- inline функции
- анонимные функции
- файл-функции
Inline-функции
Inline-функция объявляется при следующим образом:
>> f1 = inline('x1^2+x2^2', 'x1', 'x2');
>> f1(4,2)
т.е. вызывается функция inline, в которую первым аргументов передается строка - выражение от аргументов функции, которые передаются следующим аргументами также в виде строк. В выражениях inline-функций не могут использоваться имена переменных из рабочей среды, а только переменные – аргументы, объявленные в функции inline.
Вызывается объявленная inline, как и любая другая функция, например, для объявленной выше функции двух переменных:
>> f1(4,2)
Анонимные функции
Более практичны в сравнении с inline-функциями анонимные функции, которые могут содержать имена переменных из рабочей среды. Анонимные функции также можно использовать для объявления коротких однострочных функций, создание для которых отдельных m-файлов нецелесообразно.
Анонимная функция объявляется при помощи символа @, за которым в круглых скобках следуют аргументы функции, а затем её выражение, например, для объявления функции \[f(x_1, x_2) = x_1^2 + x_2^2\]
необходимо написать
>> f = @(x1,x2) x1^2+x2^2;
Анонимные функции удобно использовать внутри выражений, например для построения графика функции \(x^2 + sin(x)\) на интервале от 0 до 5 можно написать
>> f = @(x) x.^2 + sin(x);
>> fplot( f, 0, 5 );
но проще использовать анонимную функцию прямо в функции fplot
>> fplot( @(x) x.^2 + sin(x), 0, 5);
Файл-функция
- Файл-функция содержит определение одной или нескольких функций.
- По-умолчанию все переменные, объявленные внутри файл-функции, являются локальными.
- Файл-функция является самостоятельным программным модулем, который связан с другими модулями и головной программой через входные и выходные параметры.
Создание файл-функции: File -> New -> Function
% Комментарий к функции
%
function [res1, res2] my_function(x1, x2)
res1 = x1^2 + x2^2;
res2 = x1 + x2;
По умолчанию все переменные внутри функции являются локальными. Для того, чтобы несколько функций использовали одну переменную, её необходимо объявить глобальной.
% Комментарий к функции
%
function [res1, res2] my_function(x1, x2)
global g;
res1 = g + x1^2 + x2^2;
res2 = x1 + x2;
Имя файла и имя объявленной в нем функции должны совпадать. Как и для файл-скриптов каталог, в котором содержатся вызываемые функции, должен быть текущим (рабочим) или добавлен в список просматриваемых MATLAB.
Функция прекращает работу после выполнения последнего оператора. Принудительно завершить функцию можно директивой return.
Файл-функция вместе с определением основной функции может содержать определения вспомогательных функций, доступных к вызову только из основной функции. Переменные, используемые во внутренних функциях локальные.
function f = myfun(x)
f1 = infun(x);
f = f1 + cos(x);
% Внутренняя функция
function res = infun(x)
a = 3;
res = sin(x*3);