26 RegisterPreProcessingModule< HighPassFilter > HighPassFilter::registerModule(
"HighPassFilter");
30 classType =
"HighPassFilter";
31 preProcessingType = classType;
32 debugLog.setProceedingText(
"[DEBUG HighPassFilter]");
33 errorLog.setProceedingText(
"[ERROR HighPassFilter]");
34 warningLog.setProceedingText(
"[WARNING HighPassFilter]");
35 init(filterFactor,gain,numDimensions);
37 if( cutoffFrequency != -1 && delta != -1 ){
44 preProcessingType = classType;
45 preProcessingType =
"HighPassFilter";
46 debugLog.setProceedingText(
"[DEBUG HighPassFilter]");
47 errorLog.setProceedingText(
"[ERROR HighPassFilter]");
48 warningLog.setProceedingText(
"[WARNING HighPassFilter]");
74 if( preProcessing == NULL )
return false;
90 errorLog <<
"clone(const PreProcessing *preProcessing) - PreProcessing Types Do Not Match!" << endl;
98 errorLog <<
"process(const VectorDouble &inputVector) - Not initialized!" << endl;
102 if( inputVector.size() != numInputDimensions ){
103 errorLog <<
"process(const VectorDouble &inputVector) - The size of the inputVector (" << inputVector.size() <<
") does not match that of the filter (" << numInputDimensions <<
")!" << endl;
107 processedData =
filter( inputVector );
109 if( processedData.size() == numOutputDimensions )
return true;
122 errorLog <<
"saveModelToFile(string filename) - The HighPassFilter has not been initialized" << endl;
127 file.open(filename.c_str(), std::ios::out);
141 if( !file.is_open() ){
142 errorLog <<
"saveModelToFile(fstream &file) - The file is not open!" << endl;
146 file <<
"GRT_HIGH_PASS_FILTER_FILE_V1.0" << endl;
148 file <<
"NumInputDimensions: " << numInputDimensions << endl;
149 file <<
"NumOutputDimensions: " << numOutputDimensions << endl;
151 file <<
"Gain: " <<
gain << endl;
159 file.open(filename.c_str(), std::ios::in);
174 if( !file.is_open() ){
175 errorLog <<
"loadModelFromFile(fstream &file) - The file is not open!" << endl;
184 if( word !=
"GRT_HIGH_PASS_FILTER_FILE_V1.0" ){
185 errorLog <<
"loadModelFromFile(fstream &file) - Invalid file format!" << endl;
191 if( word !=
"NumInputDimensions:" ){
192 errorLog <<
"loadModelFromFile(fstream &file) - Failed to read NumInputDimensions header!" << endl;
195 file >> numInputDimensions;
199 if( word !=
"NumOutputDimensions:" ){
200 errorLog <<
"loadModelFromFile(fstream &file) - Failed to read NumOutputDimensions header!" << endl;
203 file >> numOutputDimensions;
207 if( word !=
"FilterFactor:" ){
208 errorLog <<
"loadModelFromFile(fstream &file) - Failed to read FilterFactor header!" << endl;
215 if( word !=
"Gain:" ){
216 errorLog <<
"loadModelFromFile(fstream &file) - Failed to read Gain header!" << endl;
222 return init(filterFactor,gain,numInputDimensions);
229 if( numDimensions == 0 ){
230 errorLog <<
"init(double filterFactor,double gain,UINT numDimensions) - NumDimensions must be greater than 0!" << endl;
234 if( filterFactor <= 0 ){
235 errorLog <<
"init(double filterFactor,double gain,UINT numDimensions) - FilterFactor must be greater than 0!" << endl;
240 errorLog <<
"init(double filterFactor,double gain,UINT numDimensions) - Gain must be greater than 0!" << endl;
246 this->numInputDimensions = numDimensions;
247 this->numOutputDimensions = numDimensions;
249 xx.resize(numDimensions,0);
251 yy.resize(numDimensions,0);
252 processedData.clear();
253 processedData.resize(numDimensions,0);
263 errorLog <<
"filter(const double x) - The filter has not been initialized!" << endl;
267 VectorDouble y =
filter(VectorDouble(1,x));
269 if( y.size() == 0 )
return 0;
277 errorLog <<
"filter(const VectorDouble &x) - Not Initialized!" << endl;
278 return VectorDouble();
281 if( x.size() != numInputDimensions ){
282 errorLog <<
"filter(const VectorDouble &x) - The Number Of Input Dimensions (" << numInputDimensions <<
") does not match the size of the input vector (" << x.size() <<
")!" << endl;
283 return VectorDouble();
286 for(UINT n=0; n<numInputDimensions; n++){
294 yy[n] = processedData[n];
296 return processedData;
304 errorLog <<
"setGain(double gain) - Gain value must be greater than 0!" << endl;
309 if( filterFactor > 0 ){
313 errorLog <<
"setFilterFactor(double filterFactor) - FilterFactor value must be greater than 0!" << endl;
318 if( cutoffFrequency > 0 && delta > 0 ){
319 double RC = (1.0/TWO_PI) / cutoffFrequency;
double filterFactor
The filter factor (alpha) of the filter.
virtual bool process(const VectorDouble &inputVector)
virtual bool loadModelFromFile(string filename)
virtual ~HighPassFilter()
VectorDouble yy
The previous output value(s)
HighPassFilter & operator=(const HighPassFilter &rhs)
double filter(const double x)
bool setGain(double gain)
bool setCutoffFrequency(double cutoffFrequency, double delta)
string getPreProcessingType() const
HighPassFilter(double filterFactor=0.1, double gain=1, UINT numDimensions=1, double cutoffFrequency=-1, double delta=-1)
This class implements a High Pass Filter.
bool setFilterFactor(double filterFactor)
virtual bool saveModelToFile(string filename) const
bool copyBaseVariables(const PreProcessing *preProcessingModule)
virtual bool deepCopyFrom(const PreProcessing *preProcessing)
VectorDouble xx
The previous input value(s)
double gain
The gain factor of the filter.