localfunctions
MATLAB 文件中所有局部函数的函数句柄
说明
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 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)