MeteoIODoc  MeteoIODoc-2.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ProcIIR.h
Go to the documentation of this file.
1 /***********************************************************************************/
2 /* Copyright 2009 WSL Institute for Snow and Avalanche Research SLF-DAVOS */
3 /***********************************************************************************/
4 /* This file is part of MeteoIO.
5  MeteoIO is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  MeteoIO is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with MeteoIO. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef PROCIIR_H
19 #define PROCIIR_H
20 
22 #include <vector>
23 #include <string>
24 
25 namespace mio {
26 
46 class ProcIIR : public ProcessingBlock {
47  public:
48  ProcIIR(const std::vector<std::string>& vec_args, const std::string& name);
49 
50  virtual void process(const unsigned int& param, const std::vector<MeteoData>& ivec,
51  std::vector<MeteoData>& ovec);
52 
53  private:
54  typedef enum IIR_TYPE {
55  BUTTERWORTH,
56  CRITICALLY_DAMPED,
57  BESSEL
58  } IIR_Type;
59 
60  static void getFilterParameters(const IIR_Type& type, const bool& isLowPass, const double& n, double &g, double &p, double &c);
61  static double filterPoint(const double& raw_val, const double A[3], const double B[3], std::vector<double> &X, std::vector<double> &Y);
62  void computeCoefficients(const double& fs, const double& f0, double A[3], double B[3]) const;
63 
64  void parse_args(std::vector<std::string> vec_args);
65 
66  double cutoff;
67  double g, p, c;
68  bool bidirectional, low_pass;
69 };
70 
71 } //end namespace
72 
73 #endif
virtual void process(const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)
Definition: ProcIIR.cc:35
An abstract class.
Definition: ProcessingBlock.h:63
Infinite Impulse Response (IIR) filter. This filter can either be used as a low pass or high pass fil...
Definition: ProcIIR.h:46
ProcIIR(const std::vector< std::string > &vec_args, const std::string &name)
Definition: ProcIIR.cc:26