我必须创建一个类型为
的函数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不允许我使用"" (双引号)。
由于
答案 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);