diff options
author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2025-04-09 16:52:26 -0300 |
---|---|---|
committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2025-04-09 16:52:26 -0300 |
commit | fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5 (patch) | |
tree | 75465d582fcbb971e5798558d8145f91e95a3cb0 /fourier.cpp | |
parent | a87589bae5cd5f8b530a857f51b141b7b781d54d (diff) | |
download | code-fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5.tar.gz code-fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5.tar.bz2 code-fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5.zip |
Diffstat (limited to 'fourier.cpp')
-rw-r--r-- | fourier.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/fourier.cpp b/fourier.cpp index 07f8fdc..bc4b633 100644 --- a/fourier.cpp +++ b/fourier.cpp @@ -64,6 +64,25 @@ std::vector<Complex> FourierTransform::fourier() { return ĉ; } +std::vector<Real> FourierTransform::convolve(const std::vector<Real>& Γh, const std::vector<Real>& R) { + a[0] = 0; + for (unsigned i = 1; i < n; i++) { + a[i] = R[i]; + a[2 * n - i] = -R[i]; + } + fftw_execute(plan_r2c); + for (unsigned i = 1; i < n + 1; i++) { + â[i] *= Γh[i] * (Δτ * M_PI); + } + fftw_execute(plan_c2r); + std::vector<Real> dC(n); + for (unsigned i = 0; i < n; i++) { + dC[i] = a[i] * (Δω / (2 * M_PI)); + } + + return dC; +} + std::vector<Real> FourierTransform::inverse(const std::vector<Complex>& ĉ) { for (unsigned i = 0; i < n + 1; i++) { â[i] = ĉ[i]; |