2016-10-19 182 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