30 #define GRT_DLL_EXPORTS 36 const std::string DoubleMovingAverageFilter::id =
"DoubleMovingAverageFilter";
44 init(filterSize,numDimensions);
70 if( preProcessing == NULL )
return false;
85 errorLog <<
"deepCopyFrom(const PreProcessing *preProcessing) - PreProcessing Types Do Not Match!" << std::endl;
94 errorLog <<
"process(const VectorFloat &inputVector) - The filter has not been initialized!" << std::endl;
98 if( inputVector.size() != numInputDimensions ){
99 errorLog <<
"process(const VectorFloat &inputVector) - The size of the inputVector (" << inputVector.
getSize() <<
") does not match that of the filter (" << numInputDimensions <<
")!" << std::endl;
103 processedData =
filter( inputVector );
105 if( processedData.size() == numOutputDimensions )
return true;
116 if( !file.is_open() ){
117 errorLog <<
"save(std::fstream &file) - The file is not open!" << std::endl;
121 file <<
"GRT_DOUBLE_MOVING_AVERAGE_FILTER_FILE_V1.0" << std::endl;
123 file <<
"NumInputDimensions: " << numInputDimensions << std::endl;
124 file <<
"NumOutputDimensions: " << numOutputDimensions << std::endl;
125 file <<
"FilterSize: " <<
filterSize << std::endl;
132 if( !file.is_open() ){
133 errorLog <<
"load(std::fstream &file) - The file is not open!" << std::endl;
142 if( word !=
"GRT_DOUBLE_MOVING_AVERAGE_FILTER_FILE_V1.0" ){
143 errorLog <<
"load(std::fstream &file) - Invalid file format!" << std::endl;
149 if( word !=
"NumInputDimensions:" ){
150 errorLog <<
"load(std::fstream &file) - Failed to read NumInputDimensions header!" << std::endl;
153 file >> numInputDimensions;
157 if( word !=
"NumOutputDimensions:" ){
158 errorLog <<
"load(std::fstream &file) - Failed to read NumOutputDimensions header!" << std::endl;
161 file >> numOutputDimensions;
165 if( word !=
"FilterSize:" ){
166 errorLog <<
"load(std::fstream &file) - Failed to read FilterSize header!" << std::endl;
172 return init(filterSize,numInputDimensions);
180 if( filterSize == 0 ){
181 errorLog <<
"init(UINT filterSize,UINT numDimensions) - Filter size can not be zero!" << std::endl;
185 if( numDimensions == 0 ){
186 errorLog <<
"init(UINT filterSize,UINT numDimensions) - The number of dimensions must be greater than zero!" << std::endl;
192 numInputDimensions = numDimensions;
193 numOutputDimensions = numDimensions;
194 processedData.clear();
195 processedData.
resize(numDimensions,0 );
198 errorLog <<
"init(UINT filterSize,UINT numDimensions) - Failed to initialize filter 1!" << std::endl;
203 errorLog <<
"init(UINT filterSize,UINT numDimensions) - Failed to initialize filter 1!" << std::endl;
217 errorLog <<
"filter(const Float x) - The filter has not been initialized!" << std::endl;
223 if( y.
getSize() == 0 )
return 0;
231 errorLog <<
"filter(const VectorFloat &x) - The filter has not been initialized!" << std::endl;
235 if( x.
getSize() != numInputDimensions ){
236 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;
243 if( y.size() == 0 )
return y;
248 if( yy.size() == 0 )
return y;
252 for(UINT i=0; i<N; i++){
253 yy[i] = y[i] + (y[i] - yy[i]);
254 processedData[i] = yy[i];
std::string getId() const
virtual ~DoubleMovingAverageFilter()
MovingAverageFilter filter2
The second moving average filter.
DoubleMovingAverageFilter & operator=(const DoubleMovingAverageFilter &rhs)
virtual bool resize(const unsigned int size)
DoubleMovingAverageFilter(const UINT filterSize=5, const UINT numDimensions=1)
bool init(const UINT filterSize, const UINT numDimensions)
Float filter(const Float x)
UINT filterSize
The size of the filter.
virtual bool save(std::fstream &file) const
Float filter(const Float x)
virtual bool load(std::fstream &file)
VectorFloat getFilteredData() const
bool copyBaseVariables(const PreProcessing *preProcessingModule)
static std::string getId()
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)