# Blockwise Frequency Domain Active Noise Controller Over Distributed Networks
## 2 Collaborative Distributed Algorithm for an \(N\)-Nodes ASN Based on an Incremental Strategy
If we define the global state of the network \(\mathbf{w}(t)\) as the adaptive filter coefficients of each node of the network at the time instant \(t\) and considering \(\mathbf{w}^{k}(t)\) a local version of \(\mathbf{w}(t)\) at the \(k\)th node, Equation (6) may be written as:  
\[\mathbf{w}^{k}(t)=\mathbf{w}^{k-1}(t)\ -\mu\mathbf{v}_{k}(t)\ e_{k}(t). \tag{7}\]  
Equation (7) is the updating rule of the state of the \(k\)th node by using an iterative algorithm that minimizes Equation (3). Moreover, note that \(\mathbf{w}^{0}(t)=\mathbf{w}^{N}(t-1)=\mathbf{w}(t-1)\). However, in real-time applications, the obtained equations have to be considered using block processing in the frequency domain in order to ensure a more efficient computational performance. The reason is because most common audio cards work with block data buffers. Moreover, hardware platforms that work with blocks of samples such as Digital Signal Processors (DSPs) or Graphics Processing Units (GPUs), use libraries of frequency-domain operations for a more efficient processing [23]. Furthermore, if the adaptive filters and the estimated secondary paths are longer than the sample block, they have to be split up into partitions [24]. For all these reasons, we consider the Frequency-domain Partitioned Block technique for the adaptive filtering operation [25; 26] based on the conventional filtered-x scheme (FPBFxLMS). Notation in Table 1 will be used to describe the following equations. Samples are processed by blocks of size \(B\). \(L\) is the length of the adaptive filters, and \(M\) is the length of the FIR filters that model the estimated secondary path. \(F\) and \(P\) are the number of partitions of both the adaptive filters and the estimated secondary paths, respectively. Furthermore, the index \(n\) between brackets denotes block iteration and the super-indexes \(f\) and \(p\) denotes the number of the partition. The vector \(\mathbf{x}_{B}[n]=[x(Bn)\ x(Bn-1)\cdots\ x(Bn-B+1)]^{T}\) contains the last B samples of \(x(t)\) at discrete time instant \(t\)=\(Bn\), and the error vector \(\mathbf{e}_{k,B}[n]\) contains the last block of size \(B\) of the error signal \(e_{k}(t)\) in the node \(k\) at discrete time instant \(t\)=\(Bn\), \(\mathbf{e}_{k,B}[n]=[e_{k}(Bn)\ e_{k}(Bn-1)\cdots\ e_{k}(Bn-B+1)]^{T}\). The vector \(\mathbf{X}[n]\) contain the FFT of size \(2B\) of the vector \(\mathbf{x}_{B}[n]\) in the actual block iteration and the same vector in the previous block iteration, \(\mathbf{X}[n]=\mathrm{FFT}[\mathbf{x}_{B}[n-1]\ \ \mathbf{x}_{B}[n]]\) and the vector \(\mathbf{E}_{k}[n]\) is the FFT of size \(2B\) of the error vector \(\mathbf{e}_{k,B}[n]\) preceded by a vector of zeros of size \(B\), \(\mathbf{0}_{B}\). Note that we only  
\[\mathbf{e}(t)=\mathbf{d}(t)\ +\ \mathbf{w}^{\mathrm{T}}(t)\mathbf{x}_{f}(t), \tag{1}\]0 Ring network with incremental communication. consider the last \(B\) samples of the \(2B\)-Inverse Fast Fourier Transform (IFFT) operation, IFFT\(\{\textbf{Y}[n]\}\), as the valid samples of the adaptive filter output \(\textbf{y}_{B}[n]\) since the first B samples suffer the effects of circular convolution due both to data management and the FFT sizes. Now, we define  
\[\textbf{W}[n]=\left[ \begin{array}{c}\textbf{W}_{1}[n],\textbf{W}_{2}[n],\ldots,\textbf{W}_{N}[n],\end{array} \right] \tag{8}\]  
being \(\textbf{W}_{k}[n]=\left[ \begin{array}{c}\textbf{W}_{k}^{1}[n],\textbf{W}_{k }^{2}[n],\ldots,\textbf{W}_{k}^{F}[n]\end{array} \right]\) a matrix of size \([2B\times F]\) where \(\textbf{W}_{k}^{f}[n]\) contains the \(2B\)-FFT of the \(f\)th partition of the adaptive filter of the \(k\)th node. The \(N\) nodes collaborate with each other by updating their part of \(\textbf{W}[n]\) and transferring \(\textbf{W}[n]\) to the next node. Therefore, every node will use a local version of the global state of the network (denoted by \(\hat{\textbf{W}}_{k}[n]\)) at the \(k\)th node at the \(n\)th block iteration.