parforでの計算結果出力について(メモリの処理)
4 views (last 30 days)
Show older comments
以下のコードのように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),:);
0 Comments
Answers (0)
See Also
Categories
Find more on ループと条件付きステートメント in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!