我有一个数据集,其中n个样本d由n * d矩阵表示。相应的标签是n * 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级标准差?
答案 0 :(得分:4)
使用accumarray
,您可以像这样计算标准偏差:
stdev = cell2mat(accumarray(label,(1:length(label))',[],@(x){std(samples(x,:))}));
如果您有统计工具箱,则可以改为使用grpstats
:
stdev = grpstats(samples,label,'std')