我是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 。 所以循环可能不是最好的事情。
我感谢任何帮助!
答案 0 :(得分:1)
使用unique
获取唯一日期及其多样性,并accumarray
对重复日期进行平均
[Tout,~,n] = unique(T, 'rows');
Hout = accumarray(n, H, [], @mean);