0

11 個の入力パラメーターを持つ関数があります。

MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500, 'MyFile');

入力パラメータ'MyFile'が に渡されるとMyFunction、save コマンドを使用してテキスト ファイルが保存されます。これは、行の 10 番目の入力パラメータで 6 列 (たとえば 1500) です。通常、別の実行を解析する準備ができたら、このファイルを MATLAB に読み込みます。

私はMyFunction m回実行し、最終的にそれらの m'MyFile'回の実行の中心傾向 (平均または中央値など) の尺度を持ちたいと思います。

m=10
for i = 1:m;
    MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500, 'MyFile');
end;

for ループを使用して、'MyFile'反復ごとに新しい名前 (例: MyFile1、MyFile2、...、MyFileM) を生成しMyFile = sprintf('MyFile%m');、すべての MyFile を MATLAB にロードし直してから、それらの平均を取り、ファイルとして保存することができます。 UltimateMyFile ですが、これは面倒なようです。これらの出力ファイルをより直接的に平均化するためのより良い方法はありますか? ファイルをオブジェクトとして保存するかdlmwrite、またはを使用する必要があり-appendますか?

ありがとう。

4

1 に答える 1

1

中央値を見つけようとしているので、すべてのデータにアクセスする必要があります。

あなたは言う3次元配列を定義することができます

data = zeros(1500,6,m);

そして、for ループの各ステップで更新します。

data(:,:,i) = MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500);

もちろん、正しい出力を得るには関数を再定義する必要があります。

ただし、他のときにデータにアクセスする必要がある場合は、ファイルに書き込んでそこから読み取る方が適切です。

平均のみに関心がある場合は、各ケースを分析する際に現在の合計を保持し、それをケース数で割ることができます ( m)。

于 2012-11-29T05:50:53.187 に答える