# scipy.fft.fht¶

scipy.fft.fht(a, dln, mu, offset=0.0, bias=0.0)[source]

Compute the fast Hankel transform.

Computes the discrete Hankel transform of a logarithmically spaced periodic sequence using the FFTLog algorithm [1], [2].

Parameters
aarray_like (…, n)

Real periodic input array, uniformly logarithmically spaced. For multidimensional input, the transform is performed over the last axis.

dlnfloat

Uniform logarithmic spacing of the input array.

mufloat

Order of the Hankel transform, any positive or negative real number.

offsetfloat, optional

Offset of the uniform logarithmic spacing of the output array.

biasfloat, optional

Exponent of power law bias, any positive or negative real number.

Returns
Aarray_like (…, n)

The transformed output array, which is real, periodic, uniformly logarithmically spaced, and of the same shape as the input array.

ifht

The inverse of fht.

fhtoffset

Return an optimal offset for fht.

Notes

This function computes a discrete version of the Hankel transform

$A(k) = \int_{0}^{\infty} \! a(r) \, J_\mu(kr) \, k \, dr \;,$

where $$J_\mu$$ is the Bessel function of order $$\mu$$. The index $$\mu$$ may be any real number, positive or negative.

The input array a is a periodic sequence of length $$n$$, uniformly logarithmically spaced with spacing dln,

$a_j = a(r_j) \;, \quad r_j = r_c \exp[(j-j_c) \, \mathtt{dln}]$

centred about the point $$r_c$$. Note that the central index $$j_c = (n+1)/2$$ is half-integral if $$n$$ is even, so that $$r_c$$ falls between two input elements. Similarly, the output array A is a periodic sequence of length $$n$$, also uniformly logarithmically spaced with spacing dln

$A_j = A(k_j) \;, \quad k_j = k_c \exp[(j-j_c) \, \mathtt{dln}]$

centred about the point $$k_c$$.

The centre points $$r_c$$ and $$k_c$$ of the periodic intervals may be chosen arbitrarily, but it would be usual to choose the product $$k_c r_c = k_j r_{n-1-j} = k_{n-1-j} r_j$$ to be unity. This can be changed using the offset parameter, which controls the logarithmic offset $$\log(k_c) = \mathtt{offset} - \log(r_c)$$ of the output array. Choosing an optimal value for offset may reduce ringing of the discrete Hankel transform.

If the bias parameter is nonzero, this function computes a discrete version of the biased Hankel transform

$A(k) = \int_{0}^{\infty} \! a_q(r) \, (kr)^q \, J_\mu(kr) \, k \, dr$

where $$q$$ is the value of bias, and a power law bias $$a_q(r) = a(r) \, (kr)^{-q}$$ is applied to the input sequence. Biasing the transform can help approximate the continuous transform of $$a(r)$$ if there is a value $$q$$ such that $$a_q(r)$$ is close to a periodic sequence, in which case the resulting $$A(k)$$ will be close to the continuous transform.

References

1

Talman J. D., 1978, J. Comp. Phys., 29, 35

2

Hamilton A. J. S., 2000, MNRAS, 312, 257 (astro-ph/9905191)