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



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

我要找的乘积取两个矩阵,比如AB,然后返回乘积C,其元素由给定

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

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

现在,我正在使用下面的for循环(假设size(A,2)==size(B,1)为true)。首先,我初始化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中有一种原生的方法来处理这类事情吗

您需要使用permute将B的前两个维度分别"转换"为二维和三维,然后使用bsxfun@times选项AB-的转换维度版本进行操作

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

最新更新