MATLAB:在一个索引上将两个矩阵按元素相乘? [英] MATLAB: element-wise multiplication of two matrices over one index?
本文介绍了MATLAB:在一个索引上将两个矩阵按元素相乘?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试找出是否有一种本机的方法来在Matlab中获得两种矩阵的某种按元素乘积.
我要查找的产品用两个矩阵A
和B
表示,然后在其中返回元素
for i=1:size(A,2)
C(:,i,:) = A(:,i)*B(i,:);
end
的产品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中是否可以通过这种方式来实现这种目的?
解决方案
You need to "shift" the first two dimensions of B into second and third dimensions respectively with permute
and then use bsxfun
with @times
option to operate on A
and the shifted dimension version of B
-
C = bsxfun(@times,A,permute(B,[3 1 2]))
这篇关于MATLAB:在一个索引上将两个矩阵按元素相乘?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文