MNE-CPP  0.1.9
A Framework for Electrophysiology
parksmcclellan.h
Go to the documentation of this file.
1 //=============================================================================================================
62 #ifndef PARKSMCCLELLAN_H
63 #define PARKSMCCLELLAN_H
64 
65 //=============================================================================================================
66 // INCLUDES
67 //=============================================================================================================
68 
69 #include "../rtprocessing_global.h"
70 
71 //=============================================================================================================
72 // EIGEN INCLUDES
73 //=============================================================================================================
74 
75 #include <Eigen/Core>
76 
77 //=============================================================================================================
78 // QT INCLUDES
79 //=============================================================================================================
80 
81 #include <QObject>
82 
83 //=============================================================================================================
84 // DEFINE NAMESPACE RTPROCESSINGLIB
85 //=============================================================================================================
86 
87 namespace RTPROCESSINGLIB
88 {
89 
96 {
97  Q_OBJECT
98  Q_ENUMS(TPassType) //makes enum available to the class' Qt meta object
99 
100 public:
101  enum TPassType {LPF, HPF, BPF, NOTCH };
102 
103  ParksMcClellan();
104 
105  //=========================================================================================================
127  ParksMcClellan(int NumTaps,
128  double OmegaC,
129  double BW,
130  double ParksWidth,
131  TPassType PassType);
132 
133  ~ParksMcClellan();
134 
135  //=========================================================================================================
140  void init(int NumTaps,
141  double OmegaC,
142  double BW,
143  double ParksWidth,
144  TPassType PassType);
145 
146  //=========================================================================================================
149  void CalcParkCoeff2(int NBANDS, int NFILT);
150 
151  //=========================================================================================================
155  double LeGrangeInterp2(int K, int N, int M);
156 
157  //=========================================================================================================
162  double GEE2(int K, int N);
163 
164  //=========================================================================================================
167  int Remez2(int GridIndex);
168 
169  //=========================================================================================================
173  bool ErrTest(int k,
174  int Nut,
175  double Comp,
176  double *Err);
177 
178  //=========================================================================================================
183  void CalcCoefficients();
184 
185  Eigen::RowVectorXd FirCoeff;
187 private:
188  int HalfTapCount;
189  Eigen::VectorXi ExchangeIndex;
190  Eigen::VectorXd LeGrangeD;
191  Eigen::VectorXd Alpha;
192  Eigen::VectorXd CosOfGrid;
193  Eigen::VectorXd DesPlus;
194  Eigen::VectorXd Coeff;
195  Eigen::VectorXd Edge;
196  Eigen::VectorXd BandMag;
197  Eigen::VectorXd InitWeight;
198  Eigen::VectorXd DesiredMag;
199  Eigen::VectorXd Grid;
200  Eigen::VectorXd Weight;
201 
202  bool InitDone2;
203 };
204 } // NAMESPACE RTPROCESSINGLIB
205 
206 #endif // PARKSMCCLELLAN_H
The ParksMcClellan class provides the ParksMcClellan filter desing algorithm.
#define RTPROCESINGSHARED_EXPORT