Matlab评估功能

时间:2014-12-17 20:34:03

标签: matlab

我必须创建一个类型为

的函数
myfunc( inp1, inp2, inp3) where inp1 is string/char and inp2 and inp3 are doubles.

因此,对上述函数的示例调用将如下:

myfunc( 'USA', 13, 25)

上述示例调用将在运行时根据各种条件生成,之后我将需要执行评估。

myfunc_implementable = "myfunc( 'USA', 13, 25)";
output(1) = eval(myfunc_implementable);

myfunc_implementable = "myfunc( 'America', 113, 125)";
output(2) = eval(myfunc_implementable);

我如何实现上述目标?因为Matlab不允许我使用"" (双引号)。

由于

1 个答案:

答案 0 :(得分:4)

而不是eval,您应该更喜欢function handles

myfunc_implementable = @() myfunc('USA', 13, 25);
...
output(1) = myfunc_implementable();

myfunc_implementable = @() myfunc('America', 113, 125);
...
output(2) = myfunc_implementable();

您还可以在单​​元格中收集参数并使用feval调用该函数:

func1 = @myfunc;
args1 = {'USA', 13, 25};
...
output(1) = feval(func1, args1{:});

如果你真的想出于某种原因使用eval,只需在字符串中写两个连续的单引号作为单引号的转义序列:

>> myfunc_implementable = 'myfunc(''USA'', 13, 25);';
>> disp(myfunc_implementable);
myfunc('USA', 13, 25);