MATLAB:将带有自定义符号函数的字符串转换为符号函数,并对其进行评估

时间:2015-10-17 20:18:39

标签: matlab

我有一个来自MATLAB表格的字符串:

string = 'funcTwo(funcOne(a,funcTwo(b,a)),funcThree(a))'

我将以下函数定义为符号函数:

syms a b l
funcOne(a,b) = a*b - a^b
funcTwo(a,b) = a*b - b^b
funcThree(a) = 5+a*7

我想通过执行定义的符号函数来评估此字符串,如:

result = funcTwo(funcOne(a,funcTwo(b,a)),funcThree(a))

result =

- (7*a + 5)*(a*(a^a - a*b) + a^(a*b - a^a)) - (7*a + 5)^(7*a + 5)

我如何使用字符串作为输入?我尝试过使用sym(),但它无法正常工作:

result=sym(string)

result =

funcTwo(funcOne(a, funcTwo(b, a)), funcThree(a))

请帮助。

1 个答案:

答案 0 :(得分:0)

简单的方法(如“自杀是最简单的方法”)正在使用eval

result=eval(string);

然而,使用eval是不安全的,通常被视为不良做法,应该不惜一切代价避免使用。由于你的表达式是一个字符串,我不确定还有另一种方法来评估它。

这引出了一个问题:为什么它首先是一个字符串?难道你不能避免将命令放入字符串(这是使用eval的温床)?您熟悉anonymous functions和函数句柄吗?