我在一系列文件上运行了很多函数。所以合理的做一个函数来运行我的文件功能,而不是在每个文件中重复这个过程。问题是每个功能的参数数目不同! 所以psudo代码是:Matlab:将所有参数传递给一个函数句柄
function [out1, out2]=batchDo(@func,adrs,arg1,arg2,...,argn)
files=ls(adrs);
for i=1:length(files)
raw=load([adrs files(i)]);
[out1, out2]=func(raw,arg1,arg2,...,argn)
out1s=out1+out1s;
out2s=out2+out2s;
end
out1=out1s/length(files);
out2=out2s/length(files);
在我的情况下输出
幸运的是几乎相同的,我可以添加一些假人,使他们所有类似。但如果无论如何要以类似的方式解决它们,我将不胜感激。
我不想使用varargin,因为我的数据很大,处理字段会使程序非常慢。 – anishtain4
如果你只对'func'使用'arg1'等,你可以使用'varargin'来单独寻址单元格,即'func(raw,varargin {:})'?或者创建一个匿名函数来捕获相关的参数并将其传入,例如'func2 = @(raw)func(raw,arg1,arg2,...,argn)'。我不确定任何人应该回答这个问题 - 这与“不清楚你问的是什么”有关。 – horchler
我认为你需要解释你对varargin的反对意见。它不应该很慢,并且显然是MATLAB中针对不同数量参数的明显机制。 – Peter