localfunctions

Указатели на функцию ко всем локальным функциям в файле MATLAB

Синтаксис

fcns = localfunctions

Описание

пример

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

Была ли эта тема полезной?