Metadata-Version: 1.1
Name: fir1
Version: 1.6.0.0
Summary: Efficient FIR realtime filter
Home-page: https://github.com/berndporr/fir1
Author: Bernd Porr
Author-email: mail@berndporr.me.uk
License: MIT
Description: ====
        Fir1
        ====
        
        An efficient Finite Impulse Response (FIR) filter class
        written in C++ with python wrapper.
        
        Adaptive filtering is also implemented using the Least Mean 
        Square (LMS) or Normalised Least Mean
        Square (NLMS) algorithm.
        
        Installation
        ============
        
        Install the python package with pip::
        
            pip3 install fir1
        
        You can also install from source::
        
            git clone https://github.com/berndporr/fir1
            cd fir1
            python3 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
        -------------------
        
        The file `lms_50Hz_ecg_filter.py` removes 50Hz from 
        an ECG with the help of the lms filter. 
        The filter learns its own frequency response from a
        reference 50Hz sine wave::
        
            f = fir1.Fir1(NTAPS)
            f.setLearningRate(LEARNING_RATE);
        
            y= np.empty(len(ecg))
            for i in range(len(ecg)):
                ref_noise = np.sin(2.0 * np.pi / 20.0 * i);
                canceller = f.filter(ref_noise)
                output_signal = ecg[i] - canceller
                f.lms_update(output_signal)
                y[i] = output_signal
        
        Both the demo file and an explanation how the LMS
        filter works can be found on the homepage of the
        project:
        
        https://github.com/berndporr/fir1
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
