通过matlab获取移动平均线

时间:2013-07-17 07:21:39

标签: matlab average

分析我的数据时遇到一些问题: 假设有一个矩阵

year month flow
72  1   34
72  1   43
72  1   55
72  1   34
72  1   43
72  1   55
72  1   34
72  1   43
72  1   55
72  1   34
72  1   43
72  1   55
72  1   34
72  1   43
72  1   55
72  1   34
72  1   43
72  1   55
72  2   34
72  2   43
72  2   55

现在我想取平均值开始10个值而不是接下来的10个值,依此类推。在这。基本上我想取每个月10天的流量值的平均值,例如从1,1972年1月到7月7日,第72行(第10行)和11月19日至1972年1月20日,我尝试了

[unX,~,subs] = unique(D(:,1:2),'rows');
out          = [unX accumarray(subs,D(:,3),[],@nanmean)]; 

但由于它给出了整个jan的平均值(第2列中的1个值),我想仅在前十天使用它然后依次使用

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用自定义功能替换nanmean

 >> out = [unX accumarray(subs,D(:,3),[],@(x) nanmean( x(1:10)  ) )];