В этом разделе описывается термин локальная функция и показано, как создавать и использовать локальные функции.
Программные файлы MATLAB ® могут содержать код для нескольких функций. В файле функций первая функция в файле называется основной функцией. Эта функция видна для функций в других файлах, или ее можно вызвать из командной строки. Дополнительные функции внутри файла называются локальными функциями, и они могут возникать в любом порядке после основной функции. Локальные функции видны только другим функциям в том же файле. Они эквивалентны подпрограммам в других языках программирования и иногда называются подфункциями.
С R2016b, можно также создавать локальные функции в файле сценария, если все они отображаются после последней строки кода сценария. Дополнительные сведения см. в разделе Добавление функций в сценарии.
Например, создайте файл функции с именем mystats.m который содержит основную функцию, mystatsи две локальные функции, mymean и mymedian.
function [avg, med] = mystats(x) n = length(x); avg = mymean(x,n); med = mymedian(x,n); end function a = mymean(v,n) % MYMEAN Example of a local function. a = sum(v)/n; end function m = mymedian(v,n) % MYMEDIAN Another example of a local function. w = sort(v); if rem(n,2) == 1 m = w((n + 1)/2); else m = (w(n/2) + w(n/2 + 1))/2; end end
Локальные функции mymean и mymedian вычислить среднее значение и медиану входного списка. Основная функция mystats определяет длину списка n и передает его локальным функциям.
Хотя вы не можете вызвать локальную функцию из командной строки или из функций в других файлах, вы можете получить доступ к ее справке с помощью help функция. Укажите имена как файла, так и локальной функции, разделяя их > символ:
help mystats>mymeanmymean Example of a local function.
Локальные функции в текущем файле имеют приоритет над функциями в других файлах. То есть при вызове функции в файле программы MATLAB проверяет, является ли функция локальной, прежде чем искать другие основные функции. Поэтому можно создать альтернативную версию определенной функции, сохранив оригинал в другом файле.
Все функции, включая локальные, имеют собственные рабочие области, которые отделены от базовой рабочей области. Локальные функции не могут обращаться к переменным, используемым другими функциями, если они не переданы в качестве аргументов. Напротив, вложенные функции (функции, полностью содержащиеся в другой функции) могут обращаться к переменным, используемым функциями, которые их содержат.