3

parfor ループ内に行列を保存しようとしています。matlab ではこれが許可されておらず、別のプログラムを作成する必要があることはわかっています。少しグーグルで別の関数を作成することをお勧めします。次のように parfor と言います。

  function parsave(fname, x,y)

    save(fname, 'x', 'y')

   end

私が直面している問題は、プログラムがすべての反復を実行する前にエラーなしで停止しているように見えることです (つまり、ファイルの約半分を保存しています)。小さなファイル (約 1M) がたくさんあります。これが問題でしょうか?

前もって感謝します

4

1 に答える 1

4

parfor 内で save を直接呼び出すと、透明性の要件に違反します。代わりに、save を呼び出すことができる別の関数に変数を渡す必要があります。

Matlab が提供する例は次のとおりです。

以下を「parsave.m」として保存します。

    function parsave(fname, x,y)
    save(fname, 'x', 'y')
    end

次に、次のように実行します。

    parfor ii = 1:4
    x = rand(10,10);
    y = ones(1,3);
    parsave(sprintf('output%d.mat', ii), x, y);
    end
于 2013-01-17T20:47:48.043 に答える