2016-01-13 74 views
1

以下我的問題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 

回答

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 
相關問題