FourierTransformInverse¶
- class odl.trafos.fourier.FourierTransformInverse(*args, **kwargs)[source]¶
Bases:
FourierTransformBaseInverse of the discretized Fourier transform between L^p spaces.
This operator is the exact inverse of the
FourierTransform, and not a discretization of the Fourier integral with "+" sign in the complex exponent. For the latter, use thesignparameter of the forward transform.- Attributes:
adjointAdjoint transform, equal to the inverse.
axesAxes along the FT is calculated by this operator.
domainSet of objects on which this operator can be evaluated.
halfcomplexReturn
Trueif the last transform axis is halved.implBackend for the FFT implementation.
inverseInverse of the inverse, the forward FT.
is_functionalTrueif this operator's range is aField.is_linearTrueif this operator is linear.rangeSet in which the result of an evaluation of this operator lies.
shiftsReturn the boolean list indicating shifting per axis.
signSign of the complex exponent in the transform.
Methods
__call__(x[, out])Return
self(x[, out, **kwargs]).Delete the FFTW plan of this transform.
Set the temporaries to
None.create_temporaries([r, f])Allocate and store reusable temporaries.
derivative(point)Return the operator derivative at
point.init_fftw_plan([planning_effort])Initialize the FFTW plan for this transform for later use.
norm([estimate])Return the operator norm of this operator.
- __init__(range, domain=None, impl=None, **kwargs)[source]¶
- Parameters:
- range
DiscretizedSpace Range of the inverse Fourier transform. If the
DiscretizedSpace.exponentofdomainandrangeare equal to 2.0, this operator has an adjoint which is equal to its inverse.- domain
DiscretizedSpace, optional Domain of the inverse Fourier transform. If not given, the domain is determined from
rangeand the other parameters. The exponent is chosen to be the conjugatep / (p - 1), which reads as 'inf' for p=1 and 1 for p='inf'.- impl{'numpy', 'pyfftw'}, optional
Backend for the FFT implementation. The 'pyfftw' backend is faster but requires the
pyfftwpackage.Noneselects the fastest available backend.- axesint or sequence of ints, optional
Dimensions along which to take the transform. Default: all axes
- sign{'-', '+'}, optional
Sign of the complex exponent. Default:
'+'- halfcomplexbool, optional
If
True, calculate only the negative frequency part along the last axis for real input. IfFalse, calculate the full complex FFT. For complexdomain, it has no effect. Default:True- shiftbool or sequence of bools, optional
If
True, the reciprocal grid is shifted by half a stride in the negative direction. With a boolean sequence, this option is applied separately to each axis. If a sequence is provided, it must have the same length asaxesif supplied. Note that this must be set toTruein the halved axis in half-complex transforms. Default:True
- range
- Other Parameters:
- tmp_r
DiscretizedSpaceElementornumpy.ndarray, optional Temporary for calculations in the real space (range of this transform). It is shared with the inverse.
Variants using this: C2R, R2C (forward), R2HC (forward)
- tmp_f
DiscretizedSpaceElementornumpy.ndarray, optional Temporary for calculations in the frequency (reciprocal) space. It is shared with the inverse.
Variants using this: C2R, HC2R, R2C (forward)
- tmp_r
Notes
The transform variants are:
C2C: complex-to-complex. The default variant, one-to-one and unitary.
C2R: complex-to-real. This variants adjoint and inverse may suffer from information loss since the result is cast to real.
HC2R: halfcomplex-to-real. This variant interprets input as a signal on a half-space of frequencies. It is guaranteed to be one-to-one (invertible).
The
Operator.rangeof this operator always has theComplexNumbersasLinearSpace.field, i.e. if the field ofdomainis theRealNumbers, this operator's adjoint is defined by identifying real and imaginary parts with the components of a real product space element. See the mathematical background documentation for details.