Efficient FIR realtime filter
Project description
An efficient finite impulse response (FIR) filter class written in C++ with python wrapper.
The class offers also adaptive filtering using the least mean square (LMS) or normalised least mean square (NLMS) algorithm.
Installation
Linux
If you want to install it via pip you first need to install the fir binary filter package:
sudo add-apt-repository ppa:berndporr/usbdux sudo apt-get update sudo apt install fir1
- Then you install the source of the package with pip::
pip3 install fir1
You can also install from source:
git clone https://github.com/berndporr/fir1 cd fir1 cmake . make make install python3 setup.py install
Windows
This is alpha and needs to be tested.
Usage
Realtime filtering
The filter is a realtime filter which always receives the values one by one so can process data as it comes in from an ADC converter. This is simulated here with the for loop:
import fir1 b = signal.firwin(999,0.1) f = fir1.Fir1(b) for i in range(len(noisy_signal)): clean_signal[i] = f.filter(noisy_signal[i])
The constructor Fir1(b) receives the coefficients and then filtering is performed with the method filter().
LMS adaptive filter
Please check the C++ code for examples and the main github page. The functions are identical.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fir1-1.3.0.5-py3.6-linux-x86_64.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | fda4733e70de927cba46abfcc3ceb6a70a0b7be510b9f7f0e49d444eac107262 |
|
MD5 | 66cea905ae526f8426596fc412393ba2 |
|
BLAKE2b-256 | 8bba624779723b2b971fed66fe20a4115d90755549228e32ea011738cd7ded49 |