MATLAB 帮助中心
当前文件中所有局部函数的句柄
fcns = localfunctions
fcns = localfunctions 返回当前 MATLAB® 文件中所有局部函数的句柄元胞数组。在元胞数组中,localfunctions 以未定义的顺序返回函数句柄。
fcns
localfunctions
您不能在命令行或匿名函数的上下文中定义局部函数,因此,当您从这些上下文中调用 localfunctions 时,会得到一个空元胞数组。
示例
全部折叠
在当前文件夹中名为 computeEllipseVals.m 的文件中,创建一个主函数,该函数返回该文件中所有局部函数句柄的元胞数组。每个局部函数都计算一个椭圆的特定度量。
computeEllipseVals.m
function fcns = computeEllipseVals fcns = 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
调用 computeEllipseVals 函数以获取包含局部函数句柄的元胞数组。
computeEllipseVals
fcns = computeEllipseVals
fcns = 3×1 cell array { @computeFocus} {@computeEccentricity} { @computeArea}
使用某局部函数的句柄调用该局部函数来计算具有测量值 a = 5 和 b = 1 的椭圆面积。computeArea 函数由元胞数组的第三个元素表示。
a = 5
b = 1
computeArea
fcns{3}(5,1)
ans = 15.7080
在当前文件夹内一个名为 mystats.m 的文件中创建 mystats 脚本。该脚本使用文件中局部函数句柄元胞数组来显示向量的均值和中位数。
mystats.m
mystats
x = [1 3 5 7 9 10 8 6 4 2 0 -2]; fcns = localfunctions; for i = 1:length(fcns) disp(extractAfter(func2str(fcns{i}),2) + ": " + num2str(fcns{i}(x))) end 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 显示通过调用函数句柄计算出的值。
mean: 4.4167 median: 4.5
访问由脚本创建的函数句柄的元胞数组。
fcns = 2×1 cell array { @mymean} {@mymedian}
基于显示的值,元胞数组的第二个元素指向 mymedian 局部函数的句柄。使用此函数句柄返回一个任意向量的中位数。
mymedian
x2 = [1 1 2 6 24 120 720 5040]; median2 = fcns{2}(x2)
median2 = 15
当前文件中所有局部函数的句柄,以函数句柄元胞数组形式返回。
在 R2013b 中推出
functiontests
buildplan
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处