parforでの計算結果出力について(メモリの処理)
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
以下のコードのように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 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur ループと条件付きステートメント dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!