Fourier Transform¶
Background¶
Definition and basic properties¶
The Fourier Transform (FT) of a function belonging to the Lebesgue Space
is defined as
(1)¶
(Note that this definition differs from the one in the linked article by the placement of the
factor .) By unique continuation, the bounded FT operator can be
extended to
for
, yielding a mapping
where is the conjugate exponent of
(for
one sets
).
Finite exponents larger than 2 also allow the extension of the operator but require the notion of
Distributions to characterize its range. See [SW1971] for further details.
The inverse of on its range is given by the formula
(2)¶
For , the conjugate exponent is
, and the FT is a unitary
operator on
according to Parseval's Identity
which implies that its adjoint is its inverse, .
Further Properties¶
(3)¶
The first identity implies in particular that for real-valued , it is
, i.e. the FT is
completely known already from the its values in a half-space only. This property is later exploited
to reduce storage.
In dimensions, the FT is defined as
with the usual inner product in
. The identities (3) also hold in this case with obvious
modifications.
Discretized Fourier Transform¶
General case¶
The approach taken in ODL for the discretization of the FT follows immediately from the way Discretizations are defined, but the original inspiration for it came from the book [Pre+2007], Section 13.9 "Computing Fourier Integrals Using the FFT".
Discretization of the Fourier transform operator means evaluating the Fourier integral (1) on a discretized function
(4)¶
with coefficients and functions
. This approach follows from the way , but can be
We consider in particular functions generated from a single
kernel
via
where are sampling points and
scaling factors. Using
the shift and scaling properties in (3) yields
(5)¶
There exist methods for the fast approximation of such sums for a general choice of frequency
samples , e.g. NFFT.
Regular grids¶
For regular grids
(6)¶
the evaluation of the integral can be written in the form which uses trigonometric sums as computed in FFTW or in Numpy:
(7)¶
Hence, the Fourier integral evaluation can be built around established libraries with simple pre- and post-processing steps.
With regular grids, the discretized integral (5) evaluated at
, can be expanded to
To reach the form (7), the factor depending on both indices and
must agree with the corresponding factor in the FFT sum. This is achieved by setting
(8)¶
finally yielding the representation
(9)¶
Choice of
¶
There is a certain degree of freedom in the choice of the most negative frequency .
Usually one wants to center the Fourier space grid around zero since most information is typically
concentrated there. Point-symmetric grids are the standard choice, however sometimes one explicitly
wants to include (for even
) or exclude (for odd
) the zero frequency from the
grid, which is achieved by shifting the frequency
by
. This results in
two possible choices
For the shifted frequency, the pre-processing factor in the sum in (9) can be simplified to
which is favorable for real-valued input since this first operation preserves
this property. For half-complex transforms, shifting is required.
The factor
¶
In (9), the FT of the kernel appears as post-processing factor.
We give the explicit formulas for the two standard discretizations currently used in ODL, which
are nearest neighbor interpolation
and linear interpolation
Their Fourier transforms are given by
Since their arguments lie between
and
,
these functions introduce only a slight taper towards higher frequencies given the fact that the
first zeros lie at
.
Inverse transform¶
According to (2), the inverse of the continuous Fourier transform is given by
the same formula as the forward transform (1), except for a switched sign in the
complex exponential. Hence, this operator can rather be viewed as a variation of the forward FT,
and it is implemented via a sign
parameter in FourierTransform
.
The inverse of the discretized formula (9) is instead gained directly using the identity
(10)¶
By dividing (9) with the factor
before the sum, multiplying with the exponential factor and
summing over
, the coefficients
can be recovered:
Hence, the inversion formula for the discretized FT reads as
(11)¶
which can be calculated in the same manner as the forward FT, basically by switching the roles of pre- and post-processing steps and flipping the sign in the complex exponentials.
Adjoint operator¶
If the FT is defined between the complex Hilbert spaces ,
one can easily show that the operator is unitary, and therefore its adjoint is equal to the
inverse.
However, if the domain is a real space, , one cannot even
speak of a linear operator since the property
cannot be tested for all as required by the right-hand side, since
on the left-hand side,
needs to be real. This issue can be remedied by identifying
the real and imaginary parts in the range with components of a product space element:
where and
are the
sine and cosine transforms, respectively. Those two operators are self-adjoint between real
Hilbert spaces, and thus the adjoint of the above defined transform is given by
If we compare this result to the "naive" approach of taking the real part of the inverse of the complex inverse transform, we get
Hence, by identifying and
, we see that the result is the
same. Therefore, using the naive approach for the adjoint operator is justified by this argument.