Autocorrelation Matrix from a vector
21 views (last 30 days)
Show older comments
I have observations of a noisy channel and i form a vector y of length n from those observations. I need to compute the autocorrelation matrix from this vector y which should be just the outer product y*y' i-e E[y*y']=y*y'. This matrix is a rank=1 nxn matrix. Is this correct?
0 Comments
Accepted Answer
Wayne King
on 26 Sep 2012
Edited: Wayne King
on 26 Sep 2012
No, that is not correct. The way you are doing it is not giving the autocorrelation matrix. For one thing your matrix is not going to be Toeplitz.
For example:
x = randn(10,1);
rxx = x*x';
Note the above, rxx, is not Toeplitz.
But
[xc,lags] = xcorr(x,x,9,'biased');
r = xc(10:end);
rxx = toeplitz(r,conj(r)); % the conj() of course here is not needed
Now, rxx is Toeplitz and not that the autocorrelation matrix has full column rank.
rank(rxx)
Or you could do:
X = fft(x,2^nextpow2(2*size(x,1)-1));
R = ifft(abs(X).^2);
m = length(x);
R = R./m; % Biased autocorrelation estimate
rxx = toeplitz(R(1:length(x)),conj(R(1:length(x))));
0 Comments
More Answers (1)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!