在向量中查找相同日期的块,并在另一个向量中的相应数据块上求平均值

时间:2013-09-13 09:08:06

标签: matlab date vector

我是Matlab的新手,我正在寻找解决一个向量中确定相同日期块的问题的解决方案,并在另一个向量中对相应的数据块进行平均。

给定的是一个由'dd-mmm-yyyy'格式的几个日期块组成的向量。具有相同日期的块可以具有可变长度。一个例子是

T=  ['03-Jan-2013'; 
    '03-Jan-2013'; 
    '03-Jan-2013';
    '04-Jan-2013';
    '04-Jan-2013';
    '05-Jan-2013']  

T 中的每个日期对应于另一个向量 H 中的数据条目(为简单起见,与 T 相同的日期在此处具有相同的对应数字在 H

H= [1;
    1;
    1;
    5;
    5;
    6]

现在的目标是确定 H 的元素的平均值,这些元素对应于相同的日期并返回修改日期和数据向量 Tout Hout ,如下所示:

Tout=['03-Jan-2013'; 
     '04-Jan-2013';          
     '05-Jan-2013']  

Hout=[1;
     5;
     6]

其中 Hout 表示平均值。

两个向量最初都是从文本文件中提取的,长度约为 100k 。 所以循环可能不是最好的事情。

我感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

使用unique获取唯一日期及其多样性,并accumarray对重复日期进行平均

[Tout,~,n] = unique(T, 'rows');
Hout = accumarray(n, H, [], @mean);