関数merge_sequence_with_gap_overlap マニュアル

(The documentation of function merge_sequence_with_gap_overlap)

Last Update: 2024/7/26


◆機能・用途(Purpose)

サンプルに抜けや重複がある(かもしれない)2つの時系列データを 1つの時系列データにまとめる。
Merge two time series data, that may have gaps or overlaps in the data samples, to a single time series data.


◆形式(Format)

#include <sequence/operation.h>
inline struct sequence merge_sequence_with_gap_overlap
(struct sequence seq1,struct sequence seq2)


◆引数(Arguments)

seq1 1つ目の時系列データ。
The 1st time series data.
seq2 2つ目の時系列データ。 サンプル間隔(メンバdt)はseq1と等しくなければならず(seq1.dt=seq2.dt)、 先頭時刻はseq1の末尾時刻にサンプル間隔の整数倍を加えた値でなければならない ((seq2.t0-seq1.tmax)/seq2.dtが整数)。
The 2nd time series data. The sampling interval (expressed by member dt) must be equal to that of argument seq1 (i.e., seq1.dt = seq2.dt), and the time difference between the beginning time of seq2 and the end time of seq1 must be an integer multiple of the sampling interval (i.e., (seq2.t0 - seq1.tmax)/seq2.dt must be an integer).


◆戻り値(Return value)

seq1の後にseq2をつなげた時系列データ。 2つの時系列データの間にサンプルの抜けがある場合は線形補間し、 サンプルの重複がある場合は同じ時刻での値がseq1とseq2で等しければその値を採用し、 等しくなければプログラムをエラー終了する。
A time series data composed of seq1 followed by seq2. Gaps of samples between the two time series data are linearly interpolated. If the data samples are overlapped, the values of seq1 and seq2 at each time step are compared. If they are equal, the value of them is used for the return value; if they are not equal, the program finishes as an error.

データサンプルに抜けがある例。 青色で示した部分が抜けであり、この部分は線形補間される。
An example of data with gaps, shown by blue, which are linearly interpolated.
時刻
Time
seq1のデータの値
Data value of seq1
seq2のデータの値
Data value of seq2
戻り値として設定するデータの値
Data value to be set for the return value
0.0 1.0   1.0
0.1 0.9   0.9
0.2 0.7   0.7
0.3 0.4   0.4
0.4 0.0   0.0
0.5 -0.5   -0.5
0.6 -1.1   -1.1
0.7 -1.8   -1.8
0.8     -2.2
0.9     -2.6
1.0   -3.0 -3.0
1.1   -3.1 -3.1
1.2   -2.8 -2.8
1.3   -3.3 -3.3
1.4   -2.6 -2.6
1.5   -3.5 -3.5
1.6   -2.4 -2.4
1.7   -3.7 -3.7
1.8   -2.2 -2.2
1.9   -3.9 -3.9

データサンプルに重複がある例。 青色で示した部分が重複であり、seq1とseq2でデータの値が等しいので その値が戻り値として採用される。
An example of data with overlaps, shown by blue; because the data values of seq1 and seq2 at each overlapped sample are equal, these data values are used in the return value.
時刻
Time
seq1のデータの値
Data value of seq1
seq2のデータの値
Data value of seq2
戻り値として設定するデータの値
Data value to be set for the return value
0.0 1.0   1.0
0.1 0.9   0.9
0.2 0.7   0.7
0.3 0.4   0.4
0.4 0.0   0.0
0.5 -0.5   -0.5
0.6 -1.1   -1.1
0.7 -1.8   -1.8
0.8 -2.3   -2.3
0.9 -2.7   -2.7
1.0 -3.0 -3.0 -3.0
1.1 -3.1 -3.1 -3.1
1.2   -2.8 -2.8
1.3   -3.3 -3.3
1.4   -2.6 -2.6
1.5   -3.5 -3.5
1.6   -2.4 -2.4
1.7   -3.7 -3.7
1.8   -2.2 -2.2
1.9   -3.9 -3.9

エラーとなる例。 青色で示した部分が重複であり、同じ時刻でのseq1とseq2でデータの値が等しくない。 この場合はプログラムをエラー終了する。
An example of data with overlaps, shown by blue; because the data values of seq1 and seq2 at each overlapped sample are not equal, the program finises as an error.
時刻
Time
seq1のデータの値
Data value of seq1
seq2のデータの値
Data value of seq2
0.0 1.0  
0.1 0.9  
0.2 0.7  
0.3 0.4  
0.4 0.0  
0.5 -0.5  
0.6 -1.1  
0.7 -1.8  
0.8 -2.6  
0.9 -3.5  
1.0 -4.5 -3.0
1.1 -5.6 -3.1
1.2   -2.8
1.3   -3.3
1.4   -2.6
1.5   -3.5
1.6   -2.4
1.7   -3.7
1.8   -2.2
1.9   -3.9

◆使用例(Example)

struct sequence data1=read_sequence_file("data_day1.seq1");
struct sequence data2=read_sequence_file("data_day2.seq1");
struct sequence merged=merge_sequence_with_gap_overlap(data1,data2);