# An Optimized Differential Step-Size LMS Algorithm
## 4 ODSS-LMS Algorithm
### Practical Considerations  
The ODSS-LMS-G and ODSS-LMS-W algorithms are depicted in Algorithms 1 and 2, respectively. From a practical point of view, the variance \(\sigma_{x}^{2}\) of the input signal could be estimated with a 1-pole exponential filter, or using \(\sigma_{x}^{2}=(1/L)\mathbf{x}^{T}(n)\mathbf{x}(n)\). In practice, the autocorrelation matrix of the input signal is not known and it can be estimated with a weighting window as \(\mathbf{R}_{\mathbf{x}}(n)=\lambda\mathbf{R}_{\mathbf{x}}(n-1)+(1-\lambda) \mathbf{x}(n)\mathbf{x}^{T}(n)\), where \(\lambda=1-1/(PL)\), with \(P>1\). The noise power \(\sigma_{v}^{2}\) could be estimated in different ways as in [20; 21]. The influence of the system noise variance \(\sigma_{w}^{2}\) is analyzed in Section 5. Moreover, in order to obtain accurate estimates for some parameters, we suggest using an initialization algorithm such as the normalized LMS (NLMS) [11]. With the purpose to estimate the matrix \(\mathbf{R}_{\text{c}}(n)\) in the initial stage of the algorithm, we suppose that \(\mathbf{c}(n)\approx\mathbf{\hat{w}}(n)-\mathbf{\hat{w}}(n-1)\), so that we can approximate it with the update term \(\mathbf{u}(n)\) defined in Algorithms 1 and 2. In terms of computational complexity, the matrix operations lead to a high computational complexity. Therewith, the matrix inversion operation is involved and contributes to the complexity increase. Taking into account once the terms that appear several times in multiple equations (i.e., \(\mathbf{\Gamma}(n-1)\mathbf{R}_{\mathbf{x}}(n)\), \(\mathbf{R}_{\mathbf{x}}(n)\mathbf{\Gamma}(n-1)\)), the computational complexity is summarized as follows. For the ODSS-LMS-G algorithm, the computation of the \(\mathbf{M}(n)\) matrix requires \(2L^{3}+2L+1\) multiplications and \(2L^{3}-2L^{2}+2L\) additions, while its inversion consists of \(L\) divisions of the form \(1/x\). Then, computation of the differential step-size \(\mathbf{y}_{\text{o}}(n)\) consists of \(L^{3}+L\) multiplications and \(L^{3}-L^{2}\) additions. The update term \(\mathbf{u}(n)\) contributes with \(2L\) multiplications. Thereto, because the \(\mathbf{Y}(n)\) matrix is diagonal, the computation of the \(\mathbf{R}_{\text{c}}(n)\) matrix requires \(8L\) multiplications and \(5L\) additions. In addition, the computation of \(\mathbf{\Gamma}(n)\) matrix requires \(L\) additions and the estimation of the \(\mathbf{R_{x}}(n)\) matrix imposes \(2L^{2}+2L-1\) multiplications and \(L^{2}\) additions. In case of the ODSS-LMS-W algorithm, several matrix operations disappear and the computational complexity decreases. Thus, the computation of the \(\mathbf{M}(n)\) matrix requires only \(2L+1\) multiplications and \(2L+1\) additions. While \(\mathbf{M}(n)\) matrix is diagonal, the computational complexity of its inversion involves \(L\) divisions. Therefore, the differential step-size \(\mathbf{y}_{\mathrm{o}}(n)\) requires only \(L\) multiplications. In addition, the computation of the vector \(\gamma(n)\) contributes with \(5L+2\) multiplications and \(5L\) additions. Furthermore, the MSD is obtained for \(L\) additions, while the update term \(\mathbf{u}(n)\) adds \(2L\) multiplications. Some equations are required in both algorithms. The coefficients update equation requires \(L\) additions and the a priori error computations consist of \(L\) multiplications and \(L\) additions. Last but not least, the initialization process of both algorithms involves \(3L^{2}+2L+2\) multiplications, \(L^{2}+L+3\) additions, and one division. In brief, without the complexity of the initialization process, the ODSS-LMS-G algorithm involves \(3L^{3}+2L^{2}+16L\) multiplications, \(3L^{3}-2L^{2}+9L\) additions, and \(L\) divisions, while ODSS-LMS-W consists of \(10L+3\) multiplications, \(10L+1\) additions, and \(L\) divisions. Note that the computational complexity analysis is based on the standard way of inverting and multiplying matrices, so that the computational complexity of the ODSS-LMS-G algorithm is \(O(L^{3})\).