MATLAB:在一个索引上将两个矩阵按元素相乘? [英] MATLAB: element-wise multiplication of two matrices over one index?

查看:458
本文介绍了MATLAB:在一个索引上将两个矩阵按元素相乘?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找出是否有一种本机的方法来在Matlab中获得两种矩阵的某种按元素乘积.

我要查找的产品用两个矩阵AB表示,然后在其中返回元素

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆