diff options
author | Roland Stigge <stigge@antcom.de> | 2019-02-17 12:55:13 +0100 |
---|---|---|
committer | Roland Stigge <stigge@antcom.de> | 2019-02-17 12:55:13 +0100 |
commit | fef594c82518a8fe4c96794852c1fc849c0ed3b3 (patch) | |
tree | 2efbedc8b126a77d91633ce8b9201dc4a7db764c /autocorrelation.cpp | |
parent | 1a219839034e9b11a4771fb84c90d4a2667365ce (diff) |
Added tunerdemo
Diffstat (limited to 'autocorrelation.cpp')
-rw-r--r-- | autocorrelation.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/autocorrelation.cpp b/autocorrelation.cpp new file mode 100644 index 0000000..5c778c1 --- /dev/null +++ b/autocorrelation.cpp @@ -0,0 +1,29 @@ +#include "autocorrelation.h" + +#include "fft.h" + +struct RIT::AutoCorrelation::Impl { +public: + Impl(int size): mFft(std::make_shared<RIT::FFT>(size)), mIfft(mFft) {} + std::shared_ptr<RIT::FFT> mFft; + RIT::IFFT mIfft; +}; + +RIT::AutoCorrelation::AutoCorrelation(int size): mImpl(std::make_unique<RIT::AutoCorrelation::Impl>(size)) +{ +} + +RIT::AutoCorrelation::~AutoCorrelation() +{ +} + +std::vector<std::complex<double>> RIT::AutoCorrelation::operator()(const std::vector<std::complex<double>> &v) const +{ + auto result = (*mImpl->mFft)(v); + + std::transform(std::begin(result), std::end(result), std::begin(result), + [=](const auto& x){return x * std::conj(x);}); + + return mImpl->mIfft(result); +} + |