summaryrefslogtreecommitdiff
path: root/log-fourier.cpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-14 22:52:14 -0300
committerJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-14 22:52:14 -0300
commit4c045af4a3d3a12b1e4e73bc9ab1789ceb7b4d7e (patch)
tree98ecbd90a29fb8a56270dcc4b5f959681b297d77 /log-fourier.cpp
parent800a3a73161af1ceb58feefc6e6808cbcfaf0c9a (diff)
downloadcode-4c045af4a3d3a12b1e4e73bc9ab1789ceb7b4d7e.tar.gz
code-4c045af4a3d3a12b1e4e73bc9ab1789ceb7b4d7e.tar.bz2
code-4c045af4a3d3a12b1e4e73bc9ab1789ceb7b4d7e.zip
Reintroduced smoothing
Diffstat (limited to 'log-fourier.cpp')
-rw-r--r--log-fourier.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/log-fourier.cpp b/log-fourier.cpp
index cb57229..1fa57c3 100644
--- a/log-fourier.cpp
+++ b/log-fourier.cpp
@@ -254,3 +254,25 @@ Real C0(const LogarithmicFourierTransform& fft, const std::vector<Complex>& Ĉ)
return C * pow(fft.shift, 2) / M_PI;
}
+void smooth(std::vector<Real>& C, Real ε) {
+ unsigned N = C.size();
+ bool trigger0 = false;
+ bool trigger1 = false;
+ for (unsigned i = 0; i < N; i++) {
+ if (C[i] < ε || trigger0) {
+ C[i] = 0;
+ trigger0 = true;
+ }
+ if (C[N-1-i] > 1 - ε || trigger1) {
+ C[N-1-i] = 1;
+ trigger1 = true;
+ }
+ }
+
+ Real Cmax = 0;
+ for (unsigned i = 0; i < N; i++) {
+ if (C[N-1-i] > Cmax) Cmax = C[N-1-i];
+ C[N-1-i] = Cmax;
+ }
+}
+