看板 MATLAB 關於我們 聯絡資訊
※ 引述《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
jmren:以cell array方式儲存/傳遞myans(:,ii); 04/29 07:27
candy88257:一樣……,現在問題是myans在parfor裡面 04/29 15:00
candy88257:出現2次parfor下面就出現紅線 04/29 15:00
candy88257:好像跟解儲存成什麼形式無關 04/29 15:01
candy88257:我找到isavex那個範例了,我好好研究一下,感謝您熱心 04/29 16:09
candy88257:協助!! 04/29 16:09