MATLAB:两个矩阵在一个索引上的元素乘法?

时间:2014-11-09 18:17:52

标签: matlab matrix matrix-multiplication vector-multiplication

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

我正在寻找的产品需要两个矩阵,AB,并返回产品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中有这种本地方式吗?

1 个答案:

答案 0 :(得分:3)

你需要"转移"使用 permute 分别将B的前两个维度划分为第二维和第三维,然后使用 bsxfun with @times option A进行操作移位尺寸版B -

C = bsxfun(@times,A,permute(B,[3 1 2]))