Help composing Personal autocorrelation function
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
The following is my code for calculating the autocorrelation:
function [Rxx]= myauto(x)
% This function Estimates the autocorrelation of the sequence of
% random variables given in x as: Rxx(1), Rxx(2),…,Rxx(N),
% where N is Number of samples in x.
N=length(x);
Rxx=zeros(1,N);
for m=1: N+1
for n=1: N-m+1
Rxx(m)=Rxx(m)+x(n)*x(n+m-1);
end;
end;
plot(Rxx)
The challenge, however, is that after I plot the values I get from my autocorrelation function (i.e Rxx), only half the points that I would otherwise get with the Matlab function xcorr are produced. For example, If I were to plot the autocorrelation of sin(x) [for x from 0 to 2pi], my function would only produce half of the curve that the Matlab function would.
I, thus, need help adjusting my function so that I am able to replicate the results that I get using the Matlab xcorr function.
Thanks.
1 comentario
Daniel Shub
el 4 de Abr. de 2012
It looks like you are only using positive lags. You need to include negative lags. Of course this causes "problems" with MATLAB indexing ...
Respuesta aceptada
Rick Rosson
el 5 de Abr. de 2012
Since we know in advance that the autocorrelation is an even function of time lag, you can simply invert the result and concatenate:
Rxx = [ fliplr(Rxx(2:end)) Rxx ];
HTH.
Rick
2 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!