NFFT  3.4.1
Functions
polar_fft_test

Functions

static int polar_grid (int T, int S, NFFT_R *x, NFFT_R *w)
 Generates the points $x_{t,j}$ with weights $w_{t,j}$ for the polar grid with $T$ angles and $R$ offsets. More...
 
static int polar_dft (NFFT_C *f_hat, int NN, NFFT_C *f, int T, int S, int m)
 discrete polar FFT
 
static int polar_fft (NFFT_C *f_hat, int NN, NFFT_C *f, int T, int S, int m)
 NFFT-based polar FFT.
 
static int inverse_polar_fft (NFFT_C *f, int T, int S, NFFT_C *f_hat, int NN, int max_i, int m)
 inverse NFFT-based polar FFT
 
int main (int argc, char **argv)
 test program for various parameters
 

Detailed Description

Function Documentation

static int polar_grid ( int  T,
int  S,
NFFT_R *  x,
NFFT_R *  w 
)
static

Generates the points $x_{t,j}$ with weights $w_{t,j}$ for the polar grid with $T$ angles and $R$ offsets.

The nodes of the polar grid lie on concentric circles around the origin. They are given for $(j,t)^{\top}\in I_R\times I_T$ by a signed radius $r_j := \frac{j}{R} \in [-\frac{1}{2},\frac{1}{2})$ and an angle $\theta_t := \frac{\pi t}{T} \in [-\frac{\pi}{2},\frac{\pi}{2})$ as

\[ x_{t,j} := r_j\left(\cos\theta_t, \sin\theta_t\right)^{\top}\,. \]

The total number of nodes is $M=TR$, whereas the origin is included multiple times.

Weights are introduced to compensate for local sampling density variations. For every point in the sampling set, we associate a small surrounding area. In case of the polar grid, we choose small ring segments. The area of such a ring segment around $x_{t,j}$ ( $j \ne 0$) is

\[ w_{t,j} = \frac{\pi}{2TR^2}\left(\left(|j|+\frac{1}{2}\right)^2- \left(|j|-\frac{1}{2}\right)^2\right) = \frac{\pi |j| }{TR^2}\, . \]

The area of the small circle of radius $\frac{1}{2R}$ around the origin is $\frac{\pi}{4R^2}$. Divided by the multiplicity of the origin in the sampling set, we get $w_{t,0} := \frac{\pi}{4TR^2}$. Thus, the sum of all weights is $\frac{\pi}{4}(1+\frac{1}{R^2})$ and we divide by this value for normalization.

Definition at line 73 of file polar_fft_test.c.

Referenced by inverse_polar_fft(), main(), polar_dft(), and polar_fft().