xcorr returning a triangular shaped plot

조회 수: 11 (최근 30일)
Marek
Marek 2013년 3월 4일
I'm currently trying to find a the time delay between peaks in CO2 concentration and the peaks in intensity gained from and MRI scan. But so far when I use xcorr and plot the results I just get a triangular shaped peak at 0 lag which I know can't be right.
Has anyone any idea what I am doing wrong?
So far my code it pretty simple:
a=load(CO2 file)
b=load(MRI file)
T=a/norm(a)
Y=b/norm(b)
time=92 % There are 92 data point
figure 1
plot(time, T, time, Y)% Just to see what the normalised data looks like on the same graph
C=xcorr(a, b, 20, 'coeff') % Only interested in 20 lags either way
time2=-20:20
plot(time2, C) % Results in a triangular-shaped plot
  댓글 수: 3
Marek
Marek 2013년 3월 4일
Ahh no need, normalising the data in the way you described has solved the problem now and I'm getting more reasonable results. Thanks!!
TJ
TJ 2013년 5월 24일
Could you elaborate on what fixed your problem? How did you normalize your data and what did that do?

댓글을 달려면 로그인하십시오.

답변 (1개)

Image Analyst
Image Analyst 2013년 5월 24일
Maybe you should use normalized cross correlation, done by normxcorr2() in the Image Processing Toolbox (IPT). IPT functions also work with 1D signals as well as 2D images and sometimes 3 dimensions or more.
Often non-periodic signals will correlate and give a roughly triangular, or mountain-shaped, result so what you're seeing is not uncommon. In fact the correlation of two uniform signals will give a perfect triangle - just consider how the area of overlap changes as two boxes slide past each other.

카테고리

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