FreqShift.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 "FreqShift.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027
00028 namespace Hidden
00029 {
00030 static const char * metadata[] = {
00031 "key", "FreqShift",
00032
00033
00034 0
00035 };
00036 static FactoryRegistrator<ProcessingFactory, FreqShift> reg = metadata;
00037 }
00038
00039
00040 bool FreqShift::Do(const Spectrum& in, Spectrum& out)
00041 {
00042
00043 if ( !mConfig.GetPreserveOuts() )
00044 {
00045 out = in;
00046 }
00047
00048
00049 DataArray& iMagArray = in.GetMagBuffer();
00050 DataArray& iPhaseArray = in.GetPhaseBuffer();
00051 TSize spectrumSize = in.GetSize();
00052
00053 mOMagArray.Resize(spectrumSize);
00054 mOMagArray.SetSize(spectrumSize);
00055 mOPhaseArray.Resize(spectrumSize);
00056 mOPhaseArray.SetSize(spectrumSize);
00057
00058
00059 TData spectralResolution = spectrumSize/in.GetSpectralRange();
00060 int amount = Round(mShiftAmount.GetLastValue() * spectralResolution);
00061
00062 for(int i = 0; i<spectrumSize; i++)
00063 {
00064 if(i<amount)
00065 {
00066 mOMagArray[i] = 0;
00067 mOPhaseArray[i] = 0;
00068 }
00069 else if(i>spectrumSize+amount)
00070 {
00071 mOMagArray[i] = 0;
00072 mOPhaseArray[i] = 0;
00073 }
00074 else
00075 {
00076 mOMagArray[i] = iMagArray[i-amount];
00077 mOPhaseArray[i] = iPhaseArray[i-amount];
00078 }
00079 }
00080 out.SetMagBuffer(mOMagArray);
00081 out.SetPhaseBuffer(mOPhaseArray);
00082 return true;
00083 }
00084
00085
00086 }
00087