+#ifndef FILTER_H
+#define FILTER_H
+
+
class SignalFilter {
public:
- SignalFilter (const FilterType filt_type, double bw, double xmin, double xmax, int n, double param, const DomainType domain, const int numInt);
+ typedef enum {
+ FILTER_INVALID,
+ FILTER_BANDLIMIT,
+ FILTER_SINC,
+ FILTER_G_HAMMING,
+ FILTER_COSINE,
+ FILTER_TRIANGLE,
+ FILTER_ABS_BANDLIMIT, // filter times |x|
+ FILTER_ABS_SINC,
+ FILTER_ABS_G_HAMMING,
+ FILTER_ABS_COSINE,
+ FILTER_SHEPP
+ } FilterID;
+
+ typedef enum {
+ DOMAIN_INVALID,
+ DOMAIN_FREQ,
+ DOMAIN_SPATIAL
+ } DomainID;
+
+
+ SignalFilter (const char* filterName, double bw, double xmin, double xmax, int n, double param, const char* domainName, const int numInt);
+
+ SignalFilter (const FilterID filt_type, double bw, double xmin, double xmax, int n, double param, const DomainID domain, const int numInt);
~SignalFilter (void);
double* getFilter (void) const
{ return m_vecFilter; }
- double convolve (const double f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
+ double convolve (const double f[], const double dx, const int n, const int np) const;
+
+ double convolve (const float f[], const double dx, const int n, const int np) const;
- double convolve (const float f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
+ bool fail(void) const {return m_fail;}
+ const string& nameFilter(void) const { return m_nameFilter;}
+ const string& nameDomain(void) const { return m_nameDomain;}
+ const FilterID idFilter(void) const { return m_idFilter;}
+ const DomainID idDomain(void) const { return m_idDomain;}
- static double spatialResponseCalc (FilterType fType, double bw, double x, double param, int n);
+ static double response (const char* const FilterName, const char* const DomainName, double bw, double x, double param);
- static double spatialResponseAnalytic (FilterType fType, double bw, double x, double param);
+ static double spatialResponseCalc (FilterID fType, double bw, double x, double param, int n);
- static double frequencyResponse (FilterType fType, double bw, double u, double param);
+ static double spatialResponseAnalytic (FilterID fType, double bw, double x, double param);
+
+ static double frequencyResponse (FilterID fType, double bw, double u, double param);
private:
- double *m_vecFilter;
double m_bw;
- FilterType m_filterType;
-
- double spatialResponseCalc (double x, double param, int n) const;
+ int m_nPoints;
+ double m_xmin;
+ double m_xmax;
+ double* m_vecFilter;
+ bool m_fail;
+ string m_nameFilter;
+ string m_nameDomain;
+ FilterID m_idFilter;
+ DomainID m_idDomain;
+
+ static const char FILTER_ABS_BANDLIMIT_STR[]= "abs_bandlimit";
+ static const char FILTER_ABS_SINC_STR[]= "abs_sinc";
+ static const char FILTER_ABS_COS_STR[]= "abs_cos";
+ static const char FILTER_ABS_HAMMING_STR[]= "abs_hamming";
+ static const char FILTER_SHEPP_STR[]= "shepp";
+ static const char FILTER_BANDLIMIT_STR[]= "bandlimit";
+ static const char FILTER_SINC_STR[]= "sinc";
+ static const char FILTER_COS_STR[]= "cos";
+ static const char FILTER_HAMMING_STR[]= "hamming";
+ static const char FILTER_TRIANGLE_STR[]= "triangle";
+
+ static const char DOMAIN_FREQ_STR[]= "freq";
+ static const char DOMAIN_SPATIAL_STR[]= "spatial";
+
+ static FilterID convertFilterNameToID (const char* filterName);
+ static const char* convertFilterIDToName (const FilterID filterID);
+ static const DomainID convertDomainNameToID (const char* domainName);
+ static const char* convertDomainIDToName (const DomainID domainID);
+
+ void init (const FilterID filt_type, double bw, double xmin, double xmax, int n, double param, const DomainID domain, const int numInt);
+
+double spatialResponseCalc (double x, double param, int n) const;
double spatialResponseAnalytic (double x, double param) const;
};
+
+#endif