1

我是 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中对应于相同日期的元素的平均值,并返回修改后的日期和数据向量ToutHout,如下所示:

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

Hout=[1;
     5;
     6]

其中Hout代表平均值。

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

我很感激任何帮助!

4

1 回答 1

1

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

[Tout,~,n] = unique(T, 'rows');
Hout = accumarray(n, H, [], @mean);
于 2013-09-13T09:29:57.610 回答