RandomPhase.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 "RandomPhase.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027 namespace Hidden
00028 {
00029 static const char * metadata[] = {
00030 "key", "RandomPhase",
00031
00032
00033 0
00034 };
00035 static FactoryRegistrator<ProcessingFactory, RandomPhase> reg = metadata;
00036 }
00037
00038
00039 bool RandomPhase::Do(const Spectrum& in, Spectrum& out)
00040 {
00041 srand(time(0));
00042
00043 out = in;
00044
00045 float amount = mAmount.GetLastValue() * 0.01;
00046 float invAmount = 1. - amount;
00047 DataArray& oPhase = out.GetPhaseBuffer();
00048
00049 int spectrumSize = in.GetSize();
00050
00051 int k = TWO_PI / RAND_MAX;
00052 for(int i = 0; i<spectrumSize; i++)
00053 {
00054 oPhase[i] = oPhase[i]*invAmount + rand()* k * amount;
00055 }
00056 return true;
00057 }
00058
00059
00060
00061 }
00062