# Iterative Auto and Cross Correleation Estimates

I'm looking for literature or other information that covers iteratively estimating the auto- and cross-correlation vectors and the auto-correlation matrix.

Initially, I can assume the signal is wide-sense stationary, but I also have to deal with changing signals and statistics.

For what it's worth, I looked at two simple algorithms in the matlab code below, showing the variance calculation (red) and a leaky integrator (blue). I also have a boxcar filter (green). The code is shown below, along with a plot of the results.

But, except for the variance calculation in red, the results vary a lot from one run to another. I'm reluctant to get too creative without examining any papers on the subject to get a more rigorous and analytical understanding of how to go about this.

In the long run, this gets implemented into an FPGA, so hardware resources are limited and I need to take that into account.

Where can I find information specifically on this topic?

(Also, help with the tags on this would be appreciated.)

n = 10;
historyLength = 200;
mu = 1/historyLength;
p1 = conj(referenceSignal(n))*referenceSignal(1:n);
p2 = p1;

pBox = zeros(historyLength,n);
pBox(1,:) = p1;
pBox(1,:) = p1;
pBoxIndex = 2;
pBoxFillLevel = 1;

figure(100);
hold on;
for index = n+1:sampleCount
X = referenceSignal(index+1-n:index);
d = conj(referenceSignal(index));
deltaP = d*X;
p1 = (p1*(index-n-1) + deltaP)/(index-n);
p2 = (1-mu)*p2 + mu*deltaP;
pBox(pBoxIndex,:) = deltaP;
p3 = sum(pBox,1)/pBoxFillLevel;
plot(index, p1(n),'r');
plot(index, p2(n), 'b');
plot(index, p3(n), 'g');

if pBoxFillLevel < historyLength
pBoxFillLevel = pBoxFillLevel+1;
end;

pBoxIndex = pBoxIndex+1;
if pBoxIndex > historyLength
pBoxIndex = 1;
end;

end; 