В этом примере показано, как создать указатели на локальные функции. Если функция возвращает указатели на локальные функции, можно вызвать локальные функции за пределами основной функции. Этот подход позволяет вам иметь несколько, вызываемых функций в одном файле.
Создайте следующую функцию в файле, ellipseVals.m
, в рабочей папке. Функция возвращает struct с указателями к локальным функциям.
% 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
функция для автоматического создания cell-массива указателей на функцию из всех локальных функций. Этот подход удобен, если вы ожидаете добавить, удалить или изменить имена локальных функций.