[Scipy-tickets] [SciPy] #1620: filtfilt axis argument fails

SciPy Trac scipy-tickets@scipy....
Thu Mar 15 02:07:31 CDT 2012


#1620: filtfilt axis argument fails
--------------------------+-------------------------------------------------
 Reporter:  askjak        |       Owner:  somebody   
     Type:  defect        |      Status:  new        
 Priority:  normal        |   Milestone:  Unscheduled
Component:  scipy.signal  |     Version:  0.10.0     
 Keywords:                |  
--------------------------+-------------------------------------------------

Old description:

> The filtfilt fails when using axis, which works as expected for lfilter.
> See code below
>
> import numpy as np
> from scipy.signal import lfilter, filtfilt, butter
>
> x = np.random.random((100,50))
>
> b, a = butter(3, 0.05)
>

> y1 = lfilter(b, a, x, axis=1)
> y2 = lfilter(b, a, x.T, axis=0)
>
> assert np.all(y1-y2.T==0)==True
>
> y1 = filtfilt(b, a, x, axis=1)
> y2 = filtfilt(b, a, x.T, axis=0)
>
> Traceback (most recent call last):
>   File "filtfilt.py", line 15, in <module>
>     y2 = filtfilt(b, a, x.T, axis=0)
>   File "/share/distro/python/2.7.2/lib/python2.7/site-
> packages/scipy/signal/signaltools.py", line 1533, in filtfilt
>     (y, zf) = lfilter(b, a, ext, zi=zi * x0)
>   File "/share/distro/python/2.7.2/lib/python2.7/site-
> packages/scipy/signal/signaltools.py", line 581, in lfilter
>     return sigtools._linear_filter(b, a, x, axis, zi)
> ValueError: The number of initial conditions must be max([len(a),len(b)])
> - 1

New description:

 The filtfilt fails when using axis, which works as expected for lfilter.
 See code below
 {{{
 import numpy as np
 from scipy.signal import lfilter, filtfilt, butter

 x = np.random.random((100,50))

 b, a = butter(3, 0.05)


 y1 = lfilter(b, a, x, axis=1)
 y2 = lfilter(b, a, x.T, axis=0)

 assert np.all(y1-y2.T==0)==True

 y1 = filtfilt(b, a, x, axis=1)
 y2 = filtfilt(b, a, x.T, axis=0)

 Traceback (most recent call last):
   File "filtfilt.py", line 15, in <module>
     y2 = filtfilt(b, a, x.T, axis=0)
   File "/share/distro/python/2.7.2/lib/python2.7/site-
 packages/scipy/signal/signaltools.py", line 1533, in filtfilt
     (y, zf) = lfilter(b, a, ext, zi=zi * x0)
   File "/share/distro/python/2.7.2/lib/python2.7/site-
 packages/scipy/signal/signaltools.py", line 581, in lfilter
     return sigtools._linear_filter(b, a, x, axis, zi)
 ValueError: The number of initial conditions must be max([len(a),len(b)])
 - 1
 }}}

--

Comment(by warren.weckesser):

 Add markup for code in the description.

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


More information about the Scipy-tickets mailing list