在matlab中,我知道我可以使用str2func
将字符串转换为匿名函数。
例如;
s= '@(x) x.^2';
h= str2func(s);
h(2) would be 4
但是,如果我不知道未知的数量怎么办?假设该程序的用户将输入许多函数来获得系统的数值解。当用户输入x^2
时,我应该在其开头添加@(x)
,然后将其转换为函数。但是在编程时间我不知道用户输入的功能有多少未知。 @(x)
可能应为@(x,y)
以及@(x,y,z)
。如果用户输入未知数,我如何在运行时创建并添加必要的前缀?
ps:未知数可以是任何整数。
答案 0 :(得分:1)
run
。即使您知道表达式中包含两个变量并且能够解析x(c)
和x
,您也无法判断用户是否打算定义c
之类的内容。 },@(x, c) x(c)
甚至像@(c, x) x(c)
这样@(c, d) x(c)
实际上是一个函数。让用户在函数之前列出他们计划使用的变量的名称,这样会更安全。 x
。现在你所要做的就是在(x, y, pi) pi*(x^2 + y)
前加上,而不用担心@
是内置函数还是参数。在我看来,符号很干净。