知道一些Matlab函数,知道它们的名字

dyn*_*mic 3 matlab

假设我有func1,func2而且func3.有没有办法用已知的参数来定义他们的名字来调用它们?(或者他们的指针?处理程序?)

就像是:

toBeRunned = [ 'func1'; 'func2'; 'func3' ];
// .. foreach entry of toBeRunned call the function with VAR params ..
Run Code Online (Sandbox Code Playgroud)

Pur*_*uit 7

这就是函数句柄的意思.

toBeRun = {@func1, @func2, @func3};
for ix = 1:length(toBeRun)
    fnArguments = {1, 2, 3, 'four'};
    fnTmp = toBeRun{ix};
    fnTmp(fnArguments{:});
end
Run Code Online (Sandbox Code Playgroud)

关于我们在这里做什么的更多解释:

  1. toBeRun是一个函数句柄的单元格数组,只是一个任意列表.对于写为M文件的函数,添加了@创建函数句柄所需的全部内容.

  2. 为了评估函数,需要将其从单元格数组中删除(fnTmp在本例中为.)这是Matlab的语法限制.你也可以使用fneval,但我通常这样做.

  3. 可以按照通常的方式(例如fnTmp(1,2,3,'four'))根据需要添加任何参数.但是如果你需要这么多的抽象,你可能还需要使用任意数量的输入参数.该fnArguments电池是完成这一个非常灵活的方式.