跨块的矩阵乘法 - MATLAB

时间:2016-09-08 14:30:41

标签: matlab matrix vectorization matrix-multiplication

假设我有两个矩阵,如:

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];

我要做的是将i A行与2*(i-1)+12*iB行的[1 2]*[1 1 1;2 2 2] 行重叠,如:

A

并将结果组合在一起。结果矩阵的大小为3X3。我当然知道我可以做一个for循环来获得我的结果。但我的B// Fetch some data $data = get_data(); // Turn on output buffering with the gzhandler ob_start('ob_gzhandler'); // Output as normal echo json_encode($data); 实际上非常大,因此循环成本太高。

有人可以在没有for循环的情况下给我任何关于如何做到这一点的建议吗?我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:4)

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

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