Home > Workshops >
Fast Track to Designing FIR Filters with Python
Dan Boschen- Watch Now - Duration: 01:29:21
Thank you for your interest in the Fast Track to Designing FIR Filters with Python workshop! Below are the installation instructions as well as a Jupyter Notebook with the material that will be presented in the workshop.
Option 1: Easy path to Python: Install the Anaconda Individual Edition which will have all the tools we will be using: https://www.anaconda.
Option 2: Alternative manual path to Python: As a minimum install we will be using Python 3, Numpy, Matplotlib, and Scipy:
Install python: https://www.python.
From command window type:
pip install ipython
pip install numpy
pip install matplotlib
pip install scipy
(if you encounter any difficulty with installing the packages, see this page: https://packaging.
Being able to run Jupyter Notebooks is not necessary for the workshop but convenient as I am sharing the details of the workshop in the attached Jupyter Notebook for future reference. If you would like further basics on running the Notebook, please see this link:
Notebook: Fast Track FIR Filter Workshop.ipynb
Finite Impulse Response (FIR) filters are the more popular of the two main types of digital filter implementations used in DSP applications. In this workshop, we will go through best practice approaches for optimized FIR filter design and implementation using the free and open-source Python programming language. This will include the common techniques for going from filter requirements to practical implementation and demonstrate both creating FIR filter designs as well as evaluating filter frequency responses using the Python language and its signal processing library.
This workshop will include:
- Complete setup to get Python up and running for signal processing applications.
- Summary of the high-level approaches to FIR filter design – which are best and why?
- Fast track to using the signal processing library in Python for creating FIR designs.
- The complete design flow for FIR filters from specification through verification.
- Using Python for filter evaluation, including plotting magnitude and phase responses.
10:58:35 From Dan Boschen : hello! 11:27:27 From Fred Harris : ofdm is the best example of thefrequency sampled data filter because all sampled tones in the ofdm signal match the kernels of the the DFT. 11:34:07 From Stephane Boucher : https://www.dsprelated.com/new2/course_registration_dsp_wireless.php 11:55:54 From Dave Comer : I'm sorry I missed your comment details on where you said the Juypter notebook(s) can be downloaded? My apologies. 11:56:26 From Dave Comer : Thank you. 11:56:37 From Stephane Boucher : It is actually currently available here: https://www.dsprelated.com/new2/course_registration_dsp_wireless.php 11:56:49 From Stephane Boucher : Simply click on the 'Description tab' 11:57:17 From Michael Kirkhart : Is this the link to the ipython notebook? : https://s3.amazonaws.com/embeddedrelated/user/1/fast%20track%20fir%20filter%20workshop_89335.ipynb 11:58:29 From Stephane Boucher : Yes, that should be it 12:07:27 From mnapier : Just an observation. The multiband filters are handy for doing resampling. In that case its not multiple pass bands but multiple stop bands. Each stop band where there is an image that needs to be rejected. In between those are don't care regions. The multiple stop bands allow the FIR zeros to be concentrated in area that matter and so reduce the order required. 12:21:35 From gs : Awesome presentation! Newbie question on implementation: I am streaming 500sps data into python, circ-buffering/notch-filtering in chunks of N*500 in np, scipy windowing/fft, and graphing in real-ish time. Have learned a lot so far, and would now like to filter data stream on sample-by-sample basis instead of chunks. Any pointers on how to do this in python? Also, any comments on practical/custom notch filtering (to remove nasty 60 cycle in this case)? Thx, Gil 12:28:43 From Radu Pralea : For aligning the input and output (filtered) signal, without anti-causally passing it twice through the filter (modifying the response), we can always simply discard first N/2 output samples (the group delay), and flush the filter at the end (feed it an additional N/2 zero-samples at the end). 12:29:25 From David Robinson : The trick is the closer to DC, the more risk to have unstability with qusntization 12:29:52 From David Robinson : See the presentation of fred harris last Monday on this topic 12:30:34 From gs : Yes, Fred's talks were incredible. thx 12:31:00 From Rob K. : thanks, dan. great talk 12:31:18 From Mike Swanson : thank you! 12:31:58 From Terrence Lawrence : great talk and demo