3

我试图弄清楚是否有一种本地方法可以在 Matlab 中获得两种矩阵的某种元素乘积。

我正在寻找的产品需要两个矩阵,A然后B返回 product C,其元素由下式给出

C(i,j,k) = A(i,j)*B(j,k)

自然地,A假设 的列数与 的行数相同B

现在,我正在使用以下 for 循环(假设size(A,2)==size(B,1)是真的)。首先,我初始化C

C = zeros(size(A,1), size(A,2), size(B,2));

然后我通过以下方式执行逐元素乘法:

for i=1:size(A,2)
    C(:,i,:) = A(:,i)*B(i,:);
end

所以,我的问题是:在 Matlab 中是否有这种事情的本地方法?

4

1 回答 1

3

您需要将 B 的前两个维度分别“移动”为第二维和第三维permute,然后使用bsxfunwith@times选项进行操作,A以及B-

C = bsxfun(@times,A,permute(B,[3 1 2]))
于 2014-11-09T18:20:49.593 回答