exponenta event banner

Добавление функций в сценарии

Начиная с 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>mymean
 mymean Local function that calculates mean of array.

Связанные темы