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

Начиная с 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.

Похожие темы