00001 00030 #ifndef SOURCE_H 00031 #define SOURCE_H 00032 00033 #include <itpp/base/vec.h> 00034 00035 00036 namespace itpp { 00037 00039 00044 class Sine_Source { 00045 public: 00047 Sine_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00049 double operator()() { return sample(); } 00051 vec operator()(int n); 00053 mat operator()(int h, int w); 00054 protected: 00055 private: 00056 double sample(); 00057 double m, A, theta, dtheta; 00058 }; 00059 00064 class Square_Source { 00065 public: 00067 Square_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00069 double operator()() { return sample(); } 00071 vec operator()(int n); 00073 mat operator()(int h, int w); 00074 protected: 00075 private: 00076 double sample(); 00077 double m, A, theta, dtheta; 00078 }; 00079 00084 class Triangle_Source { 00085 public: 00087 Triangle_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00089 double operator()() { return sample(); } 00091 vec operator()(int n); 00093 mat operator()(int h, int w); 00094 protected: 00095 private: 00096 double sample(); 00097 double m, A, theta, dtheta; 00098 }; 00099 00104 class Sawtooth_Source { 00105 public: 00107 Sawtooth_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00109 double operator()() { return sample(); } 00111 vec operator()(int n); 00113 mat operator()(int h, int w); 00114 protected: 00115 private: 00116 double sample(); 00117 double m, A, theta, dtheta; 00118 }; 00119 00124 class Impulse_Source { 00125 public: 00127 Impulse_Source(double freq, double ampl=1.0, double inphase=0.0); 00129 double operator()() { return sample(); } 00131 vec operator()(int n); 00133 mat operator()(int h, int w); 00134 protected: 00135 private: 00136 double sample(); 00137 double A, pos, dtheta; 00138 }; 00139 00144 class Pattern_Source { 00145 public: 00147 Pattern_Source(const vec &pattern, int start_pos=0); 00149 virtual ~Pattern_Source() { } 00151 double operator()() { return sample(); } 00153 vec operator()(int n); 00155 mat operator()(int h, int w); 00156 protected: 00157 private: 00158 double sample(); 00159 int pos; 00160 vec pat; 00161 double mean, var; 00162 }; 00163 00164 } //namespace itpp 00165 00166 #endif // #ifndef SOURCE_H
Generated on Thu Apr 24 13:39:01 2008 for IT++ by Doxygen 1.5.5