2012-11-06 15 views
0

我有一个数据集,有n个样本,d个特征由一个n * d矩阵表示。相应的标签是一个n * 1向量。我如何计算matlab中没有循环的每个类内标准偏差?如何计算matlab中没有循环的类内标准偏差?

例如:

样品

5  1  1  1  4 
5  2  5  3  1 
1  3  5  5  5 
5  5  3  4  5 
4  5  5  5  4 

标签:

2 
1 
1 
2 
2 

我如何可以计算1级和2级的标准偏差?

回答

4

使用accumarray,你可以计算出标准差是这样的:

stdev = cell2mat(accumarray(label,(1:length(label))',[],@(x){std(samples(x,:))})); 

如果您有统计工具箱,你可以使用grpstats代替:

stdev = grpstats(samples,label,'std') 
+0

+1:告诉我,有没有'**不能用'accumarray'做什么? :) –