bsxfun-like用于矩阵产品

Ita*_*atz 5 matlab matrix-multiplication bsxfun

我需要将矩阵A与n个矩阵相乘,然后得到n矩阵.例如,将2x2矩阵与3个2x2矩阵相乘,堆叠为2x2x3 Matlab数组.bsxfun我通常用于这种情况,但它只适用于元素操作.我可以这样做:

blkdiag(a, a, a) * blkdiag(b(:,:,1), b(:,:,2), b(:,:,3))
Run Code Online (Sandbox Code Playgroud)

但我需要一个任意的解决方案n- ?

Sha*_*hai 7

你可以reshape堆叠矩阵.假设你有k-by- k矩阵a和一叠m k-by- k矩阵sb和您想要的产品a*sb(:,:,ii)ii = 1..m.那么你需要的只是

sza = size(a);
b = reshape( b, sza(2), [] ); % concatenate all matrices aloong the second dim
res = a * b; 
res = reshape( res, sza(1), [], size(sb,3) ); % stack back to 3d
Run Code Online (Sandbox Code Playgroud)