# Non-uniform discrete Fourier transform

In applied mathematics, the non-uniform discrete Fourier transform (NUDFT or NDFT) of a signal is a type of Fourier transform, related to a discrete Fourier transform or discrete-time Fourier transform, but in which the input signal is not sampled at equally spaced points or frequencies (or both). It is a generalization of the shifted DFT. It has important applications in signal processing, magnetic resonance imaging, and the numerical solution of partial differential equations.
As a generalized approach for nonuniform sampling, the NUDFT allows one to obtain frequency domain information of a finite length signal at any frequency. One of the reasons to adopt the NUDFT is that many signals have their energy distributed nonuniformly in the frequency domain. Therefore, a nonuniform sampling scheme could be more convenient and useful in many digital signal processing applications. For example, the NUDFT provides a variable spectral resolution controlled by the user.

## Definition

The nonuniform discrete Fourier transform transforms a sequence of $N$ complex numbers $x_{0},\ldots ,x_{N-1}$ into another sequence of complex numbers $X_{0},\ldots ,X_{N-1}$ defined by
where $p_{0},\ldots ,p_{N-1}\in [0,1]$ are sample points and $f_{0},\ldots ,f_{N-1}\in [0,N]$ are frequencies. Note that if $p_{n}=n/N$ and $f_{k}=k$, then equation (1) reduces to the discrete Fourier transform. There are three types of NUDFTs. Note that these types are not universal and different authors will refer to different types by different numbers.
* The nonuniform discrete Fourier transform of type I (NUDFT-I) uses uniform sample points $p_{n}=n/N$ but nonuniform (i.e. non-integer) frequencies $f_{k}$. This corresponds to evaluating a generalized Fourier series at equispaced points. It is also known as NDFT or forward NDFT
* The nonuniform discrete Fourier transform of type II (NUDFT-II) uses uniform (i.e. integer) frequencies $f_{k}=k$ but nonuniform sample points $p_{n}$. This corresponds to evaluating a Fourier series at nonequispaced points. It is also known as adjoint NDFT.
* The nonuniform discrete Fourier transform of type III (NUDFT-III) uses both nonuniform sample points $p_{n}$ and nonuniform frequencies $f_{k}$. This corresponds to evaluating a generalized Fourier series at nonequispaced points. It is also known as NNDFT.
A similar set of NUDFTs can be defined by substituting $-i$ for $+i$ in equation (1). Unlike in the uniform case, however, this substitution is unrelated to the inverse Fourier transform. The inversion of the NUDFT is a separate problem, discussed below.

## Multidimensional NUDFT

The multidimensional NUDFT converts a $d$-dimensional array of complex numbers $x_{\mathbf {n} }$ into another $d$-dimensional array of complex numbers $X_{\mathbf {k} }$ defined by
    $X_{\mathbf {k} }=\sum _{\mathbf {n} =\mathbf {0} }^{\mathbf {N} -1}x_{\mathbf {n} }e^{-2\pi i\mathbf {p} _{\mathbf {n} }\cdot {\boldsymbol {f}}_{\mathbf {k} }}$
where $\mathbf {p} _{\mathbf {n} }\in [0,1]^{d}$ are sample points, ${\boldsymbol {f}}_{\mathbf {k} }\in [0,N_{1}]\times [0,N_{2}]\times \cdots \times [0,N_{d}]$ are frequencies, and $\mathbf {n} =(n_{1},n_{2},\ldots ,n_{d})$ and $\mathbf {k} =(k_{1},k_{2},\ldots ,k_{d})$ are $d$-dimensional vectors of indices from 0 to $\mathbf {N} -1=(N_{1}-1,N_{2}-1,\ldots ,N_{d}-1)$. The multidimensional NUDFTs of types I, II, and III are defined analogously to the 1D case.

## Relationship to Z-transform

The NUDFT-I can be expressed as a Z-transform. The NUDFT-I of a sequence $x[n]$ of length $N$ is
    $X(z_{k})=X(z)|_{z=z_{k}}=\sum _{n=0}^{N-1}x[n]z_{k}^{-n},\quad k=0,1,...,N-1,$
where $X(z)$ is the Z-transform of $x[n]$, and $\{z_{i}\}_{i=0,1,...,N-1}$ are arbitrarily distinct points in the z-plane. Note that the NUDFT reduces to the DFT when the sampling points are located on the unit circle at equally spaced angles.
Expressing the above as a matrix, we get
    $\mathbf {X} =\mathbf {D} \mathbf {x}$
where
    $\mathbf {X} ={\begin{bmatrix}X(z_{0})\\X(z_{1})\\\vdots \\X(z_{N-1})\end{bmatrix}},\quad \mathbf {x} ={\begin{bmatrix}x[0]\\x[1]\\\vdots \\x[N-1]\end{bmatrix}},{\text{ and}}\quad \mathbf {D} ={\begin{bmatrix}1&z_{0}^{-1}&z_{0}^{-2}&\cdots &z_{0}^{-(N-1)}\\1&z_{1}^{-1}&z_{1}^{-2}&\cdots &z_{1}^{-(N-1)}\\\vdots &\vdots &\vdots &\ddots &\vdots \\1&z_{N-1}^{-1}&z_{N-1}^{-2}&\cdots &z_{N-1}^{-(N-1)}\end{bmatrix}}.$

### Direct inversion of the NUDFT-I

As we can see, the NUDFT-I is characterized by $\mathbf {D}$ and hence the $N$ ${z_{k}}$ points. If we further factorize $\det(\mathbf {D} )$, we can see that $\mathbf {D}$ is nonsingular provided the $N$ ${z_{k}}$ points are distinct. If $\mathbf {D}$ is nonsingular, we can get a unique inverse NUDFT-I as follows:
    $\mathbf {x} =\mathbf {D^{-1}} \mathbf {X}$.
Given $\mathbf {X} {\text{ and }}\mathbf {D}$, we can use Gaussian elimination to solve for $\mathbf {x}$. However, the complexity of this method is $O(N^{3})$. To solve this problem more efficiently, we first determine $X(z)$ directly by polynomial interpolation:
    ${\hat {X}}[k]=X(z_{k}),\quad k=0,1,...,N-1$.
Then $x[n]$ are the coefficients of the above interpolating polynomial.
Expressing $X(z)$ as the Lagrange polynomial of order $N-1$, we get
    $X(z)=\sum _{k=0}^{N-1}{\frac {L_{k}(z)}{L_{k}(z_{k})}}{\hat {X}}[k],$
where $\{L_{i}(z)\}_{i=0,1,...,N-1}$ are the fundamental polynomials:
    $L_{k}(z)=\prod _{i\neq k}(1-z_{i}z^{-1}),\quad k=0,1,...,N-1$.
Expressing $X(z)$ by the Newton interpolation method, we get
    $X(z)=c_{0}+c_{1}(1-z_{0}z^{-1})+c_{2}(1-z_{0}z^{-1})(1-z_{1}z^{-1})+\cdots +c_{N-1}\prod _{k=0}^{N-2}(1-z_{k}z^{-1}),$
where $c_{j}$ is the divided difference of the $j$th order of ${\hat {X}}[0],{\hat {X}}[1],...,{\hat {X}}[j]$ with respect to $z_{0},z_{1},...,z_{j}$:
    $c_{0}={\hat {X}}[0],$
    $c_{1}={\frac {{\hat {X}}[1]-c_{0}}{1-z_{0}z_{1}^{-1}}},$
    $c_{2}={\frac {{\hat {X}}[2]-c_{0}-c_{1}(1-z_{0}z^{-1})}{(1-z_{0}z_{2}^{-1})(1-z_{1}z_{2}^{-1})}},$
       $\vdots$
The disadvantage of the Lagrange representation is that any additional point included will increase the order of the interpolating polynomial, leading to the need to recompute all the fundamental polynomials. However, any additional point included in the Newton representation only requires the addition of one more term.
We can use a lower triangular system to solve $\{c_{j}\}$:
    $\mathbf {L} \mathbf {c} =\mathbf {X}$
where
    $\mathbf {X} ={\begin{bmatrix}{\hat {X}}[0]\\{\hat {X}}[1]\\\vdots \\{\hat {X}}[N-1]\end{bmatrix}},\quad \mathbf {c} ={\begin{bmatrix}c_{0}\\c_{1}\\\vdots \\c_{N-1}\end{bmatrix}},{\text{ and}}\quad \mathbf {L} ={\begin{bmatrix}1&0&0&\cdots &0\\1&(1-z_{0}z_{1}^{-1})&0&\cdots &0\\1&(1-z_{0}z_{2}^{-1})&(1-z_{0}z_{2}^{-1})(1-z_{1}z_{2}^{-1})&\cdots &0\\\vdots &\vdots &\vdots &\ddots &\vdots \\1&(1-z_{0}z_{N-1}^{-1})&(1-z_{0}z_{N-1}^{-1})(1-z_{1}z_{N-1}^{-1})&\cdots &\prod _{k=0}^{N-2}(1-z_{k}z_{N-1}^{-1})\end{bmatrix}}.$
By the above equation, $\{c_{j}\}$ can be computed within $O(N^{2})$ operations. In this way Newton interpolation is more efficient than Lagrange Interpolation unless the latter is modified by
    $L_{k+1}(z)={\frac {(1-z_{k+1}z^{-1})}{(1-z_{k}z^{-1})}}L_{k}(z),\quad k=0,1,...,N-1$.

## Nonuniform fast Fourier transform

While a naive application of equation (1) results in an $O(N^{2})$ algorithm for computing the NUDFT, $O(N\log N)$ algorithms based on the fast Fourier transform (FFT) do exist. Such algorithms are referred to as NUFFTs or NFFTs and have been developed based on oversampling and interpolation, min-max interpolation, and low-rank approximation. In general, NUFFTs leverage the FFT by converting the nonuniform problem into a uniform problem (or a sequence of uniform problems) to which the FFT can be applied. Software libraries for performing NUFFTs are available in 1D, 2D, and 3D.

## Applications

The applications of the NUDFT include:
* Digital signal processing
* Magnetic resonance imaging
* Numerical partial differential equations
* Semi-Lagrangian schemes
* Spectral methods
* Spectral analysis
* Digital filter design
* Antenna array design
* Detection and decoding of dual-tone multi-frequency (DTMF) signals