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