如何通过将其名称作为字符串来使用函数

Sar*_*let 1 string matlab eval function sequence

假设您要使用MATLAB中定义的函数序列,并将这些函数的名称作为字符串变量.假设你已经创建了fun1,, fun2... funN,并且你还有一个字符串向量['fun1','fun2',...,'funN'].如何自动调用每个函数而不必逐个写入每个函数的名称?

Jon*_*nas 6

使用str2func.当然,如果函数已被定义为函数句柄(例如fun1 = @(x)x+x.^2+sqrt(x))),则可以跳过下面的str2func步骤.

strList= {'sum','mean','max','min'};
funList = cellfun(@str2func,strList,'uniformOutput',false);

nFunctions = length(funList);
data = rand(10,1);
results = zeros(nFunctions,1)

for iFunction = 1:nFunctions
    results(iFunction) = fulList{iFunction}(data);
end
Run Code Online (Sandbox Code Playgroud)