![]() |
NFFT 3.5.3alpha
|
Direct and fast computation of the nonequispaced discrete Fourier transform. More...
Data Structures | |
| struct | nfft_plan |
Macros | |
| #define | PRE_PHI_HUT (1U<<0) |
| #define | FG_PSI (1U<<1) |
| #define | PRE_LIN_PSI (1U<<2) |
| #define | PRE_FG_PSI (1U<<3) |
| #define | PRE_PSI (1U<<4) |
| #define | PRE_FULL_PSI (1U<<5) |
| #define | MALLOC_X (1U<<6) |
| #define | MALLOC_F_HAT (1U<<7) |
| #define | MALLOC_F (1U<<8) |
| #define | FFT_OUT_OF_PLACE (1U<<9) |
| #define | FFTW_INIT (1U<<10) |
| #define | PRE_ONE_PSI (PRE_LIN_PSI| PRE_FG_PSI| PRE_PSI| PRE_FULL_PSI) |
Functions | |
| void | nfft_trafo (nfft_plan *ths) |
| void | nfft_adjoint (nfft_plan *ths) |
| void | nfft_init_1d (nfft_plan *ths, int N1, int M) |
| void | nfft_init_2d (nfft_plan *ths, int N1, int N2, int M) |
| void | nfft_init_3d (nfft_plan *ths, int N1, int N2, int N3, int M) |
| void | nfft_init (nfft_plan *ths, int d, int *N, int M) |
| void | nfft_precompute_one_psi (nfft_plan *ths) |
| void | nfft_precompute_full_psi (nfft_plan *ths) |
| void | nfft_precompute_psi (nfft_plan *ths) |
| void | nfft_precompute_lin_psi (nfft_plan *ths) |
| const char * | nfft_check (nfft_plan *ths) |
| void | nfft_finalize (nfft_plan *ths) |
Direct and fast computation of the nonequispaced discrete Fourier transform.
This module implements the nonequispaced fast Fourier transforms. In the following, we abbreviate the term "nonequispaced fast Fourier transform" by NFFT.
We introduce our notation and nomenclature for discrete Fourier transforms. Let the torus
![\[ \mathbb{T}^d
:= \left\{ \mathbf{x}=\left(x_t\right)_{t=0,\dots,d-1}\in\mathbb{R}^{d}:
\; - \frac{1}{2} \le x_t < \frac{1}{2},\; t=0,\dots,d-1 \right\}
\]](form_55.png)
of dimension 



![\[ I_{\mathbf{N}} := \left\{ \mathbf{k}=\left(k_t\right)_{t=0,\dots,d-1}\in
\mathbb{Z}^d: - \frac{N_t}{2} \le k_t < \frac{N_t}{2} ,\;t=0,\dots,d-1
\right\}.
\]](form_60.png)
Our concern is the computation of the nonequispaced discrete Fourier transform (NDFT)
![\[f_j = \sum_{\mathbf{k}\in I_{\mathbf{N}}}
\hat{f}_{\mathbf{k}} {\rm e}^{-2\pi{\rm i} \mathbf{k}\mathbf{x}_j}, \qquad
j=0,\dots,M-1.
\]](form_61.png)
The corresponding adjoint NDFT is the computation of
![\[ \hat f_{\mathbf{k}}=\sum_{j=0}^{M-1} f_j {\rm e}^{+2\pi{\rm i}
\mathbf{k}\mathbf{x}_j}, \qquad \mathbf{k}\in I_{\mathbf{N}}.
\]](form_62.png)
Direct implementations are given by nfft_direct_trafo and nfft_direct_adjoint taking 

| #define PRE_PHI_HUT (1U<<0) |
If this flag is set, the deconvolution step (the multiplication with the diagonal matrix 
Definition at line 181 of file nfft3.h.
Referenced by construct(), construct(), fastsum_init_guru_source_nodes(), fastsum_init_guru_target_nodes(), main(), nfsft_init_advanced(), nfsoft_init_advanced(), nnfft_finalize(), nnfft_init(), nnfft_init_guru(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and taylor_time_accuracy().
| #define FG_PSI (1U<<1) |
If this flag is set, the convolution step (the multiplication with the sparse matrix 
Definition at line 182 of file nfft3.h.
Referenced by nfsoft_precompute().
| #define PRE_LIN_PSI (1U<<2) |
If this flag is set, the convolution step (the multiplication with the sparse matrix 


Definition at line 183 of file nfft3.h.
Referenced by fastsum_precompute_source_nodes(), fastsum_precompute_target_nodes(), nfsoft_init_guru_advanced(), nnfft_finalize(), nnfft_init_guru(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().
| #define PRE_FG_PSI (1U<<3) |
If this flag is set, the convolution step (the multiplication with the sparse matrix 

Definition at line 184 of file nfft3.h.
Referenced by taylor_time_accuracy().
| #define PRE_PSI (1U<<4) |
If this flag is set, the convolution step (the multiplication with the sparse matrix 

Definition at line 185 of file nfft3.h.
Referenced by construct(), construct(), construct(), construct(), fastsum_init_guru_source_nodes(), fastsum_init_guru_target_nodes(), fastsum_precompute_source_nodes(), fastsum_precompute_target_nodes(), main(), nfsft_init_advanced(), nfsoft_init_advanced(), nfsoft_precompute(), nnfft_finalize(), nnfft_init(), nnfft_init_guru(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().
| #define PRE_FULL_PSI (1U<<5) |
If this flag is set, the convolution step (the multiplication with the sparse matrix 

Definition at line 186 of file nfft3.h.
Referenced by fastsum_precompute_source_nodes(), fastsum_precompute_target_nodes(), nnfft_finalize(), nnfft_init_guru(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().
| #define MALLOC_X (1U<<6) |
If this flag is set, (de)allocation of the node vector is done.
Definition at line 187 of file nfft3.h.
Referenced by construct(), construct(), nfsoft_init_advanced(), nnfft_finalize(), nnfft_init(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and taylor_init().
| #define MALLOC_F_HAT (1U<<7) |
If this flag is set, (de)allocation of the vector of Fourier coefficients is done.
Definition at line 188 of file nfft3.h.
Referenced by construct(), construct(), nfsoft_init_advanced(), nnfft_finalize(), nnfft_init(), nnfft_init_guru(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and taylor_init().
| #define MALLOC_F (1U<<8) |
If this flag is set, (de)allocation of the vector of samples is done.
Definition at line 189 of file nfft3.h.
Referenced by construct(), construct(), nfsoft_init_advanced(), nnfft_finalize(), nnfft_init(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and taylor_init().
| #define FFT_OUT_OF_PLACE (1U<<9) |
If this flag is set, FFTW uses disjoint input/output vectors.
Definition at line 190 of file nfft3.h.
Referenced by fastsum_init_guru_source_nodes(), fastsum_init_guru_target_nodes(), main(), nnfft_init(), nnfft_init_guru(), taylor_init(), and taylor_time_accuracy().
| #define FFTW_INIT (1U<<10) |
If this flag is set, fftw_init/fftw_finalize is called.
Definition at line 191 of file nfft3.h.
Referenced by construct(), construct(), fastsum_init_guru_source_nodes(), fastsum_init_guru_target_nodes(), main(), nfsft_init_advanced(), nfsoft_init_advanced(), nnfft_init(), nnfft_init_guru(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), taylor_init(), and taylor_time_accuracy().
| #define PRE_ONE_PSI (PRE_LIN_PSI| PRE_FG_PSI| PRE_PSI| PRE_FULL_PSI) |
Summarises if precomputation is used within the convolution step (the multiplication with the sparse matrix 
Definition at line 194 of file nfft3.h.
Referenced by taylor_time_accuracy().
|
extern |
Computes a NFFT, see the definition.
Referenced by construct(), construct(), mri_inh_2d1d_trafo(), mri_inh_3d_trafo(), nfsoft_trafo(), and nnfft_trafo().
|
extern |
Computes an adjoint NFFT, see the definition.
Referenced by mri_inh_3d_adjoint(), nfsoft_adjoint(), nnfft_adjoint(), reconstruct(), and reconstruct().
|
extern |
Initialisation of a transform plan, wrapper d=1.
|
extern |
Initialisation of a transform plan, wrapper d=2.
Referenced by construct(), and construct().
|
extern |
Initialisation of a transform plan, wrapper d=3.
|
extern |
Initialisation of a transform plan, simple.
|
extern |
Precomputation for a transform plan.
wrapper for precompute*_psi
if PRE_*_PSI is set the application program has to call this routine (after) setting the nodes x
Referenced by nfsoft_precompute().
|
extern |
Superceded by nfft_precompute_one_psi.
Referenced by nnfft_precompute_full_psi(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().
|
extern |
Superceded by nfft_precompute_one_psi.
Referenced by construct(), construct(), construct(), construct(), nnfft_precompute_psi(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().
|
extern |
Superceded by nfft_precompute_one_psi.
Referenced by nfsoft_init_guru_advanced(), nnfft_precompute_lin_psi(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().
|
extern |
Checks a transform plan for frequently used bad parameter.
|
extern |
Destroys a transform plan.
Referenced by construct(), construct(), mri_inh_2d1d_finalize(), mri_inh_3d_finalize(), nfsft_finalize(), nfsoft_finalize(), nnfft_finalize(), reconstruct(), reconstruct(), reconstruct(), reconstruct(), and reconstruct().