代码之家  ›  专栏  ›  技术社区  ›  Tulkkas

Matlab中三维矩阵的特定维数求和

  •  0
  • Tulkkas  · 技术社区  · 6 年前

    我在Matlab中有一个大小为NxMxD的3D矩阵,我需要在特定维度上求和:

    x = rand(5,3,2);
    sum1 = sum(x,1);
    sum2 = sum(x,2);
    sum3 = sum(x,3);
    

    很明显,我希望在3种情况下,结果要么是2D矩阵,要么是长度为1的一维3D矩阵。不幸的是,情况并非如此。

    sum1和sum2是三维矩阵,其维数之和为长度1,但sum3是二维矩阵。

    我希望能够以计算sum3的类似方式将sum1和sum2作为2D矩阵。是否可以仅使用sum或唯一的方法是进一步使用例如squence()函数)

    1 回复  |  直到 6 年前
        1
  •  3
  •   Cris Luengo    6 年前

    正如@Tommaso所说,第三个输出是5x3x1,尽管当你询问它的大小时,MATLAB会将后面的部分切掉。

    MATLAB无法在其他地方自动执行此操作,因为这会改变矩阵/张量,请记住MATLAB主要用于矩阵。

    在执行矩阵运算时,1xn向量与nx1向量不同。

    Tl;博士,你必须使用 squeeze reshape