簡體   English   中英

在Matlab中進行互相關以計算兩個時間序列的時滯

[英]Cross correlation in Matlab to compute time lag for two time series

我有兩個時間序列y1和y2,需要在Matlab中使用互相關來找到它們之間的時間差。 然后,我需要繪制互相關圖,對齊兩個圖並重新繪制圖。 我已經寫了一些Matlab代碼來做到這一點,但是我認為互相關圖很奇怪,我無法解釋它。 我不確定我在做什么錯,請您能幫忙嗎? 謝謝。

這是我現在的代碼:

% Generate time series 

t = 1:1000;
y1=2*sin(2*pi*t/5);
y2=2*sin(2*pi*t/5 + 2); % y2 has an introduce phase lag of 2

% Plot the two time series 
figure (1)
plot (t,y1, 'b-', t,y2, 'r-');
axis ([0 50 -2 2]), grid;

% compute the cross correlation using the function xcorr
maxlag = length(y1);   %# set a max lag value here

[c,lags]=xcorr(y1,y2, 'coeff');% compute cross correlation

figure (2);
plot(lags,c)% plot lag versus correlation

問題是您的“信號”只是一個從1到1000的長正弦曲線。因此代碼可以很好地工作,但是您不明白為什么繪圖是三角形的。 好吧,這是因為在第一個元素上,樣本重疊的大小很小(例如y1(1:5)+ y2(end-4:end)),所以在該點獲得的幅度小於整個信號時的幅度重疊(例如y1(1:end)+ y2(1:end))。 僅查看帶有框的xcorr框的草圖(這是您實際所做的,因為整個網格中的信號從1到1000)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM