(1) Overview


There have been many attempts to define a Discrete Hankel Transform (DHT) in the literature, however prior work has focused on proposing methods to approximate the calculation of the continuous Hankel integral, for example as given in [1, 2]. This stands in stark contrast to the approach taken with the Fourier transform where the Discrete Fourier Transform (DFT) is a transform in its own right, with its own mathematical theory of the manipulated quantities. An additional feature of a carefully derived DFT is that it can be used to approximate the continuous Fourier transform, with relevant sampling and interpolation theories that can be used. Recently, a DHT was proposed as a complete and orthogonal transform that possesses its own mathematical theory, including the standard set of shift, modulation, multiplication and convolution rules [3]. In addition, this DHT can be used to approximate the continuous Hankel transform in the same manner that the Discrete Fourier transform is known to be able to approximate the continuous Fourier transform.

Overview of the Discrete Hankel Transform

The Continuous Hankel Transform

The forward Hankel transform of order n transforms a function f(r) in the spatial domain to a function F(ρ) in the spatial frequency domain and is given by [4, p. 5.6]

n{f(r)}=Fn(ρ)=0f(r) rJn(ρr) dr

where Jn (z) is the nth order Bessel function of the first kind. The inverse transform is given by

n1{Fn(ρ)}=f(r)=0ρFn(ρ)Jn(ρr) dρ

More on the continuous transform can be found in [4].

Discrete Hankel Transform

The nth order discrete Hankel transform (DHT) proposed in [3] is defined as the transformation of the discrete vector f to vector F given by


This discrete transform consists of taking an N – 1 vector f and a (N – 1) × (N – 1) square matrix of Hankel order n, YnN, to perform the matrix-vector multiplication and obtain the N – 1 DHT vector F. If the DHT as defined in (3) is used to approximate the CHT, then the vector f represents the sampled function to be transformed and the vector F represents the discrete function in the transformed (Hankel) domain. The YnN matrix in equation (3) is defined as having the m, kth entry given by

Ym,knN=2jnNJn+12(jnk)Jn(jnmjnkjnN)  1m,kN1   

where jnk is the kth zero of the Bessel function of the first kind of order n[3]. Properties of the DHT as defined in equation (3) are shown in [3].

Since the core of the tested discrete transform is the transformation matrix YnN, various properties have to be maintained. One of these properties is that the matrix YnN possesses orthogonality properties, where YnNYnN = I. In order to preserve the requisite properties of YnN and therefore of the DHT itself, the first Bessel zero used in computing the entries of the YnN matrix is the first non-zero value of the Bessel zero of order n. If the YnN matrix is not assembled following this rule, the matrix loses its orthogonality property and thus performing the discrete transform leads to improper results. If the DHT is used to approximate a CHT, then this restriction also applies to the discretization of the continuous function, as shall be discussed further below.

The inverse discrete Hankel transform f of the vector F is then given by


The discrete forward and inverse Hankel transforms as given in equations (3) and (5) have been shown to possess the standard set of shift, modulation, multiplication and convolution rules. In addition, this DHT can be used to approximate the continuous Hankel transform in the same manner that the Discrete Fourier transform is known to be able to approximate the continuous Fourier transform at certain discrete points.

Discrete Hankel Transform to approximate the Continuous Hankel Transform

Given a continuous function f(r) evaluated at the discrete points rnk in the space domain (1 ≤ kN – 1), its nth order Hankel-transform function F(ρ) evaluated at the discrete points ρnm (1 ≤ mN – 1), can be approximately given by [3]

F[m]=αk=1N1Ym,knNf[k]       F=αYnNf

where α is a scaling factor to be discussed below, and F[m] = F(ρnm), f[k] = f(rnk).

Conversely, given a continuous function F(ρ) evaluated at the discrete points ρnm in the frequency domain (1 ≤ mN – 1), its nth order inverse Hankel transform function f(r) evaluated at the discrete points rnk (1 ≤ kN – 1), can be approximately given by

f[k]=1αm=1N1Ym,knNF[m]       f=1αYnNF

For both the forward and inverse transforms, α is a scaling factor which depends on the function properties and shall be discussed further below. The choice of discretization points rnk and ρnm is also discussed below. The full theory of the discrete Hankel transform is given in [3].

Discretization Points

In order to properly use the discrete transform to approximate the continuous transform, a function has to be discretized at specific sampling points. For a finite spatial range [0, R] and a Hankel transform of order n, these sampling points are given in the space domain as

rnk=jnkjnNR    for 1kN1

For the finite frequency domain range [0, Wρ] and a Hankel transform of order n, the sampling points are given by

ρnm=jnmjnNWρ    for 1mN1

It is important to note that as in the case of the computation of the transformation matrix YnN, the first Bessel zero jn1 used in computing the discretization points is the first non-zero value.

The relationship Wρ=jnNR, derived in [3], holds between the ranges in space and frequency. Choosing N determines the dimension (size) of the DHT and determines jnN. The determination of jnN (via choosing N) determines the range in one domain once the range in the other domain is chosen. In fact, any two of R, Wρ, jnN can be chosen but the third must follow from WρR = jnN. A similar relationship applies when using the Discrete Fourier Transform, any two of the range in each domain and the size of the DFT can be chosen independently.

Scaling Factor

The scaling factor α necessary for using the DHT to approximate the CHT depends on whether the function is space-limited or band-limited. Since it might be hard to determine if a function is space or band limited, the concept of effective limit is introduced. Therefore, a function defined as being “effectively limited in space by R” means that if r > R, then as r → ∞, f(r) → 0. In other words, the function can be made as close to zero as desired by selecting an R that is large enough. The same idea can be applied to the spatial frequency domain, where the effective domain would be denoted by Wρ. The conditions and corresponding scaling factors are listed in Table 1.

Table 1

Scaling factor under various conditions.

Condition Scaling Factor

1 Space-limited function α=R2jnN
2 Frequency-limited function α=jnNWρ2

The detailed derivation of these scaling factors was shown in [3]. It can be observed that the scaling factors for the space-limited or frequency limited cases can be derived from each other via WρR = JnN.

Implementation and architecture

The software is based on the MATLAB programming language. The implementation of the discrete Hankel transform is decomposed into distinct functions. These functions consist of the various steps that have to be performed in order to properly execute the transform. These steps are as follows:

  1. Calculations of N Bessel zeros of the Bessel function of order n
  2. Generation of N sample points (if using the DHT to approximate the continuous transform)
  3. Discretization of the function (if needed)
  4. Creation of the YnN transformation matrix
  5. Performing the matrix-function multiplication

The steps are the same regardless of if the function is in the space or frequency domain and are summarized in Figure 1.

Figure 1 

Steps for evaluation of DHT.

Furthermore, the YnN transformation matrix is used for both the forward and inverse transform. Steps 2–3 only need to be performed if the function (vector) to be transformed is not already given as a set of discrete points. In the case of a continuous function in either the space or frequency domain, it is important to use the sampling points as proposed in equations (8), (9) and then to discretize the continuous function by evaluating at these points. Failing to do so results in the function not being properly transformed since there is a necessary relationship between the sampling points and the transformation matrix YnN. In order to perform the steps listed above, several Matlab functions have been developed. These functions are listed in Table 2.

Table 2

Set of available functions.

Function Name Calling Sequence Description

besselzero besselzero(n,k,kind) Calculation of k Bessel zeros of the nth order Bessel function of kind – developed in [5]
freqSampler freqSampler(R,zeros) Creation of sample points in the frequency domain (eq. (9))
spaceSampler spaceSampler(R,zeros) Creation of sample points in the space domain (eq. (8))
YmatrixAssembly YmatrixAssembly(n,N,zeros) Creation of YnN matrix (eq. (4)) from the zeros

Additionally, the matlab script GuidetoDHT.m is included to illustrate the execution of the necessary computational steps.

Quality control

The software was tested by using the DHT to approximate the computation of both the continuous Hankel forward and inverse transforms and comparing the results with known (continuous) forward and inverse Hankel transform pairs. Different transform orders n were evaluated.

For the purpose of testing the accuracy of the DHT and IDHT, the dynamic error was used, defined as [6]


This error function compares the difference between the exact function values f(v) (evaluated from the continuous function) and the function values estimated via the discrete transform, f*(v), scaled with the maximum value of the discretely estimated samples. Equation (10) can be used to evaluate the computation of either forward or inverse Hankel transform via the DHT/IDHT and compared with known continuous Hankel relationships. The dynamic error uses the ratio of the absolute error to the maximum amplitude of the function on a log scale. Therefore, negative decibel errors imply an accurate discrete estimation of the true transform value. The transform was also tested for accuracy on itself. This is performed by consecutive forward and then inverse transformation in order to verify that the transforms themselves do not add errors. For this evaluation, the average absolute error 1Ni=1N|fifi*| was used.

The methodology of the testing is given in further detail in [7] and also in the theory paper, [3].

(2) Availability

Operating system

Windows XP and higher.

Programming language


Additional system requirements

If using Matlab 7, minimum system requirements are 512MB of RAM (1024 MB recommended) and 460MB of hard disk space. System requirements for Matlab R2014 require 1024 MB (At least 2048 MB recommended) or RAM and 1 GB for MATLAB only, 3–4 GB for a typical installation. This code should run on older versions of Matlab although it was tested using Matlab R2014.


Matlab software by mathworks.

List of contributors

Ugo Chouinard, Natalie Baddour, Greg von Winckel

Software location

Archive (e.g. institutional repository, general repository) (required)

Name: Figshare

Persistent identifier: http://dx.doi.org/10.6084/m9.figshare.1453205

Licence: BSD

Publisher: Natalie Baddour

Date published: 18/06/15

Code repository (e.g. SourceForge, GitHub etc.) (required)

Name: GitHub

Persistent identifier: https://github.com/uchouinard/DiscreteHankelTransform

Licence: BSD

Publisher: Natalie Baddour

Date published: 07/12/16



(3) Reuse potential

The Discrete Hankel Transform is applicable to many areas of scientific computation and potential reuse could be very high. Further details on applications can be found in [3].