SpectralAverage.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "SpectralAverage.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027 namespace Hidden
00028 {
00029 static const char * metadata[] = {
00030 "key", "SpectralAverage",
00031
00032
00033 0
00034 };
00035 static FactoryRegistrator<ProcessingFactory, SpectralAverage> reg = metadata;
00036 }
00037
00038 bool SpectralAverage::Do(const Spectrum& in, Spectrum& out)
00039 {
00040 if (!mConfig.GetPreserveOuts())
00041 {
00042 out = in;
00043 }
00044 DataArray& inMag = in.GetMagBuffer();
00045
00046 int spectrumSize = in.GetSize();
00047
00048 int nPointsToAverage = int(mPoints.GetLastValue());
00049 int nPointsToAverageHalf = int(mPoints.GetLastValue()* 0.5);
00050 TData oneOverNPointsToAverage = 1./nPointsToAverage;
00051
00052 mMag.Resize(spectrumSize);
00053 mMag.SetSize(spectrumSize);
00054 int i, z;
00055 TData average;
00056 for(i = nPointsToAverageHalf; i<spectrumSize-nPointsToAverageHalf; i++)
00057 {
00058 for(z=i-nPointsToAverageHalf; z<i+nPointsToAverageHalf; z++)
00059 {
00060 average+=inMag[z];
00061 }
00062 mMag[i] = average*oneOverNPointsToAverage;
00063 average = 0;
00064 }
00065 out.SetMagBuffer(mMag);
00066 return true;
00067 }
00068
00069
00070 }
00071