Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FiltFilt

Digital Filter implementation, with and without initialization. Also including the filtfilt function, as known from GNU Octave/Matlab.

Install

Compile the static library

$ git clone https://github.com/KBaur/FiltFilt.git
$ cd ./FiltFilt/build
$ sudo bash ./build_and_install_lib.sh

folder

Platforms

  • Linux
  • Windows
  • macOS

Features

  • Based on the implementation of Likhterov & Kopeika, 2003. "Hardware-efficient technique for minimizing startup transients in Direct Form II digital filters"
  • Simple Filter implementation with and without initialization
  • Zero-Phase Filter implementation with filtfilt
  • Window filtering is following

Usage samples

Basic usage

#include <iostream>
#include <vector>
#include <sstream>
#include <fstream>

#include "FiltFilt.h"

int main() 
{
    kb::math::FilterCoefficients<double> fc{ 
        m_CoefficientsA:{1.0000,-2.374094743709352,1.929355669091215,-0.532075368312092}, 
        m_CoefficientsB:{2.898194633721429e-03,8.694583901164288e-03,8.694583901164288e-03,2.898194633721429e-03}
    };

    std::vector<double> signal = splitCsv("../FiltFilt/samples/signal1.csv");

    kb::math::Filt<double> filt(fc);
    kb::math::FiltFilt<double> filtfilt(fc);
    
    auto filtered = filt.Filter(signal);
    auto zeroPhaseFiltered = filtfilt.ZeroPhaseFiltering(signal);
}

Result of the example

Outcome signal 1

Documentation

Doxygen documentation will be generated


About

Digital filter implementation

Topics

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages