Программные файлы могут содержать несколько функций. Локальные и вложенные функции полезны для деления программ на меньшие задачи, облегчая чтение и обслуживание своего кода.
Local functions стандартных подпрограмм доступны в том же файле. Локальные функции являются наиболее распространенным способом разбить программные задачи. В файле функции, который содержит только определения функций, локальные функции могут появиться в файле в любом порядке после основной функции в файле. В файле скрипта, который содержит команды и определения функций, локальная функция должна быть в конце файла. (Функции в скриптах поддерживаются в R2016b или более поздней версии.)
Например, создайте файл функции с именем myfunction.m
который содержит основную функцию, myfunction
и две локальные функции, squareMe
и doubleMe
:
function b = myfunction(a) b = squareMe(a)+doubleMe(a); end function y = squareMe(x) y = x.^2; end function y = doubleMe(x) y = x.*2; end
Можно вызвать основную функцию из командной строки или другого программного файла, хотя локальные функции доступны только для myfunction
:
myfunction(pi)
ans = 16.1528
Nested functions полностью содержатся в другой функции. Основное различие между вложенными функциями и локальными функциями заключается в том, что вложенные функции могут использовать переменные, заданные в родительских функциях, не передавая явно эти переменные в качестве аргументов.
Вложенные функции применяются, когда стандартные подпрограммы совместно используют данные, такие как приложения, которые передают данные между компонентами. Например, создайте функцию, которая позволит вам задать значение от 0 до 1 с помощью ползунка или редактируемого текстового поля. Если вы используете вложенные функции для коллбэков, ползунок и текстовое поле могут совместно использовать значение и указатели друг на друга, не передавая их явно:
function myslider value = 0; f = figure; s = uicontrol(f,'Style','slider','Callback',@slider); e = uicontrol(f,'Style','edit','Callback',@edittext,... 'Position',[100,20,100,20]); function slider(obj,~) value = obj.Value; e.String = num2str(value); end function edittext(obj,~) value = str2double(obj.String); s.Value = value; end end
Как и локальные или вложенные функции, частные функции доступны только для функций в определенном местоположении. Однако частные функции находятся не в том же файле, что и функции, которые могут их вызывать. Вместо этого они находятся в подпапке с именем private
. Частные функции доступны только для функций в папке, расположенной непосредственно над private
папка. Используйте частные функции для разделения кода на различные файлы или для совместного использования кода между несколькими связанными функциями.
Анонимные функции позволяют вам задавать функцию, не создавая программный файл, пока функция состоит из одного оператора. Общее применение анонимных функций состоит в том, чтобы задать математическое выражение, а затем вычислить это выражение в области значений значений с помощью функции MATLAB ®, т.е. функции, которая принимает указатель на функцию как вход.
Для примера этот оператор создаёт указатель на функцию с именем s
для анонимной функции:
s = @(x) sin(1./x);
Эта функция имеет один вход, x
. The @
оператор создает указатель на функцию.
Можно использовать указатель на функцию, чтобы вычислить функцию для конкретных значений, таких как
y = s(pi)
y = 0.3130
Или можно передать указатель на функцию в функцию, которая оценивает в области значений значений, таких как fplot
:
range = [0.01,0.1]; fplot(s,range)