# An Optimized Differential Step-Size LMS Algorithm
## 4 ODSS-LMS Algorithm
### Practical Considerations
One of the first approaches regarding the reduction of matrix multiplication computational complexity is the Strassen algorithm [22], which is slightly better than the standard matrix multiplication algorithm, with a computational complexity of \(O(L^{2.807})\). Going forward, the Coppersmith-Winograd algorithm [23] could be used to reduce the matrix multiplication computational complexity to \(O(L^{2.375})\). ```
Initialization: \(\bullet\ \mathbf{\hat{w}}(0)=\mathbf{0}_{L\times 1}\) \(\bullet\ \mathbf{R_{c}}(0)=c\ \mathbf{I}_{L}\), where \(c\) is a small positive constant \(\bullet\ \mathbf{R_{x}}(0)=\mathbf{0}_{L\times L}\) \(\bullet\



Finally, the overall computational complexity of the NLMS [1], IPNLMS [4], and JO-NLMS [24] algorithms is summarized for comparison. The NLMS algorithm consists of \(2L+2\) multiplications, \(2L+3\) additions, and \(1\) division, while the IPNLMS algorithm involves \(5L+2\) multiplications, \(5L\) additions, and two divisions. The JO-NLMS algorithm has a computational complexity similar to that of the NLMS algorithm, which is based on \(2L+3\) multiplications, \(2L+4\) additions, and one division. Notice that the computational complexity of these algorithms has been reported by considering \(\sigma_{x}^{2}\), \(\sigma_{v}^{2}\), and \(\sigma_{w}^{2}\) parameters known, while their estimation depends on the implementation (e.g., in literature, different estimation methods are available). Of course, these algorithms do not involve matrix operations and the computational complexity is \(O(L)\). At this point, it can be highlighted that the computational complexity of the ODSS-LMS-W algorithm is comparable with the complexity of the NLMS, IPNLMS, or JO-NLMS algorithm. Even if the proposed algorithms present a high computational complexity, they are more affined to \"benchmark\" type algorithms and their performance is outlined in Section 5. ```  Initialization: \(\bullet\)\(\hat{\mathbf{w}}(0)=\mathbf{0}_{L\times 1}\) \(\bullet\)\(m(0)=\epsilon>0\) \(\bullet\)\(\tau(0)=c\)\(\mathbf{I}_{\times 1}\), where \(c\) is a small positive constant \(\bullet\)\(\mathbf{R}_{\mathbf{c}}(0)=c\)\(\mathbf{I}_{L}\) \(\bullet\)\(\Gamma(0)=\mathbf{R}_{\mathbf{c}}(0)+\sigma_{w}^{2}\mathbf{I}_{L}\) Parameters \(\sigma_{x}^{2},\sigma_{v}^{2},\sigma_{w}^{2}\), known or estimated \(\lambda=1-\frac{1}{PL}\), with \(P\geq 1\)  For time index \(n=1,2,...\) \(\bullet\)\(\alpha(n)=d(n)-\mathbf{x}^{T}(n)\hat{\mathbf{w}}(n-1)\) If time index \(n<KL\), with \(K\geq 1\): \(\bullet\)\(\mu(n)=\frac{\mu}{\pi(n)}\) (i.e., step-size of the NLMS algorithm) \(\bullet\)\(\mathbf{u}(n)=\mu(n)\mathbf{x}(n)\alpha(n)\) \(\bullet\)\(\mathbf{R}_{\mathbf{c}}(n)=\lambda\mathbf{R}_{\mathbf{c}}(n-1)+(1-\lambda) \mathbf{u}(n)\mathbf{u}^{T}(n)\) \(\bullet\)\(\mathbf{\Gamma}(n)=\mathbf{R}_{\mathbf{c}}(n)+\sigma_{w}^{2}\mathbf{I}_{L}\) else: \(\bullet\)\(\mathbf{M}(n)=\sigma_{x}^{2}\mathbf{I}_{L}  
echo path is \(\xi_{12}=0.6130\), while for the network echo path it is \(\xi_{12}=0.8969\). The impulse responses used in our simulations are shown in Figure 1. In these scenarios, the sampling rate is 8 kHz. In this context, the unknown system is the echo path and the adaptive filter should estimate it. The output signal is corrupted by an independent white Gaussian noise with the signal-to-noise ratio (SNR) set to \(\text{SNR}=\sigma_{y}^{2}/\sigma_{v}^{2}=20\text{ dB}\), where \(\sigma_{y}^{2}=\text{E}[y^{2}(n)]\). We assume that the power of this noise, \(\sigma_{v}^{2}\), is known. The input signal, \(x(n)\), is either a white Gaussian noise, an AR(1) process generated by filtering a white Gaussian noise through a first-order system \(1/(1-\beta z^{-1})\), with \(\beta=0.8,0.9\), or a speech sequence. The performance measure is the normalized misalignment in dB, defined as \(20\text{log}_{10}[\left\|\mathbf{w}(n)-\mathbf{\hat{w}}(n)\right\|_{2}/\left\| \mathbf{w}(n)\right\|_{2}]\).