字符串输入到MATLAB中的匿名函数

时间:2017-11-23 21:44:03

标签: matlab function

在matlab中,我知道我可以使用str2func将字符串转换为匿名函数。 例如;

s= '@(x) x.^2';
h= str2func(s);
h(2) would be 4

但是,如果我不知道未知的数量怎么办?假设该程序的用户将输入许多函数来获得系统的数值解。当用户输入x^2时,我应该在其开头添加@(x),然后将其转换为函数。但是在编程时间我不知道用户输入的功能有多少未知。 @(x)可能应为@(x,y)以及@(x,y,z)。如果用户输入未知数,我如何在运行时创建并添加必要的前缀?

ps:未知数可以是任何整数。

1 个答案:

答案 0 :(得分:1)

  • 您不仅需要知道变量的数量,还需要知道它们的名称和顺序。表达式可以是run。即使您知道表达式中包含两个变量并且能够解析x(c)x,您也无法判断用户是否打算定义c之类的内容。 },@(x, c) x(c)甚至像@(c, x) x(c)这样@(c, d) x(c)实际上是一个函数。
  • 解析表达式只是为了得到他们使用的名称是你不应该做的事情。
  • 限制允许的变量名称可能会很混乱。如果用户期望MATLAB语法而你正在解析为MATLAB,为什么要让你的生活变得更难?此外,当您引入仅限单字母变量名称的限制时,您必须问自己是否会出现需要超过27个变量的情况。

让用户在函数之前列出他们计划使用的变量的名称,这样会更安全。 x。现在你所要做的就是在(x, y, pi) pi*(x^2 + y)前加上,而不用担心@是内置函数还是参数。在我看来,符号很干净。