2
假设我有载体: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)
我可以在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
很酷!谢谢!看起来我也可以使用从'unique'返回的索引作为准确数据的第一个参数(例如,如果我的唯一值不是连续的整数) –
@JasonS:或使用统计工具箱中的'grp2idx' – Jonas
@JasonS是的,听起来不错。 –