查看以下代码:
x=[2,3;1,4;1,5;2,4;3,1;3,4];
u=unique(x(:,1));
for i=1:length(u)
n(i,:)=mean(x(x(:,1)==u(i),:))
end
无论如何都要避免for
循环,并使代码更简单?基本上,我想要做的是根据列的值对行进行分组,并对给定“组”的其他值应用操作。
答案 0 :(得分:2)
对于具有mean
功能的强大accumarray,这是一项工作。基本上使用x
的第1列中的值作为下标,将第2列中的值作为执行所需计算的实际值:
n2 = accumarray((x(:,1)),x(:,2),[],@mean)
out = [unique(x(:,1)) n2]
out =
1.0000 4.5000
2.0000 3.5000
3.0000 2.5000
耶!