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

Скрипты 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 скриптах

Live Editor не поддерживает рабочие отдельные разделы в локальных функциях. Поэтому вы не можете добавить разрывы раздела в локальных функциях в live скриптах. Когда вы добавляете локальные функции в live скрипт, MATLAB автоматически добавляет разрыв раздела перед первым определением локальной функции и удаляет все разрывы раздела после него. Можно однако запустить отдельные разделы в рамках кода скрипта, даже если они содержат вызов одной из локальных функций в файле. Для получения дополнительной информации о разрывах раздела и рабочих live скриптах, смотрите Разделы Выполнения в Live скриптах.

Похожие темы