假设我有:
A = rand(1,10,3);
B = rand(10,16);
我想得到:
C(:,1) = A(:,:,1)*B;
C(:,2) = A(:,:,2)*B;
C(:,3) = A(:,:,3)*B;
我能否以某种方式将其乘以一行以使其更快?
如果我像这样创建新的张量 b 会怎样
for i = 1:3
b(:,:,i) = B;
end
我可以将 A 和 b 相乘以获得相同的 C 但速度更快吗?通过上面的循环创建 b 所花费的时间并不重要,因为我将需要 C 来处理许多不同的 A-s,而 B 保持不变。
最佳答案
置换 A
和 B
的维度,然后应用矩阵乘法:
C = B.'*permute(A, [2 3 1]);
关于performance - 如何在不循环的情况下在 MATLAB 中乘以张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497176/