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;