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- ?
你可以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)