Пусть у меня есть векторы:Matlab: «группировка среднее»
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)
Я могу сделать это в цикле, просто интересно, можно ли его векторизовать. Вот мой для цикла реализации:
function [my,mc] = groupmean(y,c)
my = [];
mc = [];
for ci = unique(c)'
mc(end+1) = ci;
my(end+1) = mean(y(c==ci));
end
круто! благодаря! Похоже, что я мог бы также использовать индекс, возвращенный из 'unique' в качестве первого аргумента для накопителя (например, если мои уникальные значения не были целыми целыми числами) –
@JasonS: или использовать' grp2idx' из набора инструментов статистики – Jonas
@JasonS Да, это звучит правильно. –