00001 00033 #ifndef SOURCE_H 00034 #define SOURCE_H 00035 00036 #include <itpp/base/vec.h> 00037 00038 00039 namespace itpp { 00040 00049 class Sine_Source { 00050 public: 00052 Sine_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00054 double operator()() { return sample(); } 00056 vec operator()(int n); 00058 mat operator()(int h, int w); 00059 protected: 00060 private: 00061 double sample(); 00062 double m, A, theta, dtheta; 00063 }; 00064 00069 class Square_Source { 00070 public: 00072 Square_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00074 double operator()() { return sample(); } 00076 vec operator()(int n); 00078 mat operator()(int h, int w); 00079 protected: 00080 private: 00081 double sample(); 00082 double m, A, theta, dtheta; 00083 }; 00084 00089 class Triangle_Source { 00090 public: 00092 Triangle_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00094 double operator()() { return sample(); } 00096 vec operator()(int n); 00098 mat operator()(int h, int w); 00099 protected: 00100 private: 00101 double sample(); 00102 double m, A, theta, dtheta; 00103 }; 00104 00109 class Sawtooth_Source { 00110 public: 00112 Sawtooth_Source(double freq, double mean=0.0, double ampl=1.0, double inphase=0.0); 00114 double operator()() { return sample(); } 00116 vec operator()(int n); 00118 mat operator()(int h, int w); 00119 protected: 00120 private: 00121 double sample(); 00122 double m, A, theta, dtheta; 00123 }; 00124 00129 class Impulse_Source { 00130 public: 00132 Impulse_Source(double freq, double ampl=1.0, double inphase=0.0); 00134 double operator()() { return sample(); } 00136 vec operator()(int n); 00138 mat operator()(int h, int w); 00139 protected: 00140 private: 00141 double sample(); 00142 double A, pos, dtheta; 00143 }; 00144 00149 class Pattern_Source { 00150 public: 00152 Pattern_Source(const vec &pattern, int start_pos=0); 00154 virtual ~Pattern_Source() { } 00156 double operator()() { return sample(); } 00158 vec operator()(int n); 00160 mat operator()(int h, int w); 00161 protected: 00162 private: 00163 double sample(); 00164 int pos; 00165 vec pat; 00166 double mean, var; 00167 }; 00168 00169 } //namespace itpp 00170 00171 #endif // #ifndef SOURCE_H
Generated on Wed Apr 18 11:45:34 2007 for IT++ by Doxygen 1.5.2