-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 に答える