我在Matlab中有一个大小为NxMxD的3D矩阵,我需要总结一个特定的维度:
x = rand(5,3,2);
sum1 = sum(x,1);
sum2 = sum(x,2);
sum3 = sum(x,3);
我显然希望在3种情况下,结果可能是2D矩阵或1维长度为1的3D矩阵。但遗憾的是并非如此。
sum1和sum2是3D矩阵,其中总和的长度为1,而sum3是2D矩阵。
我希望能够以类似于计算sum3的方式将sum1和sum2作为2D矩阵。是否可以使用sum或唯一的方法是进一步使用例如squeeze()函数)
答案 0 :(得分:3)
正如@Tommaso所说,第三个输出是5x3x1,但是当你要求它的大小时,MATLAB会减少尾随的数量。
MATLAB,不能在其他地方自动执行此操作,因为这会改变矩阵/张量,请记住MATLAB“主要”用于矩阵。
执行矩阵运算时,1xn向量与nx1向量不同。
Tl;博士,您必须使用squeeze
或reshape