【发布时间】:2014-01-17 20:50:59
【问题描述】:
我在一系列文件上运行了很多函数。因此,创建一个在文件上运行我的函数的函数是合乎逻辑的,而不是在每个文件中重复该过程。问题是每个函数的参数数量不同! 所以伪代码是:
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,因为我的数据很大,而且对字段进行寻址会使例程非常慢。
-
如果您只使用
arg1等来表示func,您是否可以只使用varargin而无需单独寻址单元格,即func(raw,varargin{:})?或者创建一个匿名函数来捕获相关参数并将其传入,例如func2=@(raw)func(raw,arg1,arg2,...,argn)。我不确定任何人应该如何回答这个问题——它接近于“不清楚你在问什么”。 -
我认为您需要解释您对 varargin 的反对意见。它不应该很慢,并且显然是 MATLAB 中用于不同数量参数的明显机制。
标签: matlab arguments function-handle