В этом примере показано, как создавать дескрипторы для локальных функций. Если функция возвращает дескрипторы локальным функциям, можно вызвать локальные функции вне основной функции. Этот подход позволяет использовать несколько вызываемых функций в одном файле.
Создайте следующую функцию в файле, ellipseVals.m, в рабочей папке. Функция возвращает структуру с дескрипторами локальным функциям.
% Copyright 2015 The MathWorks, Inc. function fh = ellipseVals fh.focus = @computeFocus; fh.eccentricity = @computeEccentricity; fh.area = @computeArea; 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
Вызовите функцию для получения struct дескрипторов к локальным функциям.
h = ellipseVals
h =
struct with fields:
focus: @computeFocus
eccentricity: @computeEccentricity
area: @computeArea
Вызовите локальную функцию, используя ее дескриптор для вычисления площади эллипса.
h.area(3,1)
ans =
9.4248
Кроме того, можно использовать localfunctions для автоматического создания массива ячеек дескрипторов функций из всех локальных функций. Этот подход удобен, если предполагается добавление, удаление или изменение имен локальных функций.