关注我的问题Merge 2 vectors according their time values:如果数组中的两个值具有相同的时间戳,我需要将它们组合起来并使用平均值。我怎样才能以优雅的方式实现这一目标?
这是一个例子:
%1st column = time; 2nd column = value
%there are two values with timestamp '6'
C = [1,34;2,34;5,68;6,2;6,3;7,45]
C =
1 34
2 34
5 68
6 2
6 3
7 45
%after processing
C_proc =
1.0000 34.0000
2.0000 34.0000
5.0000 68.0000
6.0000 2.5000
7.0000 45.0000
答案 0 :(得分:2)
这就是accumarray
的用途:
out = accumarray(C(:,1),C(:,2),[],@mean) %// use with care, see below
如果您不希望跳过索引的零,请将其与unique
结合使用,这也避免了第一种方法的整数时间戳的必要假设:
[a,~,u] = unique(C(:,1))
out = [a accumarray(u,C(:,2),[],@mean)]
out =
1.0000 34.0000
2.0000 34.0000
5.0000 68.0000
6.0000 2.5000
7.0000 45.0000