连接函数和变量号

时间:2014-03-23 10:40:52

标签: matlab

我已经完成了我的代码:

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))

问:我如何在一行中缩短代码?

谢谢!

1 个答案:

答案 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时出现的无数问题。