我应该在这里使用eval()吗?

时间:2011-03-23 16:07:24

标签: matlab eval

我已经阅读了正确使用eval()并且说实话,我无法判断我的用法是否属于“它很好”或“很糟糕”类别。请指教!

以下是我的代码所做的事情:

  

f ='exp(-x)'我要使用的函数的%字符串

     

G = GetGradient(f)%符号获取某个映射下的函数f的渐变

     

x =无论通过其他方式分配的向量x是什么

     

answer = eval(G)%输出是在点x处评估的梯度G.

对我来说重要的是'回答',向量x中所有点的渐变函数(以其他方式确定)。 eval就在这儿吗?感谢。

1 个答案:

答案 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将其转换为字符串。