Hi, does anyone know about any packages that may be able to compute nonuniform fast Hankel transform of continuous functions? I saw this thread mentioning a few options for Fourier transform, which don’t seem to have what I need, except maybe OscillatoryIntegrals.jl
have this option? However from the limited docs I cannot seem to find if this can be done. Can @dlfivefifty maybe clarify a little? Thanks a lot.
Sorry OscillatoryIntegrals.jl can’t do this. I’ve forwarded your question to Alex Townsend who has a paper on fast Hankel Transform
Hi @jinml, I am not aware of any Julia package to compute the Hankel transform. Of course, you have to discretize the continuous transform to either fully discrete or semi-discrete transforms. What is the exact transform that you would like to compute?
As Sheehan mentioned, I have a paper on a fast algorithm for computing various types of fully discrete Hankel transform. You can find that here: [1501.01652] A fast analysis-based discrete Hankel transform using asymptotic expansions.
The direct summation is a “slow” algorithm (see Section 2.1) that can be implemented in less than an hour, which may be good enough for your purposes. It really depends on what you are after, and your application.
Hi @Alex_Townsend , thank you for sharing your paper. It looks very interesting, I’ll look into it. I’ll probably first try the more straightforward method as you suggested.
My goal is to compute the besselj0-transform of a radially symmetric smooth function (windowed Helmholtz kernel) over a 2D ring area, which is part of the 2D Fourier transform over the whole domain (the center is singular and treated separately. There is probably a better way but anyways … ). The radial frequencies come from lengths of cartesian frequency vectors thus they are nonuniform (and very many). The accuracy should be relatively high as this kernel is used in subsequent computations.