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;

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;

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


enter image description here



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.