15 FILTER_ABS_BANDLIMIT, // filter times |x|
28 static const char FILTER_ABS_BANDLIMIT_STR[]= "abs_bandlimit";
29 static const char FILTER_ABS_SINC_STR[]= "abs_sinc";
30 static const char FILTER_ABS_COS_STR[]= "abs_cos";
31 static const char FILTER_ABS_HAMMING_STR[]= "abs_hamming";
32 static const char FILTER_SHEPP_STR[]= "shepp";
33 static const char FILTER_BANDLIMIT_STR[]= "bandlimit";
34 static const char FILTER_SINC_STR[]= "sinc";
35 static const char FILTER_COS_STR[]= "cos";
36 static const char FILTER_HAMMING_STR[]= "hamming";
37 static const char FILTER_TRIANGLE_STR[]= "triangle";
39 static const char DOMAIN_FREQ_STR[]= "freq";
40 static const char DOMAIN_SPATIAL_STR[]= "spatial";
43 SignalFilter (const char* filterName, double bw, double xmin, double xmax, int n, double param, const char* domainName, const int numIntegral = 0);
45 SignalFilter (const FilterID filt_type, double bw, double xmin, double xmax, int n, double param, const DomainID domain, const int numIntegral = 0);
47 SignalFilter (const char* filterName, const char* domainName, double bw, double param, int numIntegral = 0);
51 double* getFilter (void) const
52 { return m_vecFilter; }
54 double convolve (const double f[], const double dx, const int n, const int np) const;
56 double convolve (const float f[], const double dx, const int n, const int np) const;
58 bool fail(void) const {return m_fail;}
59 const string& failMessage(void) const {return m_failMessage;}
61 const string& nameFilter(void) const { return m_nameFilter;}
62 const string& nameDomain(void) const { return m_nameDomain;}
63 const FilterID idFilter(void) const { return m_idFilter;}
64 const DomainID idDomain(void) const { return m_idDomain;}
66 double response (double x);
68 static double spatialResponse (FilterID fType, double bw, double x, double param, int nIntegral = 0);
70 static double frequencyResponse (FilterID fType, double bw, double u, double param);
72 static double spatialResponseCalc (FilterID fType, double bw, double x, double param, int n);
74 static double spatialResponseAnalytic (FilterID fType, double bw, double x, double param);
91 static FilterID convertFilterNameToID (const char* filterName);
92 static const char* convertFilterIDToName (const FilterID filterID);
93 static const DomainID convertDomainNameToID (const char* domainName);
94 static const char* convertDomainIDToName (const DomainID domainID);
96 void init (const FilterID filt_type, double bw, double xmin, double xmax, int n, double param, const DomainID domain, const int numInt);
98 double spatialResponseCalc (double x, double param, int n) const;
100 double spatialResponseAnalytic (double x, double param) const;
102 double frequencyResponse (double u, double param) const;
104 static double sinc (double x, double mult)
105 { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
107 static double integral_abscos (double u, double w);