00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef FIRFILTER_H
00029 #define FIRFILTER_H
00030
00031
00032 #include <simthetic/phbib.h>
00033 #include <simthetic/containers.h>
00034
00035 namespace simthlib
00036 {
00037
00038
00039 template<class T>
00040 class Filter
00041 {
00042 public:
00043 virtual ~Filter() {};
00046 virtual void filter(const simth::Array2d<T>& symbols, simth::Array2d<T>* filteredSymbols) = 0;
00047
00050 virtual void print(std::ostream &os) const = 0;
00051 };
00052
00056 template<class T>
00057 class FirFilter2D : public Filter<T>
00058 {
00059 public:
00060
00063 enum Filter_Shape { RECT, CONE, HAMMING };
00064
00067 FirFilter2D(int numFilterCoeffDim1,int numFilterCoeffDim2,Filter_Shape filterMode);
00068
00071 virtual ~FirFilter2D();
00072
00075 virtual void filter(const simth::Array2d<T>& symbols, simth::Array2d<T>* filteredSymbols);
00076
00079 virtual void print(std::ostream &os) const;
00080
00081 private:
00082
00085 simth::Array2d<double> filterCoefficients;
00086
00090 int sideLength1;
00091
00094 int sideLength2;
00095
00099 std::string fShapeStr;
00100 };
00101
00102 }
00103
00104 #endif