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?
John Michell answered .
2025-11-20
x = randn(10,1);
rxx = x*x';
[xc,lags] = xcorr(x,x,9,'biased'); r = xc(10:end); rxx = toeplitz(r,conj(r)); % the conj() of course here is not needed
rank(rxx)
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))));