我使用的是Octave,我有两个时间序列[n,2]和[m,2],n和m是日期。但长度不匹配,我想按日期合并这两个时间序列,如果只有一个值,我希望它为零:
第一组:
DATE Diference
2020-10-26 00:07:20 -1.1050
2020-10-26 00:12:20 -1.0463
2020-10-26 00:17:20 -1.1800
2020-10-26 00:22:20 -1.2138
2020-10-26 00:27:20 -1.2613
2020-10-26 00:32:20 -1.3488
2020-10-26 00:37:20 -1.2937
2020-10-26 00:42:20 -1.3275
2020-10-26 00:47:20 -1.3062
2020-10-26 00:52:20 -1.3250
2020-10-26 00:57:20 -1.2675
第二组:
DATE: Temperature
2020-10-18 00:00:38 0.6800
2020-10-18 00:01:31 0.7700
2020-10-18 00:02:24 0.8400
2020-10-18 00:03:32 0.9200
2020-10-18 00:09:23 0.7800
2020-10-18 00:10:16 0.7800
结果:
DATE: Temperature Diference
2020-10-18 00:00:38 0.6800 0
2020-10-18 00:01:31 0.7700 0
2020-10-18 00:02:24 0.8400 0
2020-10-18 00:03:32 0.9200 0
2020-10-18 00:17:20 0.0 -1.10508
2020-10-18 00:09:23 0.7800 0
2020-10-18 00:10:16 0.7800 0
2020-10-26 00:12:20 0.0 -1.0463
2020-10-26 00:17:20 0.0 -1.1800
这一切都是因为我想在散点图中绘制温度与秒的差异。
我尝试过与 intersect 合并,但这仅匹配常见的日期。
假设您已经将数据存储在两个数组
serie1
和 serie2
中,大小分别为 [n 2]
和 [m 2]
,均按日期排序:
serie = zeros(n+m,3); % maximum possible size
i1 = 1; i2 = 1; ii = 0;
while (i1 <= n || i2 <= m)
ii++;
if i1 > n || serie2(i2,1) < serie1(i1,1)
serie(ii,1) = serie2(i2,1);
serie(ii,2) = serie2(i2,2);
i2++;
elseif i2 > m || serie2(i2,1) > serie1(i1,1)
serie(ii,1) = serie1(i1,1);
serie(ii,3) = serie1(i1,2);
i1++;
else
serie(ii,1) = serie1(i1,1);
serie(ii,2) = serie2(i2,2);
serie(ii,3) = serie1(i1,2);
i1++; i2++;
endif
endwhile
serie = serie(1:ii,:);