274d7920443ec1f7b5a8e7d67db607eab0ac1042
[ctsim.git] / include / filter.h
1 class SignalFilter {
2  public:
3
4     SignalFilter (const FilterType filt_type, double bw, double xmin, double xmax, int n, double param, const DomainType domain, const int numInt);
5
6     ~SignalFilter (void);
7
8     double* getFilter (void) const
9       { return m_vecFilter; }
10
11     double convolve (const double f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
12
13     double convolve (const float f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
14
15     static double spatialResponseCalc (FilterType fType, double bw, double x, double param, int n);
16
17     static double spatialResponseAnalytic (FilterType fType, double bw, double x, double param);
18
19     static double frequencyResponse (FilterType fType, double bw, double u, double param);
20
21  private:
22     double *m_vecFilter;
23     double m_bw;
24     FilterType m_filterType;
25
26     double spatialResponseCalc (double x, double param, int n) const;
27
28     double spatialResponseAnalytic (double x, double param) const;
29
30     double frequencyResponse (double u, double param) const;
31
32     static double sinc (double x, double mult)
33       { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
34
35     static double integral_abscos (double u, double w);
36
37 };
38