whileループからparforループへの変換

5 次查看(过去 30 天)
Jo Sasaki
Jo Sasaki 2019-7-16
回答: Kenta 2019-7-18
forループ文をparforループを使用して時間の短縮を行いたいです。
コード本文は1次元csvに対して3000ずつ1データずらしでで切り取りを行っているのですが、forをparforに変更した際にこういったエラーが出ます。
parfor文のドキュメンテーションを見てもいまいちピンと来ないのでどこが間違っているのかご教授願いたいです。
原文
data = csvread('C:\Users\test\.csv'); % Put Data
data = transpose(data);
G = gpuArray(data);
L = length(data);
S = 3000; % Space
K = L-S+1;
for n =1:L-S+1;
t = data(n:n+S-1);
filename = ['C:\Users\test\test',num2str(n),'ch2.csv']; % Put Data name 'test'
csvwrite(filename, t);
n = n + 1;
end
エラー文
Error:Assigning to the loop variable "i" of a parfor is not allowed.
See Parallel for Loops in MATLAB, "Loop Variable".
  2 个评论
Kenta
Kenta 2019-7-17
こんにちは。ちなみに、n=n+1を消去しても同じエラーがでますか?
Jo Sasaki
Jo Sasaki 2019-7-18
n=n+1を消去しましたら作動いたしました。
ですが、ループの方はfor文を使用したときとあまり時間が変わらない結果となりました。
csv書き出しは結局cpuを使用しているためあまり差が出なかったのでしょうか?

请先登录,再进行评论。

采纳的回答

Kenta
Kenta 2019-7-18
n=n+1を消去すれば、動作すると思います。解析時間に関してですが、parpoolとコマンドウィンドウで打てば、自動的にクラスタが立ち上がりますが、その数が少なければ、結局、クラスタを立ち上げるための時間との相殺になって、あまり時間はかわらないかもしれません。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 並列 for ループ (parfor) 的更多信息

Community Treasure Hunt

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

Start Hunting!