# A Low-Complexity Volterra Filtered-Error LMS Algorithm with a Kronecker Product Decomposition
## 3 Proposed Algorithm
### Dvmfxlms  
To derive the DVMFELMS algorithm, the adaptive Volterra algorithm based on a filtered-reference structure (DVMFXLMS) is first derived in this part. To model the system's nonlinearity, a \(P\)-order Volterra model with the length of the memory \(L+1\) is utilized. By using the Kronecker product decomposition and the characteristic of the Kronecker product [38], Equation (5) can be rewritten as  
\[ \begin{split} y_{p}(n)&=(\mathbf{u}(n)\otimes\cdots \otimes\mathbf{u}(n))^{T}(\mathbf{w}_{p,1}(n)\otimes\cdots\otimes\mathbf{w}_{p,p}(n)),\\ &=(\mathbf{u}^{T}(n)\mathbf{w}_{p,1}(n))\otimes\cdots\otimes(\mathbf{u}^{T}( n)\mathbf{w}_{p,p}(n)),\\ &=(\mathbf{u}^{T}(n)\mathbf{w}_{p,1}(n))\times\cdots\times(\mathbf{u}^{T}(n) \mathbf{w}_{p,p}(n)),\end{split}  \tag{8}\]  
where \(\otimes\) denotes the Kronecker product, and \(\mathbf{u}(n)\) is the primary noise vector given by  
\[\mathbf{u}(n)=[u(n),\ u(n-1),\ \cdots\ u(n-L)]^{T}, \tag{9}\]  
where \(\mathbf{w}_{p,1}(n)\otimes\cdots\otimes\mathbf{w}_{p,p}(n)\) is the nearest Kronecker product decomposition of \(\mathbf{H}_{p}(n)\), which can be expressed as  
\[\underset{\mathbf{w}_{p,d}}{\arg\min}\ \ (0\leq p\leq P,\ 0\leq q\leq p)||\mathbf{H}_{p}(n )-\mathbf{w}_{p,1}(n)\otimes\cdots\otimes\mathbf{w}_{p,p}(n)||^{2}, \tag{10}\]  
where \(||\.\ ||^{2}\) is the \(l_{2}\)-norm of a vector, and \(\mathbf{w}_{p,d}(n)\) is the \(q\)-th filter of the \(p\)-th-order of the decomposed Volterra structure with memory length \(L+1\), which is defined as  
\[\mathbf{w}_{p,d}(n)=[w_{p,d}(n,0),\ w_{p,d}(n,1),\ \cdots\ w_{p,d}(n,L)]^{T},with\ \ 0\leq p \leq P,\ 0\leq q\leq p. \tag{11}\]  
Minimizing the mean square error can be given by  
\[ \begin{split} J&=E\Big{\{}e(n)^{2}\Big{\}},\\ &=E\Big{\{}\Big{(}d(n)+\hat{d}(n)\Big{)}^{2}\Big{\}}.\end{split}  \tag{12}\]  
According to the steepest descent algorithm, the proposed FXLMS can update the sub-filter \(\mathbf{w}_{p,d}(n)\) as follows:  
\[\mathbf{w}_{p,d}(n+1)=\mathbf{w}_{p,d}(n)-\mu_{p}\frac{\partial J}{\partial\mathbf{w}_{p,d }}\Big{|}_{n}, \tag{13}\]where \(\frac{\partial l}{\partial w_{p,q}}\Big{|}_{n}\) is the single sample estimation of the gradient of \(J\), and \(\mu_{p}\) is the step size. Defining \(y_{p,q}(n)=\mathbf{u}^{T}(n)\mathbf{w}_{p,q}(n)\), \(y(n)\) can be rewritten as  
\[y(n)=\sum_{p=1}^{p}\left(\prod_{q=1}^{p}y_{p,q}(n)\right). \tag{14}\]  
We further assume that \(\mathbf{w}_{p,q}(n)\) only changes slowly, and we can derive the gradient in (13) by substituting (12) and (14) into (15):  
\[\frac{\partial l}{\partial\mathbf{w}_{p,q}}\Big{|}_{n}=\left(\left(\prod_{s=1}^{q- 1}y_{p,s}(n)\prod_{s=q+1}^{p}y_{p,s}(n)\mathbf{u}(n)\right)\ast\frac{\partial\hat{ d}(n)}{\partial y(n)}\right)e(n), \tag{15}\]  
defining the virtual secondary path filter \(\mathbf{s}(n)\) with memory length \(M+1\):  
\[\mathbf{s}(n)=\left[\frac{\partial\hat{d}(n)}{\partial y(n)},\ \frac{\partial\hat{d}(n)}{ \partial y(n-1)},\ \ldots\ \frac{\partial\hat{d}(n)}{\partial y(n-M)}\right]^{T}, \tag{16}\]  
and, for notation convenience, defining an auxiliary sub-vector:  
\[\overline{u}_{p,q}(n)=\overline{y}_{p,q}(n)\mathbf{u}(n), \tag{17}\]  
where \(\overline{y}_{p,q}(n)=\left(\prod_{s=1}^{q-1}y_{p,s}(n)\prod_{s=q+1}^{p}y_{p, s}(n)\right)\). Substituting (15)-(17) into (13), we can derive the updating equation of \(\mathbf{w}_{p,q}(n)\) for all \(p\) and \(q\) as  
\[\mathbf{w}_{p,q}(n+1)=\mathbf{w}_{p,q}(n)-\mu_{p}\big{(}\overline{\mathbf{u}}_{p,q}(n) \ast\mathbf{s}(n)\big{)}e(n). \tag{18}\]  
It is worth noting that for NANC with the LSP case, the virtual secondary path filter \(\mathbf{s}(n)\) can be modeled offline using a linear FIR filter. For NANC with the NSP case, the virtual secondary path filter will change with the iteration, even though the nonlinear secondary path is time-invariant. Thus, the nonlinear secondary path must be modeled firstly based on one of the nonlinear filters mentioned above, such as the Volterra filter. Then, the derivation in (16) is calculated using the modeled nonlinear filter.