Re: [討論] parfor能否每計算一個idx就輸出一次存檔?
※ 引述《jmren (jm)》之銘言:
: 這是使用parfor常見問題!
: 解法:另外寫myWrite function,並存成新檔
: function myWrite(path,data)
: csvwrite(path,data);
: 在parfor中,直接呼叫myWrite,而不是csvwrite
: parfor ii=1:10
: ...
: myWrite('資料夾+檔名',data);
: end
好像不行!?
剛測試了一下
這是我的測試程式檔:
function tempdata=test(yymin,yymax,yyd)
xx=sym('xx');
nextformax=fix(((yymax-yymin)/yyd)+1);
parfor ii=1:nextformax
yy=yymin+yyd*(ii-1);
mymatrix=[xx+2*yy,3*xx,6*yy;xx,yy,2*xx+3*yy;yy,7*xx,3*yy];
eq=det(mymatrix);
myans(:,ii)=double(solve(eq,'xx')) %假設解的個數相同
end
tempdata=myans;
end
這是我的function mycsvwrite
function mycsvwrite(file,data)
csvwrite(file,data);
end
以下做測試:
1.加入mycsvwrite:
function tempdata=test(yymin,yymax,yyd)
xx=sym('xx');
nextformax=fix(((yymax-yymin)/yyd)+1);
parfor ii=1:nextformax
yy=yymin+yyd*(ii-1);
mymatrix=[xx+2*yy,3*xx,6*yy;xx,yy,2*xx+3*yy;yy,7*xx,3*yy];
eq=det(mymatrix);
myans(:,ii)=double(solve(eq,'xx')) %假設解的個數相同
mycsvwrite('D:\testwrite',myans(:,ii)) % 這裡的myans不加(:,ii)的話,
馬上parfor下面會出現紅線
end
tempdata=myans;
end
這樣寫的話匯出的csv檔只有一行...(只匯出一組解...)
2.加入data=[];
function tempdata=test(yymin,yymax,yyd)
xx=sym('xx');
data=[];
nextformax=fix(((yymax-yymin)/yyd)+1);
parfor ii=1:nextformax
yy=yymin+yyd*(ii-1);
mymatrix=[xx+2*yy,3*xx,6*yy;xx,yy,2*xx+3*yy;yy,7*xx,3*yy];
eq=det(mymatrix);
myans(:,ii)=double(solve(eq,'xx')) %假設解的個數相同
data=[data,myans(:,ii)]; % 這裡的myans不加(:,ii)的話,馬上parfor下面會出
現紅線
mycsvwrite('D:\ab\testwrite',data); %多這行parfor下面出現紅線
end
tempdata=myans;
end
紅線詳細: The PARFOR loop cannot run due to the way variable 'myans' is used.
(或data)
怎會這樣!?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.17.157
推
04/29 07:27, , 1F
04/29 07:27, 1F
→
04/29 15:00, , 2F
04/29 15:00, 2F
→
04/29 15:00, , 3F
04/29 15:00, 3F
→
04/29 15:01, , 4F
04/29 15:01, 4F
→
04/29 16:09, , 5F
04/29 16:09, 5F
→
04/29 16:09, , 6F
04/29 16:09, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):