[英]Calculating correlation of different time series
我有幾個時間序列,即我在15分鍾內測量了幾個信號。 每個信號每秒采樣幾次,但不同信號的時間戳不相等。 假設我們從時間0開始。 例如,信號一具有以下(時間戳,值):
0.1s: 954
0.2s: 1000
0.24s: 1090
0.3s: 855
0.45s: 600
...
信號二具有以下內容(時間戳,值):
0.05s: 900
0.13s: 960
0.2s: 1000
0.29s: 850
0.33s 800
...
現在如何在python或Matlab中計算這些時間序列的值的相關性? 如果這些值將始終處於相同的時間戳,則我可以僅計算各個值之間的相關性,但不幸的是,這些值不在同一時間戳上。
假設您在時間點t1
一個數組s1
中的值的信號,並且在時間點t2
處有一個信號s2
求值。 在Python中使用NumPy :
t
選擇一組公共的時間點。 您可以選擇t1
或t2
,或者使用np.linspace
在考慮的時間范圍內計算線性空間。 無論如何,我都會確保t
的最小值和最大值在t1
和t2
的范圍內,以避免外推。 s1interp
和s2interp
。 可以使用np.interp
來完成,它可以計算線性插值。 如果您需要更復雜的插值方法,可以看看SciPy的interp1d
。 s1interp
和s2interp
之間的相關性。 這是通過np.corrcoef
完成的。 您可以對其中一個數據集進行一些簡單的插值(請參見MATLAB的interp1
),以使它們共享采樣率,如果那是您唯一的問題...
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];
現在它們具有相同的樣本點,您可以做自己喜歡的事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.