## 2 Multichannel Filtered-X Error-Coded Affine Projection-Like Algorithm with Evolving Order  
The FXECAP-L algorithm with evolving order was introduced by [PERSON] et al. [6]. This algorithm aims at reducing the computational cost by employing two techniques. The first technique is linked to the update of the filter coefficients based on the estimation error, i.e., there is an update process when the error is higher than a pre-determined threshold. The second technique is based on the calculation of projection order in each iteration [6]. The block diagram of a multichannel ANC system using the FXECAP-L algorithm is shown in Figure 1. The blocks \(P\) and \(S\) represent the primary and secondary paths, respectively, \(K\) is the number of error sensors, \(J\) the number of actuators, \(x_{i}(n)\) the \(i\)th reference signal obtained from \(I\) reference sensors and \(y_{j}(n)\) is the adaptive filter output given by  
\[y_{j}(n)=\mathbf{w}_{ji}^{t}(n)\mathbf{x}_{i}(n). \tag{1}\]  
Figure 1: Block diagram of the FXECAP-L algorithm for active noise control. The reference signal is defined as \(\mathbf{x}_{i}(n)=\left[x_{i}(n)\quad x_{i}(n-1)\quad\ldots\quad x_{i}(n-N+1) \right]^{t}\) and the adaptive filter coefficients as \(\mathbf{w}_{ji}(n)=\left[w_{j,i,1}(n)\quad w_{j,i,2}(n)\quad\ldots\quad w_{j,i,N }\right]^{t}\), where \(N\) is the length of the adaptive filter. In practice, the desired signal \(\mathbf{d}(n)\) is unavailable, and thus the error signal vector \(\mathbf{e}(n)\) is estimated using an approximation. Therefore, the estimation is obtained using past samples of the error signals and is expressed as \(\mathbf{e}_{k}(n)\approx\left[\epsilon_{k}(n)\quad e_{k}(n-1)\quad\ldots \quad e_{k}(n-L+1)\right]^{t}\), where \(L\) is the projection order. To compensate the effects caused by the secondary paths \(\mathbf{s}_{kj}(n)\), the reference signal \(x_{i}(n)\) is filtered using the following expression:  
\[x^{\prime}_{ijk}(n)=\mathbf{\hat{s}}^{t}_{kj}(n)\mathbf{v}_{i}(n), \tag{2}\]  
where \(\mathbf{\hat{s}}_{kj}\) is a fixed FIR filter of length \(M\) that models \(\mathbf{s}_{kj}(n)\) and \(v_{i}(n)=\left[x_{i}(n)\quad x_{i}(n-1)\quad\ldots\quad x_{i}(n-M+1)\right]^{t}\). To calculate the coefficient update equation, the filtered-x signals are arranged in a matrix \(\mathbf{X}_{ijk}(n)=\left[\mathbf{x}^{\prime}_{ijk}(n)\quad\mathbf{x}^{\prime }_{ijk}(n-1)\quad\ldots\quad\mathbf{x}^{\prime}_{ijk}(n-L+1)\right]\), composed of the filtered-x signals \(\mathbf{x}^{\prime}_{ijk}(n)=\left[x^{\prime}_{ijk}(n)\quad x^{\prime}_{ijk}( n-1)\quad\ldots\quad x^{\prime}_{ijk}(n-N+1)\right]^{t}\). Thus, the filter update equation for the FXECAP-L algorithm is expressed as follows:  
\[\mathbf{w}_{ji}(n+1)=\mathbf{w}_{ji}(n)+\sum_{k=1}^{K}\mu_{ijk}\mathbf{X}_{ijk }(n)\mathbf{C}[\mathbf{e}_{k}(n)], \tag{3}\]  
where the error is encoded using \(\mathbf{C}[\mathbf{e}_{k}(n)]=round(\mathbf{e}_{k}(n)/Res)\), and the resolution is obtained as follows:  
\[Res=\frac{\mathbf{e}_{\max}}{2^{b}-1}. \tag{4}\]  
Here, \(\mathbf{e}_{\max}\) denotes the maximum probable error and \(b\) is the number of bits used to encode the error. The step size \(\mu_{ijk}\) can be calculated using the following expression:  
\[\mu_{ijk}=\frac{\parallel\mathbf{X}_{ijk}(n)\mathbf{e}_{k}(n)\parallel^{2}}{ \parallel\mathbf{X}^{\prime}_{ijk}(n)\mathbf{X}_{ijk}(n)\mathbf{e}_{k}(n) \parallel^{2}}Res\cdot sf, \tag{5}\]  
where \(sf\) is a scaling factor used to compensate for the mismatch between \(\mathbf{\hat{s}}_{kj}(n)\) and \(\mathbf{s}_{kj}(n)\). Commonly, the value of \(sf\) can be defined in the interval \([0,1]\) and the designer can choose it by trial and error. The ECAP-L algorithm reduces the computational burden by updating the filter coefficients when the error signal is larger than a pre-established threshold. Such a threshold is determined by the error magnitude; in this way, when the error signal is small, the coefficients are not updated. The update threshold is defined as follows:  
\[\mathbf{w}_{ji}(n+1)=\left\{