Vectorizing a funky matrix multiplication

I have two matrices H and W, where H is Nx1873 and W is 262144xN (N is a small integer, usually 10-20). I multiply these matrices using the following code:
comp = zeros([512 512 1873 N]);
for i = 1:N
comp(:,:,:,i) = reshape(W(:,i)*H(i,:),[512 512 1873]);
end
Is there a way to vectorize this operation?

1 个评论

If N is a small integer, vectorization will probably not make much difference.
Also, the operation itself seems like a bad idea. I don't know what you're planning to do with all of those outer products comp(:,:,:,i), but in most situations there are efficient ways to manipulate outer-products without computing them directly. They consume a lot of memory in spite of containing very little information.

请先登录,再进行评论。

回答(1 个)

Matt J
Matt J 2017-6-22
编辑:Matt J 2017-6-22
Wr=reshape(W,[],1,N);
Hr=reshape(H.',1,[],N);
comp=reshape( bsxfun(@times, Wr,Hr), 512,512,[]);

2 个评论

If N is a small integer, vectorization will probably not make much difference.
Also, the operation itself seems like a bad idea. I don't know what you're planning to do with all of those outer products comp(:,:,:,i), but in most situations there are efficient ways to manipulate outer-products without computing them directly. They consume a lot of memory in spite of containing very little information.
I'm using H and W as outputs of either nnmf() or lsqnonneg(), and creating matrices that represent each of the N components individually for my original 512x512x1873 dataset. I use this to create movies where each component can be color coded, to aid in visualizing my data. I'm not sure how else I can organize the data, since I need to again matrix multiply it by my colormap as a final step, and visualize all components at once for each timepoint.
Thanks for your answer, I will try it ans see if there is any improvement!

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by