Parfor error with bsxfun
2 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Jill Reese
on 9 Jul 2014
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
1 Comment
More Answers (0)
See Also
Categories
Find more on Parallel for-Loops (parfor) in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!