<< Chapter < Page | Chapter >> Page > |
Fast Fourier Aliasing-based Sparse Transform (FFAST) is a sparse FFT algorithm developed by Sameer Pawar and Kannan Ramchandran in May 2013 [link] . We present a formulation of the algorithm that is specialized for our digital multitone scheme.
FFAST consists of three modules: the downsampling module, the FFT module, and the peeling module. See [link] for a diagram of this architecture.
The downsampling module consists of three stages. In each stage $i$ , the signal and a delayed version are both downsampled by a sampling coefficient, ${n}_{i}\in {\mathbb{Z}}_{+}$ . This introduces aliasing in the frequency domain, which will be a key component in the peeling module. It is necessary that the sampling coefficients ${n}_{i}$ are coprime factors of the singal length $N$ ; that is, ${n}_{0}\phantom{\rule{0.166667em}{0ex}}{n}_{1}\phantom{\rule{0.166667em}{0ex}}{n}_{2}=N$ where ${n}_{0}$ , ${n}_{1}$ , ${n}_{2}$ , are all relatively prime.
These smaller subsignals are passed to the FFT module, which computes the DFT of each subsignal. Any FFT algorithm may be used in this stage with the condition that it works for a general signal length $N$ . The DFTs of the subsignals at stage $i$ are then paired together. We denote such a pair as ${\overrightarrow{y}}_{l}^{\phantom{\rule{0.166667em}{0ex}}i}=({x}_{i}\left[l\right],{\tilde{x}}_{i}\left[l\right])$ , where ${x}_{i}\left[l\right]$ and ${\tilde{x}}_{i}\left[l\right]$ are the ${l}_{th}$ values of the DFT of the normal and delayed subsignals of stage $i$ , respectively.
The peeling module takes these smaller DFT pairs and backsolves a bipartite graph to obtain the DFT coefficients of the original signal. To understand the structure of this graph, recall that the aliasing caused by downsampling “mixes" frequency domain components. More precisely, the coefficients of the smaller DFTs are a linear combination of the original DFT coefficients. Consider a graph with two types of vertices: the smaller DFT pair coefficients ${\overrightarrow{y}}_{l}^{\phantom{\rule{0.166667em}{0ex}}i}$ and original DFT coefficients $X\left[p\right]$ . If an original DFT coefficient contributes to the value of a smaller DFT coefficient, an edge is placed between the two vertices. It is easy to see that this is a bipartite graph because the vertex set can be partitioned into smaller DFT coefficients and original DFT coefficients.
We denote a smaller DFT coefficient vertex as a zero-ton if no nodes are connected to it, a singleton if exactly one node is connected to it, and a multi-ton if it is neither a zero-ton nor a singleton.
If a vertex ${\overrightarrow{y}}_{l}^{\phantom{\rule{0.166667em}{0ex}}i}=({x}_{i}\left[l\right],{\tilde{x}}_{i}\left[l\right])$ is a pair of zeros, then it is a zero-ton. Otherwise, to determine whether a vertex is a zero-ton, a singleton, or a multi-ton, the algorithm uses a “Ratio Test" [link] . Recall that a circular shift in the time domain is a multiplication by a complex exponential in the frequency domain so that we may use the values in ${\overrightarrow{y}}_{l}^{\phantom{\rule{0.166667em}{0ex}}i}$ to determine whether the vertex is a singleton. To perform this ratio test we may check if the quantity
is an integer. If $q$ is an integer, then the vertex in question is a singleton and thus, $X\left[q\right]={x}_{i}\left[l\right]$ ; otherwise, the vertex in question is a multi-ton.
We now describe the process of backsolving this bipartite graph to get the DFT coefficients of the original signal. If a vertex is a zero-ton, we may remove it from the graph because it provides no relevant information. If a vertex is a singleton, we have obtained a DFT coefficient $X\left[q\right]$ . By the “mixing” process of aliasing, we know which smaller DFT pairs ${\overrightarrow{y}}_{l}^{\phantom{\rule{0.166667em}{0ex}}i}$ that $X\left[q\right]$ contributes to. With this information, we may subtract $X\left[q\right]$ from these smaller DFT pairs, thus removing edges from the graph. We repeat these steps until all edges are removed from the graph and $X\left[q\right]$ is known completely. This process is known as peeling and is reminiscent of decoding Low Density Parity Check codes.
In general, FFAST is a robust algorithm that can handle noise, many signal lengths $N$ , and sparsity factors $k$ , where $k$ is the number of nonzero DFT coefficients. We presented a specific noiseless version of the algorithm that requires the sparsity constraint $k<{N}^{1/3}$ . As previously mentioned, FFAST also requires that the subsampling coefficients are coprime factors of $N$ . With these conditions, FFAST is guaranteed to converge to a solution almost surely.
Notification Switch
Would you like to follow the 'Using ffast to decrease computation time in digital multitone communication' conversation and receive update notifications?