Hi,
Thanks - both of you. I changed my code (MatLab by the way) to use the
formula stated in twains post and now it seems to work much better. I
think my mistake was that I divided the sqrt(power) with the number of
samples in the window. Apart from that, I had the same calculation..
Thanks! I appreciate it..
Best,
M.L.
Reply by Jack●February 23, 20062006-02-23
the description of your problem is not easy to understand.
why normalize with power?
I would do it like this
a_new=a/max(a);
b_new=b/max(b);
cross-correlate a_new with b_new and look for peak(s) in cross-correlation.
can you upload screenshots to some webpage so we can see why it looks
"strange"?
which language are you programming in?
Reply by twain●February 23, 20062006-02-23
Normalized correlation is:
sum(A(i)B(i))/sqrt(sum(A(i)^2) sum(B(i)^2))
Where all summations are over the same number of elements N (regardless
of the actual length of each signal, which may have elements that do not
participate in the correlation).
M.L. wrote:
> Hi NG,
>
> I have a problem regarding normalization when performing
> cross-correlation:
>
> I have a relatively short signal/waveform ("A") which I'm
> cross-correlating with a longer timeseries ("B") to look for this
> waveform. Since there are large fluctuations in B, I have decided to
> apply some sort of normalization scheme to both A and B. So, for A I
> divided all the samples with the squareroot of the average power of the
> signal, i.e. sqrt(sum(A(i)^2)/N). As for B, I do the same thing FOR
> EACH WINDOW OF "B" THAT "A" PASSES IN THE CORRELATION. That is, before
> the windows are multiplied and summed in the correlation, the segment
> of B in question undergoes the same treatment as described above.
>
> The result looks very strange, and is definately not correct. Do you
> see any flaws in my method?
>
>
> Thanks!
>
> Best,
>
> M.L.
>
Reply by M.L.●February 23, 20062006-02-23
Hi NG,
I have a problem regarding normalization when performing
cross-correlation:
I have a relatively short signal/waveform ("A") which I'm
cross-correlating with a longer timeseries ("B") to look for this
waveform. Since there are large fluctuations in B, I have decided to
apply some sort of normalization scheme to both A and B. So, for A I
divided all the samples with the squareroot of the average power of the
signal, i.e. sqrt(sum(A(i)^2)/N). As for B, I do the same thing FOR
EACH WINDOW OF "B" THAT "A" PASSES IN THE CORRELATION. That is, before
the windows are multiplied and summed in the correlation, the segment
of B in question undergoes the same treatment as described above.
The result looks very strange, and is definately not correct. Do you
see any flaws in my method?
Thanks!
Best,
M.L.