MATLAB 帮助中心
本页翻译不是最新的。点击此处可查看最新英文版本。
根据字符向量构造函数句柄
fh = str2func(str)
fh = str2func(str) 根据函数名称或匿名函数的文本表示来构造函数句柄 fh。
str
fh
使用 str2func 创建的函数句柄不具备对其本地工作区外部的变量或嵌套函数的访问权限。如果您的函数句柄包含这些变量或函数,则当您调用该句柄时,MATLAB® 会引发错误。而且,如果使用匿名函数的文本表示形式,则生成的函数句柄也不具备对私有函数或局部函数的访问权限。
str2func
示例
全部折叠
将字符向量 'ones' 转换为函数句柄,并使用该句柄调用 ones 函数。
'ones'
ones
c = 'ones'; fh = str2func(c)
fh = function_handle with value: @ones
fh(1,5)
ans = 1×5 1 1 1 1 1
将表示匿名函数的字符向量转换为函数句柄。工作区变量对 str2func 函数不可用。因此,要在字符向量中包含计算表达式所必需的值以及未定义为函数输入的值。
定义一个表示匿名函数 7x – 13 的字符向量。将该字符向量转换为函数句柄。
str = '@(x)7*x-13'; fh = str2func(str)
fh = @(x)7*x-13
使用该句柄调用匿名函数。
fh(3)
ans = 8
如果在字符向量中包含工作区变量,则 str2func 会创建函数句柄,但当您调用该函数句柄时,MATLAB 会引发错误。
a = 13; str = '@(x)7*x-a'; fh = str2func(str); fh(3)
Undefined function or variable 'a'. Error in @(x)7*x-a
eval
创建一个返回两个函数句柄的函数,用于模拟掷骰子。第一个骰子 (d1) 返回 1 和 6 之间的一个数字,但第二个骰子 (d2) 始终返回数字 1。
d1
d2
在您的 MATLAB 路径上的一个文件夹中创建以下函数。当 str2func 与表示匿名函数的字符向量一起使用时,它不具备对局部函数的访问权限。因此,MATLAB 将调用内置的 randi 函数,并返回 1 和 6 之间的一个数字。eval 函数确实具有对局部函数的访问权限,因此 d2 使用重载的 randi 并始终返回 1。
randi
function [d1,d2] = diceRoll str = '@()randi([1 6],1)'; d1 = str2func(str); d2 = eval(str); end function r = randi(~,~) r = 1; end
在命令提示符下调用 diceRoll 函数。
diceRoll
[p1,p2] = diceRoll
p1 = function_handle with value: @()randi([1,6],1) p2 = function_handle with value: @()randi([1,6],1)
p1 和 p2 都显示为与同一匿名函数相关联。
p1
p2
调用这些函数句柄。来自 p1 变量的结果为 1 和 6 之间的一个数字。来自 p2 的结果始终为 1。
p1() p2()
ans = 5 ans = 1
要转换为函数句柄的文本,指定为函数名称或者匿名函数的字符向量或字符串标量表示。
示例: str = 'cos'
str = 'cos'
示例: str = '@(x) x.^2'
str = '@(x) x.^2'
若使用 func2str 将存储变量值的函数句柄转换为字符向量,然后使用 str2func 将其转换回句柄,则该函数句柄不会保留所存储变量的原始值。
func2str
全部展开
用法说明和限制:
输入参量在编译时必须是常量/已知的。
代码生成不支持表示匿名函数的输入参量。
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
在 R2006a 之前推出
func2str | functions
functions
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 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处