# Why is sum(X, 1) the sum of the columns in MATLAB?

``````>> X = [0 1 2
3 4 5]

>> sum(X, 1)

ans =

3     5     7
``````

`sum(X, 1)` should sum along the `1st` dimension(row) as per the document says:

S = SUM(X,DIM) sums along the dimension DIM.

But why does it actually sums along the `2nd` dimension(column)?

-
I downvoted this question because it indicates a failure on the part of the questioner to read the readily available documentation. By no means is this a good question. –  High Performance Mark Apr 16 '10 at 7:27
I think it is a valid question, since it highlights a difficulty in interpreting basic Matlab syntax. I've seen quite a few students who have been stumped by this. –  Jonas Apr 16 '10 at 12:58

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

B = sum(A,dim) sums along the dimension of A specified by scalar dim. The dim input is an integer value from 1 to N, where N is the number of dimensions in A. Set dim to 1 to compute the sum of each column, 2 to sum rows, etc.

Your guess is as good as mine.

-
But the 1st dimension is row,and 2nd column,why it's not the case for `sum`? –  Gtker Apr 16 '10 at 7:27
Hence my "Your guess is as good as mine" - there's no real logical reason for it, so it's probably just the result of some random MATLAB developer's late-night coding session. ;) –  Amber Apr 16 '10 at 11:08

1 means column, according to http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

B = sum(A,dim) sums along the dimension of A specified by scalar dim. The dim input is an integer value from 1 to N, where N is the number of dimensions in A. Set dim to 1 to compute the sum of each column, 2 to sum rows, etc.

-
Why it's contradictory with other context ? –  Gtker Apr 16 '10 at 7:29
It might actually be indicating the axis along which the primary iteration is occurring. (Sometimes these things are hard to understand with only low-dimensional examples.) –  Donal Fellows Apr 16 '10 at 12:59

I think that the Matlab documentation on this is quite clear. It states:

B = sum(A,dim) sums along the dimension of A specified by scalar dim. The dim input is an integer value from 1 to N, where N is the number of dimensions in A. Set dim to 1 to compute the sum of each column, 2 to sum rows, etc.

You're welcome to think that Matlab is wrong, but it ain't going to change !

-
The offline version only mentions:`S = SUM(X,DIM) sums along the dimension DIM. ` and that's all! –  Gtker Apr 16 '10 at 7:31
`sum(A,dim)` sums along the direction of dimension dim.
Rows are counted "down", so `sum(A,1)` sums "down". Columns are counted "to the right", so `sum(A,2)` sums "to the right".
Another way to look at this is that `sum(A,dim)` collapses dimension `dim` to 1 by taking the sum. Thus, a 4x3 array summed along dimension 1 collapses the first dimension, leading to a 1x3 array.
{"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0}