Skip to main content

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 fir1 filter binaries:

sudo add-apt-repository ppa:berndporr/usbdux
sudo apt-get update
sudo apt install fir1
sudo apt install fir1-dev
Then install the python 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

There is a pre-compiled package which can be installed via pip:

pip3 install fir1

If you want to compile from source you first need to build the static fir windows library which is called fir_static.lib. Open the command line and type:

cmake -G "Visual Studio 15 2017 Win64" .

Then start Visual Studio and build fir.sln. Go back to the command line and type:

python setup.py install

Usage

Realtime filtering

The filter is a realtime filter which receives samples one by one so it can process data as it arrives 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() receives the filter coefficients (= impulse response) 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fir1-1.3.0.9.tar.gz (6.1 kB view hashes)

Uploaded Source

Built Distributions

fir1-1.3.0.9-py3.6-win-amd64.egg (30.6 kB view hashes)

Uploaded Source

fir1-1.3.0.9-cp36-cp36m-win_amd64.whl (27.6 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page