0

n*d 行列で表される n サンプル 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 に答える