exponenta event banner

localfunctions

Обработка всех локальных функций в файле MATLAB

Описание

пример

fcns = localfunctions возвращает массив ячеек дескрипторов функций, fcns, для всех локальных функций в текущем файле.

Невозможно определить локальные функции в контексте командной строки или анонимные функции, поэтому при вызове localfunctions из этих контекстов получается пустой массив ячеек. Внутри массива ячеек, localfunctions возвращает дескрипторы функции в неопределенном порядке.

Примеры

свернуть все

Создайте следующую функцию в файле, computeEllipseVals.m, в рабочей папке. Функция возвращает массив ячеек с дескрипторами всем локальным функциям.

function fh = computeEllipseVals
fh = localfunctions;
end

function f = computeFocus(a,b)
f = sqrt(a^2-b^2);
end

function e = computeEccentricity(a,b)
f = computeFocus(a,b);
e = f/a;
end

function ae = computeArea(a,b)
ae = pi*a*b;
end

В командной строке вызовите функцию, чтобы получить массив ячеек дескрипторов для локальных функций.

fh = computeEllipseVals
fh =

  3x1 cell array

    {       @computeFocus}
    {@computeEccentricity}
    {        @computeArea}

Вызовите локальную функцию, используя ее дескриптор для вычисления площади эллипса. computeArea дескриптор функции является третьим элементом в массиве ячеек.

fh{3}(3,1)
ans =

    9.4248

С R2016b года в сценарии можно включать локальные функции. Поэтому вы можете использовать localfunctions для создания дескрипторов функций, которые можно вызвать в сценарии или в командной строке.

Создайте следующий сценарий в файле, mystats.m, в рабочей папке. Сценарий создает массив ячеек с дескрипторами для всех локальных функций.

x = [1 3 5 7 9 10 8 6 4 2 0 -2];

avg = mymean(x)

fh = localfunctions;
med = fh{2}(x) % equivalent to med = mymedian(x,n)

function a = mymean(v)
n = length(v);
a = sum(v)/n;
end

function m = mymedian(v)
n = length(v);
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 ® вычисляет среднее значение путем непосредственного вызова локальной функции mymean и медианы путем вызоваmymedian локальная функция через дескриптор функции.

mystats
avg =

    4.4167


med =

    4.5000

В командной строке вызовите mymean локальная функция с помощью своего дескриптора. Переменные из сценария доступны в командной строке. mymean дескриптор функции является первым элементом в массиве ячеек.

x2 = [1 1 2 6 24 120 720 5040];
fh
avg2 = fh{2}(x2)
fh =

  2x1 cell array

    {  @mymean}
    {@mymedian}


avg2 =

    15

Представлен в R2013b