2

parfor に変換したいネストされた for ループがあります。

row = 1;
for i = 5 : 0.2 : 5.4
    col = 1;
    for j = 2 : 0.5 : 2.5
        matrx(row, col) = i * j;
        col = col + 1;
    end
    row = row + 1;
end

これが可能になる方法はありますか?

4

1 に答える 1

7

非常に単純化されたバージョンのコードのみを表示していることを願っていますが、とにかく、parfor の秘密は、Matlab の多数のメッセージを聞いたり、ドキュメントを読んだりすることで見つけることができます。適切な Matlab コーディング プラクティスを学習することから始め、Matlab がparforループで必要とするデータにデータを適合させるような方法でコードを合理化します。

注意事項:

  1. parfor ループは整数でなければなりません。
  2. すべての行列を分類する必要があります (ドキュメントを参照してください)。
  3. ネストされた for ループではコンテナー マトリックスを使用する必要があります

最終的なアプリケーションによって異なりますが、これは私が行う 1 つの方法です。

iVal = 5 : 0.2 : 5.4;
jVal = 2 : 0.5 : 2.5;

iLen = length(iVal);
jLen = length(jVal);

matrx = zeros(iLen, jLen);

parfor i = 1:iLen
    dummy = zeros(1, jLen);
    for j = 1:jLen
        dummy(j) = iVal(i) * jVal(j);
    end
    matrx(i,:) = dummy;
end
于 2012-11-18T21:52:42.097 に答える