0

我有一个数据集,其中有 n 个样本 d 个特征,由一个 *d 矩阵表示。对应的标签是一个*1的向量。如何在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

1 回答 1

4

使用accumarray,您可以像这样计算标准差:

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

如果您有统计工具箱,则可以grpstats改用:

stdev = grpstats(samples,label,'std')
于 2012-11-06T14:00:06.863 回答