How can i calculate max correlation and time delay between two signals?

조회 수: 11 (최근 30일)
Gabriela
Gabriela 2023년 9월 29일
답변: KSSV 2023년 9월 29일
So, for my code, I am asked to calculate max correlation and time delay between two signals. I already calculated the max correlation, but I need to find the lag value (time delay) at the index the max correlation happened. After doing this, I need to multiply the lag value at the index with the time step to be able to get the time delay. The problem is, I am unsure on how to do this. I'd appreciate some help. Thank you!
Here is my code:
clear;
clc;
load("DeltaP_Vel.txt");
time=DeltaP_Vel(:,1);
press=DeltaP_Vel(:,2);
vrbc=DeltaP_Vel(:,3);
ekg=DeltaP_Vel(:,4);
[cycles,locs]=findpeaks(ekg);
num_cycles= length(cycles)-1;
for i=1:39
diff(i)=locs(i+1)-locs(i);
end
maxsize=max(diff);
p=zeros(num_cycles, maxsize+1);
v=zeros(num_cycles,maxsize+1);
for i=1:num_cycles
start=locs(i);
last=locs(i+1);
p(i,1:diff(i)+1)=press(start:last)';
v(i,1:diff(i)+1)=vrbc(start:last)';
end
en_p=mean(p);
en_v=mean(v);
I_t=length(en_v)*0.005;
t_cycle=0:0.005:I_t-0.005;
% A)
[r,lags]=xcorr(en_p,en_v);
plot(lags,r);
xlabel('Lag Index');
ylabel('Cross Correlation');
title('Lag Index VS Cross Correlation:');
% B)
[maxvalue,index]=max(r);
display(index);
display(maxvalue);

답변 (1개)

KSSV
KSSV 2023년 9월 29일
REad about crosscorr.

카테고리

Help CenterFile Exchange에서 Correlation and Convolution에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by