MATLAB:将具有自定义符号函数的字符串转换为符号函数,并对其求值

MATLAB:将具有自定义符号函数的字符串转换为符号函数,并对其求值,matlab,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)),funcTh

我有一个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))
请帮忙。

简单的方法(如“自杀是简单的出路”)是使用
eval

result=eval(string);
然而,使用
eval
是不安全的,通常被认为是不好的做法,应该不惜一切代价避免。因为表达式是以字符串形式给出的,所以我不确定是否有其他方法来计算它

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

简单的方法(如“自杀是简单的出路”)是使用
eval

result=eval(string);
然而,使用
eval
是不安全的,通常被认为是不好的做法,应该不惜一切代价避免。因为表达式是以字符串形式给出的,所以我不确定是否有其他方法来计算它

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