2
$\begingroup$

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;

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.