[SciPy-User] FFT Filter

Anders Harrysson anders.harrysson@fem4fun....
Tue Sep 27 09:21:42 CDT 2011


Hi,

I have looked thou the example and obviously there are something that I 
simply don't get :(.  Do anyone have some good references on how to 
decide the input parameters to firwin2? Furthermore, when computing he 
phase delay, will this differ when using a band pass filter instead of a 
low pass?

Sorry for very elementary questions...

Anders

Warren Weckesser skrev 2011-09-27 13:53:
> Anders,
>
> The attached script is a variation of 
> http://www.scipy.org/Cookbook/FIRFilter.  It uses firwin() to create a 
> bandpass filter, and plots the frequency response and the results of 
> applying the filter to a sample.  It should be straightforward to 
> modify it to use firwin2() instead, if desired.
>
> The script uses scipy.signal.lfilter to apply the filter, but this 
> isn't the fastest way to apply a FIR filter.  Take a look at an 
> experiment that I did here 
> http://www.scipy.org/Cookbook/ApplyFIRFilter to see a comparison of 
> several way of applying a FIR filter.
>
> Regards,
>
> Warren
>
>
> On Tue, Sep 27, 2011 at 4:47 AM, Anders Harrysson 
> <anders.harrysson@fem4fun.com <mailto:anders.harrysson@fem4fun.com>> 
> wrote:
>
>     Hi,
>     Thanks a lot for the reply. I have started to look into this and
>     currently I am trying to use firwin2 to generate the filter
>     coefficients according to below
>
>     b=signal.firwin2(512,freq,gain,nfreqs=N,nyq=nf)
>
>     X2=signal.lfilter(b,[1.0],y)
>
>
>     However I get strange results, when trying to filter even a very
>     simple signal :(. This is probably not a scipy related question,
>     but how to put the numtaps number? How is this related to the
>     other inputs.
>
>     Regards,
>     Anders
>
>     Christophe Grimault skrev 2011-09-26 18:32:
>>     Hi Anders,
>>
>>     Use : scipy.signals.lfilter(b, a, x)
>>
>>     Where x is your signal (complex or real, it doesn't matter). As a filter
>>     in the Fourier domain is basically FIR filter, you only need to pass the
>>     b array (the response of the filter) and set a = [1.0].
>>
>>     Chris
>>
>>     On Sat, 2011-09-24 at 09:33 +0200, Anders Harrysson wrote:
>>>     Dear all,
>>>
>>>     I am kind of new to scipy and also new to the signal processing field
>>>     that this question relates to.
>>>     I am trying to do a bandpass FFT filter using python. The filter shape
>>>     is symmetric around 11 Hz and is defined by the parameters ff and Hz below.
>>>
>>>     x=loadtxt('file')
>>>
>>>     sr = 250                    # [samples/s]
>>>     nf = sr/2.0                # Nyquist frequence
>>>     Ns = len(tr[:,0])       # Total number of samples
>>>     N=float(8192)          # Fourier settings
>>>
>>>     # Fourier transform
>>>     X1 = fft(x,n=int(N))
>>>     X1 = fftshift(X1)
>>>     F1 = arange(-N/2.0,N/2.0)/N*sr
>>>
>>>     # Filter
>>>     ff=[0,1,1,0]
>>>     Hz = [9.5, 10, 12, 12.5]
>>>     k1=interp(-F1,Hz,ff)+interp(F1,Hz,ff)
>>>     X1_f=X1*k1
>>>     X1_f=ifftshift(X1_f)
>>>     x1_f=ifft(X1_f,n=int(N))
>>>
>>>     My question is now:
>>>     Are ther built in functionallity for filtering in scioy and, if so, how
>>>     would a similar filter looks like.
>>>
>>>     Regards,
>>>     Anders Harrysson
>>>     _______________________________________________
>>>     SciPy-User mailing list
>>>     SciPy-User@scipy.org  <mailto:SciPy-User@scipy.org>
>>>     http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
>     _______________________________________________
>     SciPy-User mailing list
>     SciPy-User@scipy.org <mailto:SciPy-User@scipy.org>
>     http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
>
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20110927/ca3410f6/attachment.html 


More information about the SciPy-User mailing list