ベクトルがあるとします:
y = [1 1.01 1.02 1.03 2 2.01 2.02 3 3.01 3.02 3.03];
c = [0 0 0 0 1 1 1 2 2 2 2 ];
「グループ化平均」、つまり のy
一意の値ごとの の平均値を取得するベクトル化された方法はありc
ますか? (これは単純化された例です。似たようなものがありますが、ベクトルのサイズは数千で、c の値は数百あります)
ベクトル化できるかどうか疑問に思っているだけで、for ループで実行できます。これが私の for ループの実装です。
function [my,mc] = groupmean(y,c)
my = [];
mc = [];
for ci = unique(c)'
mc(end+1) = ci;
my(end+1) = mean(y(c==ci));
end