如何合并两个不同长度的时间序列,使用 Octave 替换零空日期

问题描述 投票:0回答:1

我使用的是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 合并,但这仅匹配常见的日期。

plot merge time-series octave
1个回答
1
投票

假设您已经将数据存储在两个数组

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,:);
© www.soinside.com 2019 - 2024. All rights reserved.