# question regarding sum(m,3) command

3 views (last 30 days)
fima v on 12 Dec 2022
Edited: Jan on 13 Dec 2022
hello, i have a three dimentional matrices m.
output of sum(m,3) return a two dimentional matrices.
What kind of summing being done on my 3D matrices which creates the 2D matrices?
Thanks.

Torsten on 12 Dec 2022
Edited: Torsten on 12 Dec 2022
It is summed over the third dimension of the matrix.
A = zeros(2,2,2);
A(:,:,1) = [1 2;3 4];
A(:,:,2) = [5 6;7 8];
sum(A,3)
ans = 2×2
6 8 10 12
A(:,:,1) + A(:,:,2)
ans = 2×2
6 8 10 12

Jan on 13 Dec 2022
Edited: Jan on 13 Dec 2022
Actually a sum over a 3D array along the 3rd dimension replies a [M x N x 1] array, as summing over the 2nd dimension creates a [M x 1 X P] array. But Matlab ignores trailing singelton dimensions, except it is the 2nd dimension of a matrix (known as "column vector").
You can even access these virtual dimensions:
X = [1, 2; 3, 4]
X = 2×2
1 2 3 4
X(1, 2, 1)
ans = 2
X(2, 2, 1, 1, 1, 1, 1)
ans = 4
There have been some inconsistencies in R2009a, which let trailing singelton dimensions exist for some functions implemented a C-mex. This did not cause bugs, but the ndims command counted this virtual dimensions also. In modern Matlab version, this feature is supported consequently as far as I know.