文档帮助中心文档
str2func
eval
从字符向量构造函数句柄
Fh = str2func(str)
例子
Fh = str2func(str)构造一个函数句柄,跳频,从函数名或匿名函数的文本表示中获取。
Fh = str2func(str)
str
跳频
使用str2func不能访问本地工作区之外的变量或嵌套函数。如果你的函数句柄包含这些变量或函数,MATLAB®在调用句柄时抛出错误。此外,如果使用匿名函数的文本表示形式,则生成的函数句柄不能访问私有函数或本地函数。
全部折叠
转换字符向量“的”函数句柄,并调用的函数使用句柄。
“的”
的
c =“的”;Fh = str2func(c)
跳频=Function_handle with value:@ones
跳频(1、5)
ans =1×51 1 1 1 1 1
将表示匿名函数的字符向量转换为函数句柄。的工作区变量不可用str2func函数。因此,在字符向量中包含计算表达式所必需的值,并且这些值没有定义为函数输入。
定义一个表示匿名函数的字符向量7x- 13.将字符向量转换为函数句柄。
str =“@ (x) 7 * x-13”;Fh = str2func(str)
Fh = @(x)7*x-13
使用句柄调用匿名函数。
跳频(3)
Ans = 8
如果在字符向量中包含工作区变量,str2func创建函数句柄,但MATLAB在调用函数句柄时抛出错误。
A = 13;str =“@ x (x) 7 *”;Fh = str2func(str);跳频(3)
未定义的函数或变量'a'。@(x)7*x-a错误
创建一个函数,返回两个用于模拟掷骰子的函数句柄。第一个骰子(d1)返回从1到6的数字,但第二个骰子(d2)总是返回数字1。
d1
d2
在MATLAB路径下的文件夹中创建以下函数。当str2func与表示匿名函数的字符向量一起使用时,它不能访问本地函数。因此,MATLAB调用内置的兰迪函数,并返回从1到6的数字。的eval函数可以访问本地函数,所以d2使用重载兰迪并且总是返回1。
兰迪
函数[d1,d2] = dicerroll str =' @()兰迪([1 - 6],1)”;D1 = str2func(str);D2 = eval(str);结束函数R = randi(~,~) R = 1;结束
在命令提示符下,调用diceRoll函数。
diceRoll
[p1,p2] = dicerroll
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
使用注意事项和限制:
输入参数在编译时必须是常量/已知的。
代码生成不支持表示匿名函数的输入参数。万博1manbetx
func2str|功能
功能
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处