How do you calculate a correlation function in MATLAB?
Afficher commentaires plus anciens
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
Réponses (1)
Hiro Yoshino
le 1 Juin 2022
0 votes
6 commentaires
Hiro Yoshino
le 1 Juin 2022
Just a few lines of code server for this problem.
L'O.G.
le 1 Juin 2022
Hiro Yoshino
le 1 Juin 2022
Modifié(e) : Hiro Yoshino
le 1 Juin 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
le 1 Juin 2022
Does this make sense to you?
L'O.G.
le 1 Juin 2022
Hiro Yoshino
le 2 Juin 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".
Catégories
En savoir plus sur Correlation and Convolution dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
