[PD] Cross correlation using FFT

Jamie Bullock jamie at postlude.co.uk
Wed Apr 19 21:10:15 CEST 2006


Hi chuck,

Thanks a lot for putting this together. I was so near, but yet so far with regard to getting it right.

I hope you don't mind, but I have incorporated your code from xcorr~ into the flib library. I thought this would make sense since there is already cross correlation in there. Now [cc~ f] performs frequency domain cross correlation using your algorithm, cc~ without any arguments (or with a delay time as an argument) performs time domain cross correlation based on work by Phil Bourke. I have also removed the dependency on fftw; you might think this is crazy, but for the moment at least, I'd like to stick with Mayer. 

Thanks again for your help.

Jamie

On Mon Apr 17 17:24:24 CEST 2006 Charles Henry wrote:

Sorry it took me so long to send the external and code.....
It just got me thinking that I was doing something really wrong here,
but I think I've got it straightened out now.

The implementation here does a pretty good job of using xcorr~ in
overlapping blocks, like block 256 2.
So, we have the two signals, as described before
sig1 |/\/\/\/\|/\/\/\/\|  2N non-zero samples
sig2 |----/\/\|/\/\----|  N non-zero samples, in the middle
We can do a running calculation of the cross-correlation, using
overlapping blocks. (Don't reblock the output, it won't work that
way.)
|/\/\/\/\|/\/\/\/\|
|----/\/\|/\/\----|
|--------|/\/\/\/\|/\/\/\/\|
|--------|----/\/\|/\/\----|

And the result is that when we add up the results of xcorr across
blocks we get a running calculation of the cross correlation.
So, I also created two others to help here. intbb~ which integrates
(stably) between blocks (which was no doubt unnecessary)
and maxm~ which picks out the maximum value, and its location in the
vector between bounds, e.g. [maxm~ -256 256] picks out the location of
the maximum value, closest to the "origin" of the vector, in either
the last 256 samples of xcorr~ or the first 256 samples of xcorr~

again sorry for the long delay
chuck




More information about the Pd-list mailing list