[Numpy-discussion] numpy.correlate with phase offset 1D data series

Ray Schumacher subscriber100 at rjs.org
Mon Mar 3 14:57:12 EST 2008


I'm trying to figure out what numpy.correlate does, and, what are 
people using to calculate the phase shift of 1D signals?

(I coded on routine that uses rfft, conjugate, ratio, irfft, and 
argmax  based on a paper by Hongjie Xie "An IDL/ENVI implementation 
of the FFT Based Algorithm for Automatic Image Registration" - but 
that seems more intensive than it could be.)

In numpy, an identity
import numpy
from pylab import *
l=[1,5,3,8,15,6,7,7,9,10,4]
c=numpy.correlate(l,l, mode='same')
plot(c) peaks at the center, x=5, and is symmetric

when the data is rotated by 2
c=numpy.correlate(l, l[-2:]+l[:-2], mode='same')
it peaks at x=3

I was expecting, I guess, that the peak should reflect the x axis shift, as in
http://en.wikipedia.org/wiki/Cross-correlation#Explanation


If I use a real time domain signal like
http://rjs.org/Python/sample.sig
fh = open(r'sample.sig','rb')
s1 = numpy.fromstring(fh.read(), numpy.int32)
fh.close()

an identity like
c=numpy.correlate(s1, s1, mode='same')
plots like noise.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20080303/2f09f79a/attachment.html>
-------------- next part --------------


No virus found in this outgoing message.
Checked by AVG Free Edition. 
Version: 7.5.516 / Virus Database: 269.21.3/1308 - Release Date: 3/3/2008 10:01 AM


More information about the NumPy-Discussion mailing list