# Frequency-Domain Filtered-x LMS Algorithms for Active Noise Control: A Review and New Insights
## 4 Delayless Frequency-Domain ANC Algorithms
A complexity measurement carried out in [46] indicated that the complexity of this algorithm in the first sample of each block is up to 200 times higher than the mean computational load. Even if a high-performance processor is employed to complete this task, most of this power is wasted. Furthermore, the delay in the weight update still exists, which limits the available step size for adaptation. [PERSON]'s delayless algorithm is summarized in Table 6.  
### [PERSON]'s Delayless Algorithm  
A computationally efficient delayless FDAF algorithm was presented in [46] that uses the fast filtering approach of [48]. The difference between [PERSON]'s and [PERSON]'s delayless algorithms is twofold. First, the convolutions in the first and second partitions are calculated in the time domain for the [PERSON]'s algorithm. Second, the previous weight vector \(\mathbf{W}_{p}(k)\) instead of \(\mathbf{W}_{p}(k+1)\) is used to calculate the control filter output  
\[\mathbf{y}(k+1)=\mathbf{y}_{0}(k+1)+\mathbf{y}_{1}(k+1)+\mathbf{b}(k+1), \tag{40}\]  
where  
\[\mathbf{y}_{p}(k+1)=\mathbf{Q}^{01}\mathbf{F}^{-1}\mathbf{X}_{p}(k+1)\mathbf{ W}_{p}(k),p=0,1, \tag{41}\] \begin{table}
\begin{tabular}{l l} \hline \hline
**Operation** & **Complexity** \\ \hline (1) Compute the frequency-domain reference matrix \(\mathbf{X}_{0}(k)\) using (8) & One FFT \\ (2) Compute the filtered reference signal vector \(\mathbf{v}(k)\) using (11) & One FFT and \(4 LP_{\text{s}}\) multiplications \\ (3) Compute the FFT of \(\mathbf{v}_{0}(k)\) using (15) & One FFT \\ (4) Update \(\mathbf{\Lambda}(k)\) using (17) & \(4L\) multiplications \\ (5) Compute the FFT of the error signal using (14) & One FFT \\ (6) Update the weight vector using (38) & \(2P_{\text{w}}\) FFTs and \(6 LP_{\text{w}}\) multiplications \\ (7) Compute \(\mathbf{\Theta}(k+1)\) using (37) & One FFT and \(4L(P_{\text{w}}-1)\) multiplications \\ (8) Compute the cancelling signal \(\mathbf{y}(k+1)\) using (36) & \(L^{2}\) multiplications \\ \hline \hline \end{tabular} Note: Steps (1)–(7) should be completed between \(kL\) and \(kL+1\); Average multiplications: \((5+2P_{\text{w}})A/L+10P_{\text{w}}+4P_{\text{s}}+L\); Peak multiplications: \((5+2P_{\text{w}})A+10 LP_{\text{w}}+4 LP_{\text{s}}+L\).  
\end{table} 
Table 6: [PERSON]’s delayless algorithm [44]. Figure 4: [PERSON]’s delayless algorithm. \[\mathbf{b}(k+1) =[b(kL+1),...,b(kL+L)]^{T} \tag{42}\] \[=\mathbf{Q}^{01}\mathbf{F}^{-1}\sum_{p=2}^{P_{w}-1}\mathbf{X}_{p}(k +1)\mathbf{W}_{p}(k).\]  
It should be noted that (42) is completed in the \(k\)-th frame but not in one sampling period as in [PERSON]'s algorithm, and hence the high peak complexity is avoided. The elements of \(\mathbf{y}_{0}(k+1)\) and \(\mathbf{y}_{1}(k+1)\) are computed in the time domain on a sample-by-sample basis  
\[\mathbf{y}_{p}(k+1)=\left[ \begin{array}{c}\tilde{\mathbf{x}}^{T}(kL+1-pL) \mathbf{w}_{p}(k)\\ \ldots\\ \tilde{\mathbf{x}}^{T}(kL+L-pL)\mathbf{w}_{p}(k)\end{array} \right]. \tag{43}\]  
The weight vector is updated using (38), which is completed between \(kL+1\) and \(kL+L\). Accordingly, the total complexity of the algorithm is distributed evenly in one frame. However, the delay in the weight adaptation is not removed. [PERSON]'s delayless algorithm is presented in Table 7.  
The pipeline of the process should be considered carefully. There are two tasks, the time-domain convolution on a sample-by-sample basis and the frequency-domain procedure on a block-by-block basis. When new block data are collected, the task for the weight update in (38) and the calculation of \(\mathbf{b}(k+1)\) are scheduled with low priority and should be completed in one block. When new data are available, the frequency-domain task is interrupted by the time-domain task. Then, the convolution operation is scheduled with high priority and should be completed in one sampling period. After the convolution operation has been executed, the interrupted frequency-domain task is recovered.