[SciPy-user] Correlate Times?

Johann Cohen-Tanugi cohen at slac.stanford.edu
Thu Jan 17 21:12:10 EST 2008


hi Ryan, I see the same effect on my box (I actually lost patience and 
killed SS). Note that you forgot an "import numpy as N".
Anyway  :
In [15]: ?N.correlate
Type:           function
Base Class:     <type 'function'>
String Form:    <function correlate at 0x8bd1064>
Namespace:      Interactive
File:           /usr/lib/python2.5/site-packages/numpy/core/numeric.py
Definition:     N.correlate(a, v, mode='valid')
Docstring:
    Return the discrete, linear correlation of 1-D sequences a and v; mode
    can be 'valid', 'same', or 'full' to specify the size of the resulting
    sequence


In [16]: ?S.correlate
Type:           function
Base Class:     <type 'function'>
String Form:    <function correlate at 0x8bd1064>
Namespace:      Interactive
File:           /usr/lib/python2.5/site-packages/numpy/core/numeric.py
Definition:     S.correlate(a, v, mode='valid')
Docstring:
    Return the discrete, linear correlation of 1-D sequences a and v; mode
    can be 'valid', 'same', or 'full' to specify the size of the resulting
    sequence

In [19]: ?SS.correlate
Type:           function
Base Class:     <type 'function'>
String Form:    <function correlate at 0x8ea341c>
Namespace:      Interactive
File:           /usr/lib/python2.5/site-packages/scipy/signal/signaltools.py
Definition:     SS.correlate(in1, in2, mode='full')
Docstring:
    Cross-correlate two N-dimensional arrays.
   
    Description:
   
       Cross-correlate in1 and in2 with the output size determined by mode.
   
    Inputs:
   
      in1 -- an N-dimensional array.
      in2 -- an array with the same number of dimensions as in1.
      mode -- a flag indicating the size of the output
              'valid'  (0): The output consists only of those elements that
                              do not rely on the zero-padding.
              'same'   (1): The output is the same size as the largest input
                              centered with respect to the 'full' output.
              'full'   (2): The output is the full discrete linear
                              cross-correlation of the inputs. (Default)
   
    Outputs:  (out,)
   
      out -- an N-dimensional array containing a subset of the discrete 
linear
             cross-correlation of in1 with in2.


So, S calls N.correlate, and it is a 1D array function, while SS accepts 
N-dim array.
Nevertheless, the cost when the array is 1D is strange for SS, and if it 
is a feature, it should maybe check array dim and default to the numpy 
implementation when 1D....

best,
Johann

Ryan May wrote:
> Hey,
>
> Can someone explain this to me?
>
> In [3]: import scipy as S
>
> In [5]: import scipy.signal as SS
>
> In [6]: from numpy.random import rand
>
> In [7]: up = rand(18000)
>
> In [10]: %timeit N.correlate(up,up,mode='full')
> 10 loops, best of 3: 829 ms per loop
>
> In [11]: %timeit S.correlate(up,up,mode='full')
> 10 loops, best of 3: 827 ms per loop
>
> In [12]: %timeit SS.correlate(up,up,mode='full')
> 10 loops, best of 3: 11.5 s per loop
>
> Is this a configuration problem?  If not, why does
> scipy.signal.correlate even exist?
>
> Thanks,
>
> Ryan
>
>   



More information about the SciPy-User mailing list