diff --git a/basicmath.cpp b/basicmath.cpp index 71a9f932362ecf4ab35025e9fe63e210935c01a3..fa68fad6f3ffa37da2678383855fecc407e58bd9 100644 --- a/basicmath.cpp +++ b/basicmath.cpp @@ -100,3 +100,18 @@ fvalue eis::median(std::vector<fvalue> data) else return data[data.size()/2]; } + +std::vector<eis::DataPoint> eis::rescale(const std::vector<eis::DataPoint>& data, size_t outputSize) +{ + std::vector<eis::DataPoint> output(outputSize); + for(size_t i = 0; i < output.size(); ++i) + { + double position = static_cast<double>(i) / (output.size()-1); + double sourcePosF = (data.size()-1)*position; + size_t sourcePos = (data.size()-1)*position; + double frac = sourcePosF - sourcePos; + output[i].im = data[sourcePos].im*(1-frac) + data[sourcePos+1].im*frac; + output[i].omega = data[sourcePos].omega*(1-frac) + data[sourcePos+1].omega*frac; + } + return output; +} diff --git a/eisgenerator/basicmath.h b/eisgenerator/basicmath.h index fa389b40a5edbb8318253715be69efc54292bed2..0cc0d01406884dc95d5be1da2b9caec80f099c83 100644 --- a/eisgenerator/basicmath.h +++ b/eisgenerator/basicmath.h @@ -11,4 +11,5 @@ namespace eis std::complex<fvalue> mean(const std::vector<eis::DataPoint>& data); fvalue median(std::vector<fvalue> data); std::complex<fvalue> median(const std::vector<eis::DataPoint>& data); + std::vector<eis::DataPoint> rescale(const std::vector<eis::DataPoint>& data, size_t outputSize); } diff --git a/eisgenerator/normalize.h b/eisgenerator/normalize.h index 1d9688825c57970c5b9327ccfe0c899581670815..21409e83a943c369d133b5b1d22f6a71b281f6f7 100644 --- a/eisgenerator/normalize.h +++ b/eisgenerator/normalize.h @@ -11,6 +11,5 @@ namespace eis void normalize(std::vector<eis::DataPoint>& data); std::vector<eis::DataPoint> reduceRegion(const std::vector<eis::DataPoint>& data, fvalue gradThreshFactor = 0.01); void eraseSingularites(std::vector<eis::DataPoint>& data); -std::vector<eis::DataPoint> rescale(const std::vector<eis::DataPoint>& data, size_t outputSize); } diff --git a/main.cpp b/main.cpp index 062131c1d1f58f43bab88a8b28a7e4d67612c80e..b69c1b89f56da3dc7ff508aa9c66722686897de2 100644 --- a/main.cpp +++ b/main.cpp @@ -60,7 +60,7 @@ static void runSweep(const std::string& modelString, eis::Range omega, bool norm eis::Log(eis::Log::INFO)<<"results:"; } - eis::Log(eis::Log::INFO)<<(hertz ? "freqency" : "omega")<<",real,im"; + std::cout<<(hertz ? "freqency" : "omega")<<",real,im\n"; for(const eis::DataPoint& res : results) std::cout<<res.omega/(2*M_PI)<<','<<res.im.real()<<','<<(invert ? 0-res.im.imag() : res.im.imag())<<'\n'; diff --git a/normalize.cpp b/normalize.cpp index 7d7c3e86f01b938a19878f936768163ad0d87d45..a7cb4dfbbd4bcba608e26d314d695bf59d3c7f3a 100644 --- a/normalize.cpp +++ b/normalize.cpp @@ -95,18 +95,3 @@ std::vector<eis::DataPoint> eis::reduceRegion(const std::vector<eis::DataPoint>& return data; } - -std::vector<eis::DataPoint> eis::rescale(const std::vector<eis::DataPoint>& data, size_t outputSize) -{ - std::vector<eis::DataPoint> output(outputSize); - for(size_t i = 0; i < output.size(); ++i) - { - double position = static_cast<double>(i) / (output.size()-1); - double sourcePosF = (data.size()-1)*position; - size_t sourcePos = (data.size()-1)*position; - double frac = sourcePosF - sourcePos; - output[i].im = data[sourcePos].im*(1-frac) + data[sourcePos+1].im*frac; - output[i].omega = data[sourcePos].omega*(1-frac) + data[sourcePos+1].omega*frac; - } - return output; -} diff --git a/test.cpp b/test.cpp index 9940be5458ad7abb28f6c9b8a01728e1ba3a7cf4..129418618d3129b0b1880ca212507e9378e0629a 100644 --- a/test.cpp +++ b/test.cpp @@ -5,6 +5,7 @@ #include "model.h" #include "log.h" #include "normalize.h" +#include "basicmath.h" void printDataVect(const std::vector<eis::DataPoint> in) {