我试图弄清楚是否有一种本地方法可以在Matlab中获得两种矩阵的某种元素乘积。
我正在寻找的产品需要两个矩阵,A
和B
,并返回产品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中有这种本地方式吗?
答案 0 :(得分:3)
你需要"转移"使用 permute
分别将B的前两个维度划分为第二维和第三维,然后使用 bsxfun
with @times
option 对A
进行操作移位尺寸版B
-
C = bsxfun(@times,A,permute(B,[3 1 2]))