2017-09-20 14 views
0

私はいくつかの時系列を持っています。つまり、私は15分以上の信号を測定しました。各信号は毎秒数回サンプリングされますが、異なる信号のタイムスタンプは等しくありません。時間0で始まるとしましょう。例えば、信号1は、以下の(タイムスタンプ、値)を持つ:異なる時系列の相関の計算

0.1s: 954 
0.2s: 1000 
0.24s: 1090 
0.3s: 855 
0.45s: 600 
... 

信号2は、以下の(タイムスタンプ、値)を持つ:

0.05s: 900 
0.13s: 960 
0.2s: 1000 
0.29s: 850 
0.33s 800 
... 

どのように私は今の値の相関を計算することができますこれらの時系列は、例えばPythonまたはMatlab?値が常に同じタイムスタンプにある場合は、個々の値間の相関だけを計算できますが、残念ながら値は同じタイムスタンプではありません。それはあなたの唯一の問題だ場合、彼らは、サンプリングレートを共有するようにするには、データ・セットのいずれかにいくつかの簡単な補間(MATLAB用interp1を参照)を行うことができます

+3

同じタイムスタンプに補間し、相関を計算します。 – Adriaan

答えて

1

あなたが時点t1、および信号s2で配列s1の値を持つ信号を持っていると言うには、時点t2で評価します。 PythonでNumPyで:

  1. 両方の信号tのための時間点の共通セットを選択します。 t1またはt2を選択するか、考えられる時間範囲の線形空間をnp.linspaceで計算できます。いずれにせよ、tの最小値と最大値が外挿を避けるためにt1t2の両方の範囲にあることを確認したいと思います。
  2. 両方の信号の補間を計算します(s1interpおよびs2interp)。これは、線形補間を計算するnp.interpで行うことができます。より洗練された補間方法が必要な場合は、SciPyのinterp1dをご覧ください。
  3. s1interps2interpの間の相関を計算します。これはnp.corrcoefで行われます。
+0

あなたの答えをありがとう、jdehesa。 corrcoefと一緒に私は栄冠の行列を得ています。相関を推定する単一の値にどのように集計できますか? – machinery

+0

@machinery右、私は忘れていました、 'np.corrcoef'はあなたにピアソン相関_matrix_を与えます。ここでは2つの変数しかないので、 '[0、1]'または '[1、0]'(これは同じ値)のいずれかを取ることができます。 – jdehesa

+0

ありがとうございます。両方のシグナルが相関しているとしますが、それらはy方向にシフトしています(1つのシグナルは振幅が小さい)。私がシフトの価値を知らないと、これをどのように補うことができますか?このシフトを相関値に組み込むことは望ましくありません。 – machinery

1

...

X =[0.1 954 
    0.2 1000 
    0.24 1090 
    0.3 855 
    0.45 600]; 

Y =[0.05 900 
    0.13 960 
    0.2 1000 
    0.29 850 
    0.33 800]; 

t = Y(:,1); % get time samples from Y 
% Interpolate (linearly, with extrapolation) X2 values onto time samples t 
X2 = [t, interp1(X(:,1), X(:,2), t, 'linear', 'extrap')]; 

>> X2 = [0.05 931 
     0.13 967.8 
     0.2 1000 
     0.29 894.1667 
     0.33 804]; 

今、彼らは同じを持っていますサンプルポイントは、好きなことをすることができます。

関連する問題