【问题标题】:MATLAB: element-wise multiplication of two matrices over one index?MATLAB:两个矩阵在一个索引上的元素乘法?
【发布时间】:2015-01-06 00:49:44
【问题描述】:

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

我正在寻找的产品有两个矩阵,AB 说,并返回产品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 中是否有处理这类事情的本地方法?

【问题讨论】:

    标签: matlab matrix matrix-multiplication vector-multiplication


    【解决方案1】:

    需要将B的前两个维度分别用permute“移位”到第二个维度和第三个维度,然后用bsxfun with @times option对@987654327进行操作@ 和 B 的移位维度版本 -

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

    【讨论】:

    • 您能否详细说明使用 3D 置换向量置换 2D 数组?
    • @Kris 如果您在谈论置换矩阵,那是另一回事。在这种情况下,将 permute 视为更多的重塑事物。因此,使用permute(B,[3 1 2]),我将其列作为行,将行作为 3D 切片。之后,使用bsxfun(@times..),元素的扩展发生以覆盖A 和 B 的移位版本的单例维度,最后是元素乘法。希望这有意义吗?查看这两个函数的链接文档应该会更清楚。
    • @Kris 这是一个非常相关的 - stackoverflow.com/questions/23807960/…,可能值得一看!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2016-08-30
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多