使用函数句柄调用局部函数
下面的示例演示如何创建指向局部函数的句柄。如果函数返回指向局部函数的句柄,则可以在主函数外部调用局部函数。此方法可让您在单个文件中包含多个可调用函数。
在您的工作文件夹下的 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
函数从所有局部函数自动创建由函数句柄组成的元胞数组。如果您需要添加、删除或修改局部函数的名称,则此方法很方便。