parfor with sliced and reduction variable

Hello, i'm trying to use parfor in this way:
oldc = c(:,index);
delta = thirds(biggy+1);
newc_left = oldc(:,ones(1,lssize));
newc_right = oldc(:,ones(1,lssize));
f_left = zeros(1,lssize);
f_right = zeros(1,lssize);
parfor i = 1:lssize
lsi = ls(i);
newc_left(lsi,i) = newc_left(lsi,i) - delta;
newc_right(lsi,i) = newc_right(lsi,i) + delta;
[f_left(i), con_left(i), fflag_left(i)] = CallObjFcn(Problem,newc_left(:,i),a,b,impcons,calltype,varargin{:});
[f_right(i), con_right(i), fflag_right(i)] = CallObjFcn(Problem,newc_right(:,i),a,b,impcons,calltype,varargin{:});
fcncounter = fcncounter + 2;
end
There is something wrong with the use of newc-left. can I use parfor in this case and how?

 채택된 답변

Edric Ellis
Edric Ellis 2013년 6월 20일
편집: Edric Ellis 2013년 6월 20일

1 개 추천

You could try something like this so that you're updating whole columns of newc_left and newc_right:
numRows = size(oldc, 1);
...
parfor ...
increment = zeros(numRows, 1);
increment(lsi(i)) = delta;
newc_left(:,i) = newc_left(:,i) - increment;
newc_right(:,i) = newc_right(:,i) + increment;
...

댓글 수: 1

lingyan
lingyan 2013년 6월 20일
Thanks a lot! Now it works. Can you please explain where am i wrong and why?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Text Analytics Toolbox에 대해 자세히 알아보기

태그

질문:

2013년 6월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by