2016-10-19 149 views
2

我有两个矩阵,A(由K N)和B(N由M)和我想集中AB成张量C(N用K由M),其中C(n,k,m) = A(n,k) * B(n,m)。我知道如何做到这一点的蟒蛇像高效矩阵乘法在Matlab

C = B[:,numpy.newaxis,:] * A[:,:,numpy.newaxis] 

谁能告诉我的MATLAB代码,有效地做同样的事情?

回答

2

利用bsxfun的隐式扩展功能。使用permute有你B作为Nx1xM矩阵:

C = bsxfun(@times, A, permute(B, [1, 3, 2])); 

而且从MATLAB R2016b以后,你可以得到相同的结果是这样的:

C = A * permute(B, [1, 3, 2]); 
+1

我还提及新MATLAB语法(对于** R2016b **向前),不需要'bsxfun':('C = A * permute(B,[1,3,2]);')。 –

+0

@ Dev-iL谢谢,我收录了你的建议。 – erfan