【问题标题】:Multidimensional Matrix Multiplication多维矩阵乘法
【发布时间】:2017-03-20 05:58:23
【问题描述】:

我想知道是否可以在不使用 for 循环的情况下执行多维矩阵乘法。给定 N×P 矩阵 A 和 N×M×P 矩阵 B,我想计算 M 维向量 y,按元素定义为

y(j) = sum_(i = 1,...,N) sum_(k = 1,...,P) A(i,k)*B(i,j,k)

【问题讨论】:

    标签: matlab multidimensional-array matrix-multiplication


    【解决方案1】:

    您可以将A 线性化为行向量,然后将reshapepermute 数组B 线性化为矩阵,这样所需的结果就是矩阵乘法:

    M = 5;
    N = 6;
    P = 8;
    A = rand(N,P);
    B = rand(N,M,P);
    result = A(:).'*reshape(permute(B, [1 3 2]), [], M);
    

    reshape 矩阵A 使其尺寸与B 的尺寸对齐,使用bsxfun 与单例展开相乘,然后将两个所需尺寸相加:

    result = sum(sum(bsxfun(@times, reshape(A, N, 1, P), B), 1), 3);
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      相关资源
      最近更新 更多