-1

我在一系列文件上运行了很多功能。因此,创建一个在文件上运行我的函数的函数是合乎逻辑的,而不是在每个文件中重复该过程。问题是每个函数的参数数量不同!所以伪代码是:

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

幸运的是,在我的例子中,输出几乎是相似的,我可以添加一些假人来使它们都相似。但是,如果有类似的方法来解决它们,我将不胜感激。

4

2 回答 2

1

如果输入按某种顺序(或可以重新排序),例如:

  • 所有函数都接受参数 1 到 3
  • 接受附加参数的函数按顺序排列:arg4 到 arg8、arg4 到 arg10 等。

然后,您可以通过添加varargin到每个不使用完整参数集的函数来非常简单地做到这一点,而只是代替未使用的参数(就像定义可选参数一样),然后在实际函数中忽略它。所以一个函数可能是:

function myfunction(raw, arg1, arg2, arg3, arg4, arg5, varargin)

实际上这仅使用 arg1...arg5 而其他被忽略。

于 2014-01-17T23:39:49.933 回答
0

Horchler 的答案是正确的,如果我只是将 varargin 作为 varargin{:} 传递,它会自动提供我需要的东西。如果您在每个函数中使用 varargin,然后尝试处理 varargin.arg1 而不是 arg1,它会减慢您的代码速度。有很多文章比较了性能。

于 2014-01-20T16:55:41.917 回答