我有两个矩阵组
A1, A2... Ai N x K
B1, B2... Bi K x M
我想获得矩阵C = [A1 * B1; A2 * B2; ... Ai * Bi];
可以在没有循环的Matlab中完成吗?
我可以有效地使用GPU进行此操作吗?
答案 0 :(得分:1)
另一种解决方案(因为你可以隐含地论证cellfun
种循环:使用
[A1 * B1,A2 * B2,...,Ai * Bi] = [A1,A2,...,Ai] * blkdiag(B1,B2,...,Bi)
(或者,blkdiag(A1,...,Ai)*[B1,...,Bi]
)。
如果固定数量(i),你可以直接这样写。如果没有并且您拥有它们,请在Ai = A(:,:,i)
和Bi = B(:,:,i)
的3-D矩阵中说A
为N x K x i
且B
为{{1}然后你可以做
K x M x i
答案 1 :(得分:0)
对GPU使用pagefun,它使用比循环快得多的批处理操作。