我已经完成了我的代码:
r= randper(3)
switch num2str(r(i))
case '1' F1=func1(var1);
case '2' F2=func2(var2);
case '3' F3=func3(var3);
otherwise disp('error');
end
在Matlab中,我找不到用“func”连接r的方法,而且可以读作函数而不是字符串
通常在其他语言中我可以这样做(这只是一个例子)
r= randper(3)
F+r(i)=func+r(i)(var+r(i))
问:我如何在一行中缩短代码?
谢谢!
答案 0 :(得分:1)
好的,有两种方法可以做到这一点:快速方式和好方法。
快速方法使用eval来评估字符串,就像它是m代码一样。
r= randper(3)
eval('F' + num2str(r(i)) + ' = func' + r(i) + '(var' + r(i) + ')');
这种好方法创建了一个函数指针数组,然后调用它们:
func{1} = @func1;
func{2} = @func2;
func{3} = @func3;
r = randperm(3);
F{r(i)} = func{r(i)}(var(r(i)));
上述方法有助于避免在使用eval时出现的无数问题。