Standard deviation of all matrix elements (single value)

63 views (last 30 days)
I have a random matrix X and I am looking for the standard deviation considering all elements; however I am asked (by a text book, learning Matlab) not to use loops. The result should be one single value.
std(X) gives a matrix of standard deviation of all columns which is not what I am looking for. (something corresponding to m=mean(mean(X)) it is not working for the standard deviation)
PS: sorry for asking this simple question; I did some search on this topic but couldn't find useful hints.
Thank you for your help!

Answers (3)

Adam
Adam on 2 Mar 2015
Edited: Adam on 2 Mar 2015
std( X(:) )
should give you the standard deviation of all elements in a matrix, X, of any shape.
This is also generally better for mean since it works for any dimensionality rather than mean( mean( X ) ) which is hard-coded as 2d.
  1 Comment
Adam
Adam on 2 Mar 2015
Please add a comment to an answer rather than a new answer (it is a mistake many make though, not just you!).
The syntax
X(:)
simply collapses your array into a column so that the std command (or any other similar command) will produce a single answer as it would on a normal column array. For statistics where the 2d or n-d structure of the data is irrelevant this works well. Obviously it needs more manipulation for functions where the 2d structure matters.

Sign in to comment.


Torsten
Torsten on 2 Mar 2015
Use "reshape" to get an (N*M,1) column vector from the (N,M)-matrix.
Best wishes
Torsten.

Joachim Schmid
Joachim Schmid on 2 Mar 2015
Thank you very much Torsten and Adam! Adam, now I have to understand the command.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!