21 #define GRT_DLL_EXPORTS
31 classType =
"HighPassFilter";
32 preProcessingType = classType;
33 debugLog.setProceedingText(
"[DEBUG HighPassFilter]");
34 errorLog.setProceedingText(
"[ERROR HighPassFilter]");
35 warningLog.setProceedingText(
"[WARNING HighPassFilter]");
36 init(filterFactor,gain,numDimensions);
38 if( cutoffFrequency != -1 && delta != -1 ){
45 preProcessingType = classType;
46 preProcessingType =
"HighPassFilter";
47 debugLog.setProceedingText(
"[DEBUG HighPassFilter]");
48 errorLog.setProceedingText(
"[ERROR HighPassFilter]");
49 warningLog.setProceedingText(
"[WARNING HighPassFilter]");
75 if( preProcessing == NULL )
return false;
91 errorLog <<
"clone(const PreProcessing *preProcessing) - PreProcessing Types Do Not Match!" << std::endl;
99 errorLog <<
"process(const VectorFloat &inputVector) - Not initialized!" << std::endl;
103 if( inputVector.size() != numInputDimensions ){
104 errorLog <<
"process(const VectorFloat &inputVector) - The size of the inputVector (" << inputVector.size() <<
") does not match that of the filter (" << numInputDimensions <<
")!" << std::endl;
108 processedData =
filter( inputVector );
110 if( processedData.size() == numOutputDimensions )
return true;
122 if( !file.is_open() ){
123 errorLog <<
"save(fstream &file) - The file is not open!" << std::endl;
127 file <<
"GRT_HIGH_PASS_FILTER_FILE_V1.0" << std::endl;
129 file <<
"NumInputDimensions: " << numInputDimensions << std::endl;
130 file <<
"NumOutputDimensions: " << numOutputDimensions << std::endl;
132 file <<
"Gain: " <<
gain << std::endl;
139 if( !file.is_open() ){
140 errorLog <<
"load(fstream &file) - The file is not open!" << std::endl;
149 if( word !=
"GRT_HIGH_PASS_FILTER_FILE_V1.0" ){
150 errorLog <<
"load(fstream &file) - Invalid file format!" << std::endl;
156 if( word !=
"NumInputDimensions:" ){
157 errorLog <<
"load(fstream &file) - Failed to read NumInputDimensions header!" << std::endl;
160 file >> numInputDimensions;
164 if( word !=
"NumOutputDimensions:" ){
165 errorLog <<
"load(fstream &file) - Failed to read NumOutputDimensions header!" << std::endl;
168 file >> numOutputDimensions;
172 if( word !=
"FilterFactor:" ){
173 errorLog <<
"load(fstream &file) - Failed to read FilterFactor header!" << std::endl;
180 if( word !=
"Gain:" ){
181 errorLog <<
"load(fstream &file) - Failed to read Gain header!" << std::endl;
187 return init(filterFactor,gain,numInputDimensions);
194 if( numDimensions == 0 ){
195 errorLog <<
"init(Float filterFactor,Float gain,UINT numDimensions) - NumDimensions must be greater than 0!" << std::endl;
199 if( filterFactor <= 0 ){
200 errorLog <<
"init(Float filterFactor,Float gain,UINT numDimensions) - FilterFactor must be greater than 0!" << std::endl;
205 errorLog <<
"init(Float filterFactor,Float gain,UINT numDimensions) - Gain must be greater than 0!" << std::endl;
211 this->numInputDimensions = numDimensions;
212 this->numOutputDimensions = numDimensions;
217 processedData.clear();
218 processedData.
resize(numDimensions,0);
228 errorLog <<
"filter(const Float x) - The filter has not been initialized!" << std::endl;
234 if( y.size() == 0 )
return 0;
242 errorLog <<
"filter(const VectorFloat &x) - Not Initialized!" << std::endl;
246 if( x.size() != numInputDimensions ){
247 errorLog <<
"filter(const VectorFloat &x) - The Number Of Input Dimensions (" << numInputDimensions <<
") does not match the size of the input vector (" << x.size() <<
")!" << std::endl;
251 for(UINT n=0; n<numInputDimensions; n++){
259 processedData[n] = processedData[n];
261 return processedData;
269 errorLog <<
"setGain(Float gain) - Gain value must be greater than 0!" << std::endl;
274 if( filterFactor > 0 ){
278 errorLog <<
"setFilterFactor(Float filterFactor) - FilterFactor value must be greater than 0!" << std::endl;
283 if( cutoffFrequency > 0 && delta > 0 ){
284 Float RC = (1.0/TWO_PI) / cutoffFrequency;
virtual bool deepCopyFrom(const PreProcessing *preProcessing)
bool setFilterFactor(Float filterFactor)
Float filterFactor
The filter factor (alpha) of the filter.
virtual bool load(std::fstream &file)
HighPassFilter(Float filterFactor=0.1, Float gain=1, UINT numDimensions=1, Float cutoffFrequency=-1, Float delta=-1)
virtual bool resize(const unsigned int size)
VectorFloat yy
The previous output value(s)
HighPassFilter & operator=(const HighPassFilter &rhs)
virtual bool process(const VectorFloat &inputVector)
Float gain
The gain factor of the filter.
This class implements a High Pass Filter.
virtual ~HighPassFilter()
std::string getPreProcessingType() const
VectorFloat xx
The previous input value(s)
bool copyBaseVariables(const PreProcessing *preProcessingModule)
Float filter(const Float x)
virtual bool save(std::fstream &file) const
bool setCutoffFrequency(Float cutoffFrequency, Float delta)