OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Decimator.h
Go to the documentation of this file.
1 #ifndef DECIMATOR_H_
2 #define DECIMATOR_H_
3 
5 #include <Eigen/Core>
6 #include <cmath>
7 
8 class Decimator
9 {
10  int downSamplingFactor;
11  Eigen::VectorXd a, b;
12 
13 public:
14  Decimator(int downSamplingFactor)
15  : downSamplingFactor(downSamplingFactor)
16  {
17  }
18 
23  Eigen::MatrixXd decimate(const Eigen::MatrixXd& x)
24  {
25  // Low pass filter
26  // scipy:
27  // signal.firwin(30+1, 10.0/fs, window='hamming')
28  Eigen::MatrixXd y1(x.rows(), x.cols());
29  Eigen::VectorXd b1(31);
30  b1 << 0.00256293, 0.0032317 , 0.00475108, 0.00727558, 0.01088579,
31  0.01557498, 0.02124304, 0.02769838, 0.03466804, 0.04181521,
32  0.04876293, 0.05512206, 0.06052093, 0.06463443, 0.06720971,
33  0.06808644, 0.06720971, 0.06463443, 0.06052093, 0.05512206,
34  0.04876293, 0.04181521, 0.03466804, 0.02769838, 0.02124304,
35  0.01557498, 0.01088579, 0.00727558, 0.00475108, 0.0032317 ,
36  0.00256293;
37  Eigen::VectorXd a1(1);
38  a1 << 1.;
39  OpenANN::filter(x, y1, b1, a1);
40 
41  Eigen::MatrixXd d(x.rows(), x.cols() / downSamplingFactor);
42  OpenANN::downsample(y1, d, downSamplingFactor);
43  return d;
44  }
45 };
46 
47 #endif // DECIMATOR_H_