Examples on using the sum function in Octave

If you are taking Andrew Ng's Machine Learning course on Coursera, the sum function is one of the functions that you will probably need to use to complete your assignments. Since the sum function can be counter intuitive in some cases, I document some of the examples that I had created while trying to get a better understanding of the sum function in Octave.

Using sum on a row vector in Octave

When the sum function encounters a row vector, it basically sums all the elements in the row vector and returns the total:

>> rowVector = [1 2 3]
rowVector =

   1   2   3

>> sum(rowVector)
ans =  6

Using sum on a column vector in Octave

As with the case of using the sum function on a row vector, when the sum function encounters a column vector, it will add all the elements in the column vector and returns the total:

colVector = [1; 2; 3]
colVector =

   1
   2
   3

>> sum(colVector)
ans =  6

Using sum on a matrix in Octave

When a matrix is given to sum as a parameter, the behaviour can be counter intuitive at first. Although you may expect that the sum function returns a single value that is the total of adding all the elements in the matrix together, this is not the case.

To see how the sum function handles matrix as an input, let's first define a 2 by 3 matrix:

>> x = [1 2 3; 1 2 3]
x =

   1   2   3
   1   2   3

How to sum a matrix by column

Without any additional parameters to the matrix, the sum function collapses the matrix into a row vector by adding elements in the same column together:

>> sum(x)
ans =

   2   4   6

This behaviour is similar to supplying a '1' as an additional parameter to the matrix:

>> sum(x, 1)
ans =

   2   4   6

How to sum a matrix by row

If a '2' is supplied with the matrix to the sum function, the sum function will take return a column vector that contains the subtotal of all items in each row added together:

>> sum(x, 2)
ans =

   6
   6

How to sum all elements in the matrix

Summing all the elements in the matrix was what I had required in computing the cost function of my learning algorithm. There are three ways which I had tried:

  1. Summing the matrix by column and then summing the resultant row vector:

    >> sum(sum(x , 1))
    ans =  12
    
  2. Summing the matrix by row and then summing the resultant column vector:

    >> sum(sum(x , 2))
    ans =  12
    
  3. Converting the matrix to a column vector and then summing the resultant column vector:

    >> sum(x(:))
    ans =  12
    

About Clivant

Clivant a.k.a Chai Heng enjoys composing software and building systems to serve people. He owns techcoil.com and hopes that whatever he had written and built so far had benefited people. All views expressed belongs to him and are not representative of the company that he works/worked for.