跨块矩阵乘法 - MATLAB

Matrix multiplication across blocks - MATLAB

假设我有 2 个矩阵,例如:

A = [1 2;
     3 4;
     5 6];

B = [1 1 1;
     2 2 2;
     3 3 3;
     4 4 4;
     5 5 5;
     6 6 6];

我想做的是将 A 的第 i 行与 B2*(i-1)+12*i 行相乘,例如:

[1 2]*[1 1 1;2 2 2]

并将结果组合在一起。结果矩阵的大小将为 3X3。我当然知道我可以做一个 for 循环来得到我的结果。但是我的AB其实很大,所以for循环太费时间了。

有人可以给我任何关于如何在没有 for 循环的情况下执行此操作的建议吗?非常感谢您的帮助。

如评论中所述,bsxfun可以在重塑B后使用,就像这样-

squeeze(sum(bsxfun(@times,reshape(B,size(A,2),[],size(B,2)),A.'),1))