0

当两个时间序列数据集都有基于 YEAR 和 DOY 的观察时,我喜欢总结它们的观察。当任一数据集为 0 时,我也喜欢跳过总和,并且只对 DOY 中的最大观察值求和。

下面是示例:data_1 和 data_2。

数据_1

% YEAR  DOY  OBS_1

1994    109 0.42
1994    110 0.73    
1994    111 0.69    
1994    113 0.8    
1994    114 0.43    
1994    115 0.75    
1994    123 0.6    
1994    127 0.2    
1994    131 0.44    
1994    131 0.43    
1994    131 0.63    
1994    132 0.99    
1994    132 0.51    
1994    133 0.71    
1994    133 0.99    
1994    134 0.65    
1994    134 0.69    
1994    134 0.97    
1994    134 0.03    
1994    134 0    
1994    134 0    
1994    135 0.68    
1994    135 0.72    
1994    136 1.22    
1994    136 0    
1994    136 0    
1994    136 1.28    
1994    136 1.34

数据_2:

% YEAR  DOY  OBS_2    
1994    110 0.92    
1994    111 0.34    
1994    113 0.42    
1994    114 0.37    
1994    115 0.38    
1994    122 0.22    
1994    127 0.32    
1994    131 0.34   
1994    131 0.2    
1994    132 0.51    
1994    132 0.43
1994    132 0.4    
1994    133 0.4    
1994    134 0.32    
1994    134 0.39    
1994    135 0.35    
1994    135 0.38    
1994    135 0.34    
1994    135 1.83    
1994    135 0.22    
1994    135 0.36    
1994    135 0.39    
1994    135 0.24    
1994    135 0.39    
1994    136 0.42    
1994    136 0.29    
1994    136 0.3    
1994    136 0.4    
1994    136 0.54    
1994    136 0.4
4

1 回答 1

1

这是第一次尝试:

%# maximum day of year
sz = max(max(data_1(:,2)),max(data_2(:,2)));
doy = (1:sz)';

%# get max value for each DOY in each dataset
v1 = accumarray(data_1(:,2), data_1(:,3), [sz 1], @max);
v2 = accumarray(data_2(:,2), data_2(:,3), [sz 1], @max);

%# compute the sum
v = v1 + v2;

%# keep entries where none of the values were zeros
idx = (v1~=0 & v2~=0);
v = [doy(idx(:)) v(idx(:))];

结果:

>> v
v =
          110         1.65
          111         1.03
          113         1.22
          114          0.8
          115         1.13
          127         0.52
          131         0.97
          132          1.5
          133         1.39
          134         1.36
          135         2.55
          136         1.88

我没有考虑该year字段,因为它1994涵盖了您的所有数据...

于 2012-06-11T17:49:01.747 回答