Начиная с R2016b, MATLAB® скрипты, включая live скрипты, могут содержать код для определения функций. Эти функции называются local functions. Локальные функции полезны, если вы хотите повторно использовать код в скрипте. Добавив локальные функции, можно избежать создания отдельных файлов функций и управления ими. Они также полезны для экспериментов с функциями, которые могут быть добавлены, изменены и легко удалены по мере необходимости.
Чтобы создать скрипт или live скрипт с локальными функциями, перейдите на вкладку Home и выберите New > Script или New > Live Script. Затем добавьте код к скрипту. Добавьте все локальные функции в конце файла, после кода скрипта. Включите по крайней мере одну строку кода скрипта перед локальными функциями. Каждая локальная функция должна начинаться со своего оператора определения функции и заканчиваться end
ключевое слово. Функции могут появиться в любом порядке.
Например, создайте скрипт под названием mystats.m
.
edit mystats
В файл включите две локальные функции, mymean
и mymedian
. Область скрипта mystats
объявляет массив, определяет длину массива, а затем использует локальные функции mymean
и mymedian
для вычисления среднего и среднего значения массива.
x = 1:10; n = length(x); avg = mymean(x,n); med = mymedian(x,n); function a = mymean(v,n) % MYMEAN Local function that calculates mean of array. a = sum(v)/n; end function m = mymedian(v,n) % MYMEDIAN Local function that calculates median of array. 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
Когда вы добавляете локальные функции к live скрипту, MATLAB автоматически добавляет пропуск раздела перед первым определением локальной функции и удаляет все пропуски раздела после него. Это связано с тем, что live скрипты не поддерживают отдельные разделы в локальных функциях.
Чтобы запустить скрипт или live скрипт, который включает локальные функции, на вкладке Editor или Live Editor, нажмите кнопку Run. Вы также можете ввести имя сохраненного скрипта в Командном окне.
Чтобы запустить отдельный раздел, поместите курсор внутрь раздела и используйте
кнопку Run Section (требует R2017b или более поздней версии для .m файлы). В
.mlx
файлы можно запускать разделы только тогда, когда они находятся перед локальными определениями локальных функций.
Локальные функции видны только в файле, где они определены. Они не видны функциям в других файлах и не могут быть вызваны из Командного окна.
Локальные функции в текущем файле имеют приоритет над функциями в других файлах. То есть, когда вы вызываете функцию в скрипте, MATLAB проверяет, является ли функция локальной функцией, прежде чем искать функцию в других местоположениях. Это позволяет вам создать альтернативную версию конкретной функции с сохранением оригинала в другом файле.
Скрипты создают и получают доступ к переменным в базовом рабочем пространстве. Локальные функции, как и все другие функции, имеют свои собственные рабочие области, которые отделены от базового рабочего пространства. Локальные функции не могут получить доступ к переменным в рабочей области других функций или в базовом рабочем пространстве, если вы не передаете их как аргументы.
Хотя вы не можете вызвать локальную функцию из командной строки или из функций в других файлах, вы можете получить доступ к ее помощи, используя help
команда. Задайте имена как скрипта, так и локальной функции, разделяя их >
символ.
Для примера:
help mystats>mymean
mymean Local function that calculates mean of array.