[SciPy-user] butter function different from matlab?

Will Woods will.woods at ynic.york.ac.uk
Thu Aug 9 09:25:01 EDT 2007



That explains a lot - thanks!

Nils Wagner wrote:
> Will Woods wrote:
>> I'm rather new to the scipy.signal module, so I appologise if I have 
>> missed something obvious, but I seem to be getting strange results from 
>> the 'butter' function.
>>
>> In matlab, a 9th order higpass filter at 300 Hz on a signal sampled at 
>> 1kHz would be:
>>
>>  >> [B,A] = butter(9,300/500,'high')
>>
>> B =
>>
>>      0.0011   -0.0096    0.0384   -0.0895    0.1342   -0.1342    0.0895 
>>    -0.0384    0.0096   -0.0011
>>
>>
>> A =
>>
>>      1.0000    1.7916    2.5319    2.1182    1.3708    0.6090    0.1993 
>>     0.0431    0.0058    0.0004
>>
>>
>>
>>
>> If I do the same with scipy.signal.butter, I get:
>>
>> In [47]: (b,a)=butter(9,300/500,btype='high')
>>
>> In [48]: (b,a)
>> Out[48]:
>> (array([   1.,   -9.,   36.,  -84.,  126., -126.,   84.,  -36.,    9., 
>> -1.]),
>>   array([   1.,   -9.,   36.,  -84.,  126., -126.,   84.,  -36.,    9., 
>>    -1.]))
>>
>>
>> It would seem that b is roughly 1000 * B, and that a is the same as b, 
>> while in matlab B and A are very different.
>>
>> Can anyone explain why this is? The docs for matlab butter function 
>> appear to say the same thing as the scipy version.
>>
>> Thanks
>>
>> Will
>>
>>
>>
>> _______________________________________________
>> SciPy-user mailing list
>> SciPy-user at scipy.org
>> http://projects.scipy.org/mailman/listinfo/scipy-user
>>   
> Please note that 300/500 is zero. You may use
> 
>>>> (b,a)=signal.butter(9,300./500,btype='high')
>>>> b
> array([ 0.00106539, -0.00958855,  0.0383542 , -0.08949314,  0.13423971,
>        -0.13423971,  0.08949314, -0.0383542 ,  0.00958855, -0.00106539])
>>>> a
> array([  1.00000000e+00,   1.79158135e+00,   2.53189988e+00,
>          2.11822942e+00,   1.37075629e+00,   6.09038913e-01,
>          1.99331557e-01,   4.31047310e-02,   5.80426165e-03,
>          3.55580604e-04])
> 
>>>> 300/500
> 0
>>>> 300./500
> 0.59999999999999998
>>>>                 
> 
> Nils
> 
>  
> 
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user

-- 

Will Woods

York Neuroimaging Centre
The Biocentre
York Science Park
Innovation Way
Heslington
York
YO10 5DG

http://www.ynic.york.ac.uk



More information about the SciPy-User mailing list