我试图弄清楚是否有一种原生的方法可以在Matlab中获得两个矩阵的某种元素乘积。
我要找的乘积取两个矩阵,比如A
和B
,然后返回乘积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
选项对A
和B
-的转换维度版本进行操作
C = bsxfun(@times,A,permute(B,[3 1 2]))