## 3 Digital SI Cancellation Using Adaptive Filter
To minimize (7), the mean square error (MSE) of the AF can be derived from the expression in (2) as  
\[\mathbb{E}\Big{\{}||y(n)||^{2}\Big{\}} =\mathbb{E}\Big{\{}\big{|}|v(n)-s^{\prime\prime}(n)|\big{|}^{2} \Big{\}}, \tag{8}\] \[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]0 (9) \[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]1  
where \(\mathbf{R}_{\text{ss}}=\mathbb{E}\big{\{}\mathbf{s}(n)\mathbf{s}^{\text{H}}( n)\big{\}}\), \(\mathbf{p}_{\text{vs}}=\mathbb{E}\big{\{}v(n)\mathbf{s}^{\text{H}}(n)\big{\}}\), and (9) is from (6). By solving \(\boldsymbol{\
abla}_{\mathbf{h}_{n}}\mathbb{E}\Big{\{}||y(n)||^{2}\Big{\}}=0\), the optimal filter coefficient vector \(\mathbf{h}^{*}\) can be obtained as [34]  
\[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]2  
However, the optimal filter coefficient vector \(\mathbf{h}^{*}\) in (11) is difficult to calculate in real-time and is inapplicable in practical implementation. Therefore, here we introduce a least mean square (LMS)-based algorithm [34] to iteratively approach the optimal solution \(\mathbf{h}^{*}\). For LMS, instead of finding the optimal solution directly, the algorithm keeps approaching the optimal solution iteratively. Hence, instead of the MSE expression in (8), the instantaneous expression of the square error \(y^{2}(n)\) is used to find the deepest descent towards the optimal solution as  
\[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]3 \[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]4 (13) \[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]5  
where (13) is from (9). The AF is then able to approach the optimal solution with the deepest descent in (14) in an iteratively updated filter coefficient vector form as  
\[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]6  
where \(\mu\) is the step-size value that controls the speed of the AF algorithm along the deepest descent towards the optimal solution. However, the convergence issue is a very essential topic when using the LMS method. The whole AF output may diverge if the step-size \(\mu\) does not satisfy the following condition:  
\[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]7  
which means the value of the step-size \(\mu\) should be small enough comparing with the power of the input signal so that the LMS method can trace the optimal solution in a convergent way. To ensure the convergence of the AF, here we adopt a variation of LMS method, which is called normalized least mean square (nLMS) method [34] in our implementation. The nLMS method uses a modified step-size \(\mu^{\prime}\), which is normalized to the power of the input vector and can be expressed as  
\[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]8  
where \(\delta\) is a small positive number to ensure that the algorithm can avoid the singularity that \(||\mathbf{s}(n)||^{2}=0\). The nLMS algorithm is listed in Algorithm 1. From the expressions of the algorithm, it can be known that the realization of the nLMS algorithm needs \(2N_{\text{taps}}+2\) multiplications, \(2N_{\text{taps}}+3\) additions, and \(1\) division operation. Because the operations of nLMS algorithm do not involve matrix operations, its computational complexity is \(O(N_{\text{taps}})\)[35]. In addition, to analyze the optimality of the nLMS algorithm, it is necessary to investigate its steady-state conditions. The steady-state conditions of the nLMS algorithm can be analyzed by the misalignment norm method [36], which is briefly introduced as follows. First of all, the misalignment can be defined as  
\[\mathbf{h}_{n}=[h_{n},h_{n-1},\cdots,h_{n-N_{\text{taps}}+1}]^{\text{T}}, \tag{1}\]9  
where \(\mathbf{h}_{\text{opt}}\) is the optimal filter weighting vector, which can minimize the MSE of AF.