Fast Function Interpolation for Bandlimited Periodic Signals¶
Theory¶
Let \(\phi: \mathbb{R} \to \mathbb{C}\) be a \(T\)-periodic function of bandwidth \(N_{FS} = 2 N + 1\). Then \(\phi\) is fully characterized by its \(N_{FS}\) Fourier Series coefficients \(\{ \phi_{n}^{FS}, n = -N, \ldots, N \}\) such that
Using (1), we can obtain \(M\) values of \(\phi\) at arbitrary positions \(\{t_{k}, k = 0, \ldots, M-1 \}\) with \(\mathcal{O}(N_{FS} M)\) operations.
In the case of \(M\) regularly-spaced samples however, an efficient algorithm based on the Chirp Z-Transform can be used.
Complex-valued Functions¶
Theorem
Let \(\phi: \mathbb{R} \to \mathbb{C}\) be a \(T\)-periodic function of bandwidth \(N_{FS} = 2 N + 1\). Let \(\{ \phi_{n}^{FS}, n = -N, \ldots, N \}\) be its Fourier Series coefficients and \(a \lt b \in \mathbb{R}\) be the end-points of an interval on which we want to evaluate \(M\) equi-spaced samples of \(\phi\).
Then the following holds:
where \(\text{CZT}\) of parameters \(A, W\) is as defined in The Chirp Z-Transform and
Proof
Replacing \(t[k]\) in (1), we get
with \(A, W, \Phi^{FS}\) as defined above.
Rearranging the equation into vector form proves the theorem.
Real-valued Functions¶
Theorem
Let \(\phi: \mathbb{R} \to \mathbb{R}\) be a \(T\)-periodic function of bandwidth \(N_{FS} = 2 N + 1\). Let \(\{ \phi_{n}^{FS}, n = -N, \ldots, N \}\) be its Fourier Series coefficients and \(a \lt b \in \mathbb{R}\) be the end-points of an interval on which we want to evaluate \(M\) equi-spaced samples of \(\phi\).
Then the following holds:
where \(\text{CZT}\) of parameters \(A, W\) is as defined in The Chirp Z-Transform and
Proof
Leverage the conjugate symmetry of the \(\phi_{k}^{FS}\) in the previous proof.
Multi-dimensional Functions¶
For a multi-dimensional signal \(\phi: \mathbb{R}^D \to \mathbb{C}\) that is \([T_1, T_2, \ldots, T_D]\)-periodic and \([N_{FS, 1}, N_{FS, 2}, \ldots, N_{FS, D}]\)-bandlimited, we can also obtain arbitrary values of \(\phi\) on a uniform grid in a similarly efficient manner. To do so, we need to perform a multi-dimensional \(\text{CZT}\) and then modulate along each dimension as done in the complex-valued theorem above.
Implementation Notes¶
fs_interp() can be used to obtain samples of a function using the algorithms
above.
fs_interpn() can be used to obtain samples of a \(D\)-dimensional
function.