[Scipy-tickets] [SciPy] #1529: scipy.signal.convolve behavior in scipy.0.9.0-py2.6 has changed

SciPy Trac scipy-tickets@scipy....
Mon Oct 3 07:07:10 CDT 2011


#1529: scipy.signal.convolve behavior in scipy.0.9.0-py2.6 has changed
--------------------------------------+-------------------------------------
 Reporter:  Fusengammu                |       Owner:  somebody   
     Type:  defect                    |      Status:  new        
 Priority:  normal                    |   Milestone:  Unscheduled
Component:  scipy.signal              |     Version:  0.9.0      
 Keywords:  convolve remez mode same  |  
--------------------------------------+-------------------------------------

Old description:

> Behavior is not consistent with documentation explaining usage of
> remez and convolve.  mode="same" should produce same size output as input
> (it used to), but now apparently doesn't.  I have access to two versions
> of scipy.  In one of them, the code below produces output I expect (old
> version, python 2.5.2).  In new version, size of output incorrect.
>
> import numpy as _N
> from scipy.signal import convolve, remez, freqz
>
> #################################################
> #################################################
> smpf = 1000
> nyqf = smpf/2
> ppntaps = 1200
>
> ppnidealBP= [0.001, 1, 0.001]
> beWIDE    = (0, 1, 4, 120, 123, nyqf)
> t         = _N.arange(0, 20, 0.001)
>
> f1        = 150.   #  150 Hz signal
> f2        =  70.   #  150 Hz signal
>
> twofs     = _N.sin(2*_N.pi*f1*t) + _N.sin(2*_N.pi*f2*t)
>
> b         = remez(ppntaps, beWIDE, ppnidealBP, Hz=smpf, type="bandpass")
> bp        = convolve(b, twofs, mode="same")
>
> print len(bp)
> #  on newest scipy for macpython 2.6 (scipy-0.9.0-py2.6.mpkg    MacOS X),
> len == 1200.  Older version of scipy gives me length of 20000.  Since I
> am filtering data, I want the output to be as long as the original data
>
> #  according to
> #  http://docs.scipy.org/doc/scipy/reference/tutorial/signal.html
> #convolution-correlation
> #  -->>  so that the output has the same length as the largest input
> <<--

New description:

 Behavior is not consistent with documentation explaining usage of
 remez and convolve.  mode="same" should produce same size output as input
 (it used to), but now apparently doesn't.  I have access to two versions
 of scipy.  In one of them, the code below produces output I expect (old
 version, python 2.5.2).  In new version, size of output incorrect.
 {{{
 import numpy as _N
 from scipy.signal import convolve, remez, freqz

 #################################################
 #################################################
 smpf = 1000
 nyqf = smpf/2
 ppntaps = 1200

 ppnidealBP= [0.001, 1, 0.001]
 beWIDE    = (0, 1, 4, 120, 123, nyqf)
 t         = _N.arange(0, 20, 0.001)

 f1        = 150.   #  150 Hz signal
 f2        =  70.   #  150 Hz signal

 twofs     = _N.sin(2*_N.pi*f1*t) + _N.sin(2*_N.pi*f2*t)

 b         = remez(ppntaps, beWIDE, ppnidealBP, Hz=smpf, type="bandpass")
 bp        = convolve(b, twofs, mode="same")

 print len(bp)

 #  on newest scipy for macpython 2.6 (scipy-0.9.0-py2.6.mpkg    MacOS X),
 len == 1200.  Older version of scipy gives me length of 20000.  Since I am
 filtering data, I want the output to be as long as the original data

 #  according to
 #  http://docs.scipy.org/doc/scipy/reference/tutorial/signal.html
 #convolution-correlation
 #  -->>  so that the output has the same length as the largest input  <<--
 }}}

--

Comment(by pv):

 Yes, the documentation is incorrect. The convolution with mode='same'
 produces output of the same shape as the first input.

 http://docs.scipy.org/doc/scipy/reference/release.0.9.0.html#old-
 correlate-convolve-behavior-in-scipy-signal

-- 
Ticket URL: <http://projects.scipy.org/scipy/ticket/1529#comment:1>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.


More information about the Scipy-tickets mailing list