Parfor error with bsxfun
1 view (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 Matrix Indexing 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!