parforでの計算​結果出力について(メ​モリの処理)

4 views (last 30 days)
dai
dai on 30 Sep 2020
以下のコードのようにparforの1ループごとに複数の解が得られ,解の個数がループ毎に変化する場合を考えます.
このとき,最も内側の計算は十分複雑でforループを利用する必要のあるものとします.
現状ではスライス化し,各イテレータを用いて結果を格納した後にparforループ外で結果が0となるものを除くことで欲しいデータを得ていますが,この手法では計算中に余分な配列が多く形成されるため,メモリの制約によって少ないループでしか計算ができません.
以下のコードで指すところのresult1やresult2を経由せずに直接Dの部分だけ取り出すような,少ないメモリで欲しいデータのみを取り出す方法はありませんでしょうか?
parfor i = 1:10
for j = 1:10
for k = 1:10
m = i*j*k;
if mod(m,3)==0
result1(i,j,k) = m;
end
result2(i,j,k) = i;
end
end
end
A = reshape(result1,numel(result1),1);
B = reshape(result2,numel(result2),1);
C = [A B];
D = C((C(:,1)~=0),:);

Answers (0)

Categories

Find more on ループと条件付きステートメント in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!