I found out the fact that if a matrix is (almost) full, then storing it in sparse leads to (much) more time to compute.
Though it is trivial to store a full matrix in sparse form, I just want to know the reason behind this fact.
My speculation is that the index reading in sparse would be the major contributor to the computing time. Any other elegant thoughts?
There are a few reasons for an almost full sparse matrix being more computationally expensive than just using a full matrix. The most obvious, as you pointed out, is that sparse elements must be indexed (for a general sparse matrix, I believe Matlab uses a Compressed Row Storage scheme).
Another, less apparent slowdown, is due to vectorization and pipelining data into the processor. In the case of a fully stored matrix, the data is in a neat, linear format, so operations can be easily vectorized. For storage schemes like CRS, this is not the case, especially for Matrix*Vector operations, which tend to be the most used (e.g.- when using iterative solvers to solve systems of equations). For a CRS scheme, moving across the matrix row can be fed to the processor in a nice, linear manner, however, the elements pulled from the vector the matrix is multiplied by, will jump around.