我已经阅读了正确使用eval()并且说实话,我无法判断我的用法是否属于“它很好”或“很糟糕”类别。请指教!
以下是我的代码所做的事情:
f ='exp(-x)'我要使用的函数的%字符串
G = GetGradient(f)%符号获取某个映射下的函数f的渐变
x =无论通过其他方式分配的向量x是什么
answer = eval(G)%输出是在点x处评估的梯度G.
对我来说重要的是'回答',向量x中所有点的渐变函数(以其他方式确定)。 eval就在这儿吗?感谢。
答案 0 :(得分:3)
我建议使用以下替代方法,假设G
在您的示例中是字符串'-exp(-x)'
。 STR2FUNC将您的函数字符串转换为匿名函数,然后您可以像往常一样进行评估。
gradFun = str2func(['@(x)' G]); %# this assumes that x is the independent variable in G
x = whatever;
answer = gradFun(x); %# or answer = gradFun(whatever);
编辑:如果GetGradient
返回符号表达式,则可以使用char
将其转换为字符串。