- 概
- 滑動視窗上的快速演算法
Farhang-Boroujeny B. and Gazor S. Generalized sliding fft and its application to implementation of block lms adaptive filters. TSP, 1994
Jacobsen E. and Lyons R. The sliding DFT. SPM, 2003.
Jacobsen E. and Lyons R. An update to the sliding DFT. SPM, 2004.
Kober V. Fast algorithms for the computation of sliding discrete sinusoidal transforms. TSAP, 2004.
Duda K. Accurate, guaranteed stable, sliding discrete fourier transform [dsp tips & tricks]. TSP, 2010.
Mozafari B. and Savoji M. H. An efficient recursive algorithm and an explicit formula for calculating update vectors of running walsh-hadamard transform. ISSPA, 2007.
Wu J., Wang L., Yang G., Senhadji L., Luo L. and Shu H. Sliding conjugate symmetric sequency-ordered complex hadamard transform: fast algorithm and applications. TCS, 2012.
Chen B., Coatrieux G., Wu J., Dong Z., Coatrieux J. and Shu H. Fast computation of sliding discrete tchebichef moments and its application in duplicated regions detection. TSP, 2015.
概
在一個滑動視窗上的資訊處理的快速演算法.
滑動視窗上的快速演算法
-
在實際中, 我們常常會遇到一批一批的資料:
\[[\cdots, \underbrace{x_p, x_{p+1}, \cdots, x_{p + N-1}}_{W_p}, x_{p + N}, \cdots], \]\(W_p\) 是其中一個長度為 \(N\) 的視窗.
-
一般的訊號處理, 關注的是所有資料的一個處理, 但是這裡我們僅考慮 \(W_p\) 上資料的一個處理. 當然, 一般的訊號處理可以無礙地應用在 \(W_p\) 之上, 但是如果在 \(W_p\) 已經處理過的訊號基礎上, 更快速地得到 \(W_{p+1}, W_{p+2}\) 上的結果, 是參考文獻所關注的問題.
-
上面的參考文獻, 關注的是如下一個更加特殊的情況:
\[\tag{1} X_k(p) = \sum_{n=0}^{N-1} x_{p+n} \cdot f_{k, n}, \]其中 \(\{f_k = [f_{k, 0}, \ldots, f_{k, N-1}]^T: k \in 0, 1, \ldots, N-1\}\) 往往構成正交基. 比如, 當 \(f_{k, n} = e^{-i 2 \pi kn / N}\) 的時候, (1) 就是熟知的離散傅立葉變換.
-
顯然, 來一個新的樣本 \(x\) 就重新計算 (1) 是動態更新 \(X_k(p)\) 的一個法子, 但是極其消耗代價. 上述文章, 大體利用 \(f_{k, n}\) 的一個週期性, 從而得到形如如下的一個迭代演算法:
\[X_k(p + 1) = a X_k(p) - b x_p + cx_{p+N}. \] -
下面是傅立葉變換下的一個特殊例子, 其它情況 (DCT, DST, WHT) 會有比較類似的結果:
\[\begin{array}{ll} X_k(p + 1) &= \sum_{n=0}^{N-1} x_{p + 1 + n} \cdot e^{-i2\pi kn / N} \\ &= \sum_{n=0}^{N-1} x_{p+n} \cdot e^{-i2\pi k (n - 1) / N} \\ &\quad \quad - x_{p} e^{i2\pi k / N} + x_{p + N} e^{-2\pi k (N-1) / N} \\ &= \sum_{n=0}^{N-1} x_{p+n} \cdot e^{-i2\pi k (n - 1) / N} \\ &\quad \quad - x_{p} e^{i2\pi k / N} + x_{p + N} e^{i2\pi k / N} \\ &= e^{i2\pi k / N} \bigg \{ \sum_{n=0}^{N-1} x_{p+n} \cdot e^{-i2\pi k n/ N} - x_{p} + x_{p + N} \bigg\} \\ &= e^{i2\pi k / N} \bigg \{ X_k(p) - x_{p} + x_{p + N} \bigg\}. \end{array} \] -
遺憾的是, 這種方式, 似乎依舊必須儲存整個 \(W_p\) 的資料.