Further vectorizing a loop over bsxfun
1 次查看(过去 30 天)
显示 更早的评论
I have a vectorization problem that I cannot quite wrap my head around. I have a calculation that requires several parameter sweeps.
Basically, I need to element-wise multiply a matrix A of size m*n and B matrix of size m*p to obtain a matrix Y of size m*n*p. My solution so far is
for i=1:length(B)
Y(:,:,i)=bsxfun(@times,A,B(:,i));
end
This strikes me as unnecessary, surely there must be a way to generalize this to higher dimensions without using loops? Another solution I have cooked up uses repmat, but seems even less elegant.
I hope someone can point into the right direction :)
3 个评论
采纳的回答
Andrei Bobrov
2011-11-5
bsxfun(@times,A,reshape(B,size(B,1),1,[]))
or
bsxfun(@times,A,permute(B,[1 3 2]))
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!