我需要将像str='x^2+3'
这样的字符串转换为函数。一种解决方法是获取内联函数,f=inline(str)
,但在未来版本中将不再支持。
一个解决办法是f=eval(['@(x)',f])
,但这似乎不是一个简洁的选项。
str2func
函数不能工作,因为它需要现有函数的名称。
我需要将像str='x^2+3'
这样的字符串转换为函数。一种解决方法是获取内联函数,f=inline(str)
,但在未来版本中将不再支持。
一个解决办法是f=eval(['@(x)',f])
,但这似乎不是一个简洁的选项。
str2func
函数不能工作,因为它需要现有函数的名称。
str2func
不起作用,你可以提到使用['@(x)' str]
实际上创建了一个函数,该函数在之后是存在的,并且能够让str2func
履行其职责。这只是一个建议,我稍后会删除评论。 - Robert Seifert['@(x)' str]
是即时创建的匿名函数的“名称”。 - Luis Mendo警告: STR2FUNC的输入“@(x)x^2+3”不是有效的函数名。 这将在未来的版本中生成错误。
我必须继续使用inline
。因此,既没有向前兼容性也没有向后兼容性。 - jinaweeeval
可能仍然有效,但我非常不喜欢它... - am304str2func
文档指定它从“函数名或定义匿名函数的字符串”构造函数句柄。在Matlab中,@(x)
语法定义了一个匿名函数。因此,Matlab似乎计划在未来继续支持这种方法。对于inline
则不能这样说。 - d11