文档帮助中心
str2func
eval
本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。
根据字符向量构造函数句柄
fh = str2func(str)
示例
fh = str2func(str) 根据函数名称或匿名函数的文本表示来构造函数句柄 fh。
str
fh
使用 str2func 创建的函数句柄不具备对其局部工作区外部的变量或嵌套函数的访问权限。如果您的函数句柄包含这些变量或函数,则当您调用该句柄时,MATLAB® 会引发错误。而且,如果使用匿名函数的文本表示形式,则生成的函数句柄也不具备对私有函数或局部函数的访问权限。
全部折叠
将字符向量 '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
创建一个返回两个函数句柄的函数,用于模拟掷骰子。第一个骰子 (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
用法说明和限制:
输入参数在编译时必须是常量/已知的。
代码生成不支持表示匿名函数的输入参数。
func2str | functions
functions
您的系统上存在此示例的修改版本。是否要打开此版本?
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
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:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office