Начиная с R2016b, сценарии MATLAB ®, включая сценарии в реальном времени, могут содержать код для определения функций. Эти функции называются локальными. Локальные функции полезны, если требуется повторно использовать код в сценарии. Добавление локальных функций позволяет избежать создания отдельных файлов функций и управления ими. Они также полезны для экспериментов с функциями, которые можно легко добавлять, изменять и удалять по мере необходимости.
Чтобы создать сценарий или сценарий в реальном времени с локальными функциями, перейдите на вкладку «Главная» и выберите «Создать» > «Сценарий» или «Создать» > «Сценарий в реальном времени». Затем добавьте код в сценарий. Добавьте все локальные функции в конце файла после кода сценария. Включите хотя бы одну строку кода сценария перед локальными функциями. Каждая локальная функция должна начинаться с собственной инструкции определения функции и заканчиваться на 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
При добавлении локальных функций в живой сценарий MATLAB автоматически добавляет разрыв раздела перед первым определением локальной функции и удаляет все разрывы раздела после него. Это связано с тем, что сценарии в реальном времени не поддерживают отдельные разделы в локальных функциях.
Для запуска сценария или сценария в реальном времени, включающего локальные функции, на вкладке «Редактор» или «Редактор в реальном времени» нажмите
кнопку «Выполнить». Имя сохраненного сценария можно также ввести в окне команд.
Чтобы запустить отдельный раздел, установите курсор внутри раздела и используйте
кнопку Run Section (требуется R2017b или более позднюю версию для .m файлы). В .mlx можно запускать разделы только тогда, когда они находятся перед определениями локальных функций.
Локальные функции отображаются только в файле, в котором они определены. Они не отображаются для функций в других файлах и не могут быть вызваны из окна команд.
Локальные функции в текущем файле имеют приоритет над функциями в других файлах. То есть при вызове функции в сценарии MATLAB проверяет, является ли функция локальной, прежде чем искать функцию в других местоположениях. Это позволяет создать альтернативную версию определенной функции, сохранив оригинал в другом файле.
Сценарии создают переменные и обращаются к ним в базовой рабочей области. Локальные функции, как и все другие, имеют собственные рабочие области, которые отделены от базовой рабочей области. Локальные функции не могут обращаться к переменным в рабочей области других функций или в базовой рабочей области, если только они не переданы в качестве аргументов.
Хотя вы не можете вызвать локальную функцию из командной строки или из функций в других файлах, вы можете получить доступ к ее справке с помощью help команда. Укажите имена как сценария, так и локальной функции, разделяя их на > персонаж.
Например:
help mystats>mymeanmymean Local function that calculates mean of array.