Эта тема объясняет термин local function и показывает, как создать и использовать локальные функции.
Программные файлы 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>mymean
mymean Example of a local function.
Локальные функции в текущем файле имеют приоритет по функциям в других файлах. Таким образом, когда вы вызываете функцию в программном файле, проверки MATLAB, является ли функция локальной функцией перед поиском других основных функций. Поэтому можно создать альтернативную версию конкретной функции при сохранении оригинала в другом файле.
Все функции, включая локальные функции, имеют свои собственные рабочие области, которые являются отдельными от базового рабочего пространства. Локальные функции не могут переменные доступа, используемые другими функциями, если вы не передаете их в качестве аргументов. Напротив, вложенные функции (функции, полностью содержавшие в другой функции), могут переменные доступа, используемые функциями, которые содержат их.