38 classType =
"DoubleMovingAverageFilter";
39 preProcessingType = classType;
40 debugLog.setProceedingText(
"[DEBUG DoubleMovingAverageFilter]");
41 errorLog.setProceedingText(
"[ERROR DoubleMovingAverageFilter]");
42 warningLog.setProceedingText(
"[WARNING DoubleMovingAverageFilter]");
43 init(filterSize,numDimensions);
51 classType =
"DoubleMovingAverageFilter";
52 preProcessingType = classType;
53 debugLog.setProceedingText(
"[DEBUG DoubleMovingAverageFilter]");
54 errorLog.setProceedingText(
"[ERROR DoubleMovingAverageFilter]");
55 warningLog.setProceedingText(
"[WARNING DoubleMovingAverageFilter]");
79 if( preProcessing == NULL )
return false;
94 errorLog <<
"clone(const PreProcessing *preProcessing) - PreProcessing Types Do Not Match!" << std::endl;
103 errorLog <<
"process(const VectorFloat &inputVector) - The filter has not been initialized!" << std::endl;
107 if( inputVector.size() != numInputDimensions ){
108 errorLog <<
"process(const VectorFloat &inputVector) - The size of the inputVector (" << inputVector.
getSize() <<
") does not match that of the filter (" << numInputDimensions <<
")!" << std::endl;
112 processedData =
filter( inputVector );
114 if( processedData.size() == numOutputDimensions )
return true;
126 errorLog <<
"saveModelToFile(string filename) - The DoubleMovingAverageFilter has not been initialized" << std::endl;
131 file.open(filename.c_str(), std::ios::out);
145 if( !file.is_open() ){
146 errorLog <<
"saveModelToFile(std::fstream &file) - The file is not open!" << std::endl;
150 file <<
"GRT_DOUBLE_MOVING_AVERAGE_FILTER_FILE_V1.0" << std::endl;
152 file <<
"NumInputDimensions: " << numInputDimensions << std::endl;
153 file <<
"NumOutputDimensions: " << numOutputDimensions << std::endl;
154 file <<
"FilterSize: " <<
filterSize << std::endl;
162 file.open(filename.c_str(), std::ios::in);
177 if( !file.is_open() ){
178 errorLog <<
"loadModelFromFile(std::fstream &file) - The file is not open!" << std::endl;
187 if( word !=
"GRT_DOUBLE_MOVING_AVERAGE_FILTER_FILE_V1.0" ){
188 errorLog <<
"loadModelFromFile(std::fstream &file) - Invalid file format!" << std::endl;
194 if( word !=
"NumInputDimensions:" ){
195 errorLog <<
"loadModelFromFile(std::fstream &file) - Failed to read NumInputDimensions header!" << std::endl;
198 file >> numInputDimensions;
202 if( word !=
"NumOutputDimensions:" ){
203 errorLog <<
"loadModelFromFile(std::fstream &file) - Failed to read NumOutputDimensions header!" << std::endl;
206 file >> numOutputDimensions;
210 if( word !=
"FilterSize:" ){
211 errorLog <<
"loadModelFromFile(std::fstream &file) - Failed to read FilterSize header!" << std::endl;
217 return init(filterSize,numInputDimensions);
225 if( filterSize == 0 ){
226 errorLog <<
"init(UINT filterSize,UINT numDimensions) - Filter size can not be zero!" << std::endl;
230 if( numDimensions == 0 ){
231 errorLog <<
"init(UINT filterSize,UINT numDimensions) - The number of dimensions must be greater than zero!" << std::endl;
237 numInputDimensions = numDimensions;
238 numOutputDimensions = numDimensions;
239 processedData.clear();
240 processedData.
resize(numDimensions,0 );
243 errorLog <<
"init(UINT filterSize,UINT numDimensions) - Failed to initialize filter 1!" << std::endl;
248 errorLog <<
"init(UINT filterSize,UINT numDimensions) - Failed to initialize filter 1!" << std::endl;
262 errorLog <<
"filter(const Float x) - The filter has not been initialized!" << std::endl;
268 if( y.
getSize() == 0 )
return 0;
276 errorLog <<
"filter(const VectorFloat &x) - The filter has not been initialized!" << std::endl;
280 if( x.
getSize() != numInputDimensions ){
281 errorLog <<
"filter(const VectorFloat &x) - The size of the input vector (" << x.
getSize() <<
") does not match that of the number of dimensions of the filter (" << numInputDimensions <<
")!" << std::endl;
288 if( y.size() == 0 )
return y;
293 if( yy.size() == 0 )
return y;
297 for(UINT i=0; i<N; i++){
298 yy[i] = y[i] + (y[i] - yy[i]);
299 processedData[i] = yy[i];
virtual ~DoubleMovingAverageFilter()
MovingAverageFilter filter2
The second moving average filter.
DoubleMovingAverageFilter & operator=(const DoubleMovingAverageFilter &rhs)
bool init(UINT filterSize, UINT numDimensions)
virtual bool saveModelToFile(std::string filename) const
virtual bool resize(const unsigned int size)
Float filter(const Float x)
UINT filterSize
The size of the filter.
unsigned int getSize() const
DoubleMovingAverageFilter(UINT filterSize=5, UINT numDimensions=1)
Float filter(const Float x)
std::string getPreProcessingType() const
bool copyBaseVariables(const PreProcessing *preProcessingModule)
virtual bool loadModelFromFile(std::string filename)
MovingAverageFilter filter1
The first moving average filter.
virtual bool deepCopyFrom(const PreProcessing *preProcessing)
The class implements a Float moving average filter.
virtual bool process(const VectorFloat &inputVector)