MothNik / robust_fourier

Noise- and Outlier-Robust Fourier Transform with Hermite Functions with NumPy and Numba
MIT License
1 stars 0 forks source link

🤯 Make the repository more general in terms of basis functions #21

Closed MothNik closed 3 months ago

MothNik commented 3 months ago

The repository started out with implementing Hermite functions, but actually the original publications derived from

Dobróka M., Szegedi H., and Vass P., Inversion-Based Fourier Transform as a New Tool for Noise Rejection, Fourier Transforms - High-tech Application and Current Trends (2017), DOI: http://dx.doi.org/10.5772/66338

used an a bit unfortunate example signal for the Hermite functions:

image

This pulse looks nice, but also make fitting with the Hermite functions easier because it fades out to zero far away from the boundaries already. Why? The Hermite functions have a bit of a problem of being close to zero in their outermost oscillation. Furthermore, only the highest order $n_{max}$ will have its outermost oscillation reaching that far while all lower orders will be even more compact:

image

It is therefore not possible for a Hermite function basis to cover the $x$-range to fit until they reach fadeout their point (the zero values in the tail could never fit nonzero values). This makes it quite hard to find the optimum scaling factor $\alpha$ because there can be choices that lead to an ill-conditioned system despite the orthonormality of the Hermite functions.

A very recent approach uses Chebyshev polynomials as an orthogonal basis to circumvent this problem, and I think this is the way to go:

Al Marashly O., Dobróka, M., Chebyshev polynomial-based Fourier transformation and its use in low pass filter of gravity data, Acta Geodaetica et Geophysica, Volume 59, pages 159–181, (2024), DOI: https://doi.org/10.1007/s40328-024-00444-z

With such a feature, the name robust_hermite_ft (that was maybe unfortunate in the first place) needs to be changed to something more generic.

MothNik commented 3 months ago

✔️ Checklist of things to do