How do you calculate a correlation function in MATLAB?
Mostrar comentarios más antiguos
I am trying to calculate the correlation function given by
where I sum over all i ("part" in the following). Do I just choose time zero arbitrarily as t1 like in the following? I am not sure how to do this. vbar is calculated separately and is just a constant here..
for t1 = 1:tmax
for t2 = t1:tmax
for part = 1:tot_part
a0(t2-t1,part) = a0(t2-t1,part) + (v(t1,part)+vbar)*(v(t2,part)+vbar)
n0(t1,part) = (v(t1,part)+vbar) + 1
end
end
end
for t = 0:tmax-1
for part = 1:tot_part
corr0(t) = corr0(t) + a0(t,part)/n0(t,part)
end
end
Respuestas (1)
Hiro Yoshino
el 1 de Jun. de 2022
0 votos
6 comentarios
Hiro Yoshino
el 1 de Jun. de 2022
Just a few lines of code server for this problem.
L'O.G.
el 1 de Jun. de 2022
Hiro Yoshino
el 1 de Jun. de 2022
Editada: Hiro Yoshino
el 1 de Jun. de 2022
You should take a look at the documentation carefully. I would do it like:
x = rand(10,1)
[r,lag] = xcorr(x)
stem(lag,r/var(x))
Hiro Yoshino
el 1 de Jun. de 2022
Does this make sense to you?
L'O.G.
el 1 de Jun. de 2022
Hiro Yoshino
el 2 de Jun. de 2022
Totally understood. When I was in school, I didn't realize there had been this function for ages and crafted my own from scratch but good thing about MATLAB is that you can avoid "re-inventing wheels".
Categorías
Más información sobre Correlation and Convolution en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
