Parfor error with bsxfun
조회 수: 2 (최근 30일)
이전 댓글 표시
Dear all,
I'm having a weird issue with using parfor and bsxfun. I provide a minimal working example below (tried on both 2011b and 2013a). The version with for is working fine, whereas if I switch to parfor, I receive the 'non-singleton dimensions must match' error for bsxfun. I'm not sure if this was already answered although I looked for possible related questions&answers. Thanks in advance.
Cem
var1=repmat((1:1000)',2,3);
var2=ones(1000,1000);
var3=ones(6000,1);
temporary_var=bsxfun(@times,var2(var1,:),var3);
result=zeros(1000,1000);
for i=1:1000
result(i,:)=sum(bsxfun(@times,var2(var1,i),temporary_var));
end
Note: the issue persists both matlabpools open and closed.
댓글 수: 0
채택된 답변
Jill Reese
2014년 7월 9일
I think that the parfor analysis is getting a bit confused by the multidimensional indexing into var2. If you re-write the code as follows it should work:
var1=repmat((1:1000)',2,3);
var2=ones(1000,1000);
var3=ones(6000,1);
temporary_var=bsxfun(@times,var2(var1,:),var3);
result=zeros(1000,1000);
tmp = var2(var1,:);
parfor i=1:1000
result(i,:)=sum(bsxfun(@times,tmp(:,i),temporary_var));
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!