Single function like stepinfo but for general stats?

I really like how stepinfo gives me the characteristics of my data in a single line. Is there a similar function that will give me general statistics? I am looking to get:
Max
Min
Mean
Median
Mode
StDev
peaks reached and peak time

Answers (1)

Yes. There is a function named grpstats in the Statistics Toolbox which allows you to get multiple statistics. This function will compute these statistics for different grouping variables, but you can use it just the same if all of your variables belong to the same group.
Example:
x = rand(100,1);
[meanX, stdX] = grpstats(x,[],{'mean','std'})
The brackets represent where you would normally pass the grouping variable, but we can omit this input in the manner I show.

4 Comments

I am trying grpstats but I am not getting all of the stats I have listed. my code is
for i = 1:size(data,2)
stat(i).stats = grpstats(data,[],{'mean','std','min','max','numel', 'var'})
end
but I am only getting like 5 numbers back, (data has 5 columns), where are the other whichstat options going?
Since data has 5 columns and the statistics functions are calculated on a column basis, so you are getting back a 5 element vector of the means. To get back each statistic you need to assign an output variable for each statistic.
[stat.means, stat.stds, stat.mins, stat.maxs, stat.numels, stat.vars] = ...
grpstats(data,[],{'mean','std','min','max','numel', 'var'})
We have no need for the for loop as we are calculating this seperately for each column anyhow. The function returns a separate vector for each stat, so we cannot explicitly assign all of the output to one variable.
I had the for loop because I wanted to create a structure with individual breakdowns of this info. So my data I am parsing to grpstats, is a structure of data names, each with 5 columns in it. I wanted the same structure for stats. how would i do that? data in my case looks like grpstats(data(i).datanew,[],...) sorry i did not mention this. would i just write stat(i).means, stat(i).stds, etc. instead?
Yes, you will just want to make sure that on each call to grpstats you use data(:,i) so that you get the scalar value of mean, std, etc.

Sign in to comment.

Asked:

on 12 Mar 2015

Commented:

on 13 Mar 2015

Community Treasure Hunt

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

Start Hunting!