[Numpy-discussion] Problem with correlate

Charles R Harris charlesr.harris at gmail.com
Sun May 31 21:45:56 EDT 2009


On Sun, May 31, 2009 at 7:18 PM, David Cournapeau <
david at ar.media.kyoto-u.ac.jp> wrote:

> Charles R Harris wrote:
> >
> >
> > On Sun, May 31, 2009 at 11:54 AM, rob steed <rjsteed at talk21.com
> > <mailto:rjsteed at talk21.com>> wrote:
> >
> >
> >     Hi,
> >     After my previous email, I have opened a ticket #1117 (correlate
> >     not order dependent)
> >
> >     I have found that the correlate function is defined in
> >     multiarraymodule.c and
> >     that inputs are being swapped using the following code
> >
> >        n1 = ap1->dimensions[0];
> >        n2 = ap2->dimensions[0];
> >        if (n1 < n2) {
> >            ret = ap1;
> >            ap1 = ap2;
> >            ap2 = ret;
> >            ret = NULL;
> >            i = n1;
> >            n1 = n2;
> >            n2 = i;
> >        }
> >
> >     I do not know the code well enough to see whether this could just
> >     be removed (I don't know c either).
> >     Maybe the algorithmn requires the inputs to be length ordered? I
> >     will try to work it out.
> >
> >
> > If the correlation algorithm doesn't use an fft and is done
> > explicitly, then the maximum overlap for any shift is the length of
> > the shortest input.  Swapping the arrays makes that logic easier to
> > implement, but it isn't necessary.
>
> But this logic is also wrong if the swapping is not taken into account -
> as the OP mentioned, correlate(a, b) is not equal to correlate(b, a) in
> the general case. The output is reversed in the second case compared to
> the first case.
>

I didn't say it was *correctly* implemented ;)

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20090531/3db69270/attachment.html>


More information about the NumPy-Discussion mailing list