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