# Directional Active Noise Control with a Local Minimax Error Criterion
## 3 Design of a Fixed Optimal Filter in the Frequency Domain with the Local Minimax Error Criterion  
Based on the local minimax error criterion, \(J_{2}\) can be described as:  
\[ \begin{split} J_{2}&=\left\|\mathbf{E}_{d}{}^{H} \mathbf{E}_{d}\right\|_{\infty}\\ J_{2}&=\left\|\mathbf{P}_{d}{}^{H}\mathbf{P}_{d}+ \mathbf{P}_{d}{}^{H}\mathbf{R}_{d}\big{(}\mathbf{W}^{T}\big{)}^{H}+\big{(} \mathbf{W}^{T}\big{)}^{H}\mathbf{R}_{d}{}^{H}\mathbf{P}_{d}+\big{(}\mathbf{W}^ {T}\big{)}^{H}\mathbf{R}_{d}{}^{H}\mathbf{W}^{T}\right\|_{\infty}\end{split}  \tag{5}\]  
where \(\left\|\right\|_{\infty}\) is the infinite norm, and the subscript \(d\) represents certain discrete points at which better reductions are desired. \(J_{2}\) is also a function of the vector \(\mathbf{W}^{T}\). The traditional minimax error criterion deduced can be expressed as [21]:  
\[J_{3}=\left\|\mathbf{E}\right\|_{\infty} \tag{6}\]  
where \(\mathbf{E}\) represents the residual noise at all error points. \(J_{3}\) is guaranteed to be convex and has a unique global minimum that can be obtained by an iterative gradient descent algorithm. Obviously, such an algorithm is not suitable for the optimization of the local minimax error since we want to obtain reductions at other points. A feasible approach to achieve this goal is to optimize \(J_{2}\) locally. Generally, initial values and algorithms play important roles in local optimizations [22]. The Nelder-Mead algorithm, using a derivative-free method, is employed to find the local minimum value of \(J_{2}\). The starting point is critical and can greatly affect the objective value of the local solution. A known point, but not the best, is often chosen as the initial values. In this paper, \(J_{2}\) is employed to improve the performance of the original \(J_{1}\). Therefore, \(\mathbf{W}_{1}\) can be set as the initial values of \(\mathbf{W}\). It is worth mentioning that the initial point \(\mathbf{X}\) of the Nelder-Mead algorithm is specified as a real vector in this method, whereas \(\mathbf{W}_{1}\) consists of complex numbers. Therefore, \(\mathbf{X}\) should be constructed as:  
\[\mathbf{X}=\left[real(\mathbf{W}_{1}),imag(\mathbf{W}_{1})\right] \tag{7}\]  
The Nelder-Mead algorithm, also called the downhill simplex method, is a direct search method in which the derivatives may not be known [23]. It is a heuristic search method that can converge to non-stationary points. The algorithm starts off with a randomly-generated simplex. After many iterations, the vertex of the simplex that yields that best objective value is returned. More details are available in [24]. A flowchart of an iteration in the algorithm is shown in Figure 2. The method uses the concept of a simplex, which is a special polytope of \(n+1\) vertices in \(n\) dimensions. The starting points are \(\mathbf{X}_{1},\mathbf{X}_{2},\cdots,\mathbf{X}_{n+1}\), and the aim is to minimize \(J_{2}(\mathbf{X})\). The iteration can be described as follows:  
Step 1. Order \(J_{2}(\mathbf{X})\) at the vertices \(\mathbf{X}_{1},\mathbf{X}_{2},\cdots,\mathbf{X}_{n+1}\): suppose \(J_{2}(\mathbf{X}_{1})\leq J_{2}(\mathbf{X}_{2})\leq\cdots\leq J_{2}(\mathbf{X} _{n+1})\). If \(J_{2}(\mathbf{X}_{1})\) is below some tolerance, and return the \(\mathbf{X}_{opt}\), which is expressed as \(\mathbf{W}_{2}\). Step 2. Compute \(\mathbf{X}_{O}\), the centroid of all points except \(\mathbf{X}_{n+1}\). Step 3. Compute the reflected point, \(\mathbf{X}_{r}=\mathbf{X}_{o}+\alpha\left(\mathbf{X}_{o}-\mathbf{X}_{n+1} \right),\alpha>0\). If \(J_{2}(\mathbf{X}_{1})\leq J_{2}(\mathbf{X}_{r})\leq J_{2}(\mathbf{X}_{n})\), \(\mathbf{X}_{n+1}=\mathbf{X}_{r}\). Therefore, a new simplex is generated; return to Step 1. If \(J_{2}(\mathbf{X}_{r})\leq J_{2}(\mathbf{X}_{1})\), \(\mathbf{X}_{e}=\mathbf{X}_{o}+\gamma\left(\mathbf{X}_{r}-\mathbf{X}_{o}\right), \gamma>1\). Then, if \(J_{2}(\mathbf{X}_{e})\leq J_{2}(\mathbf{X}_{r})\), \(\mathbf{X}_{n+1}=\mathbf{X}_{e}\); otherwise, \(\mathbf{X}_{n+1}=\mathbf{X}_{r}\). Thus, a new simplex is generated; return to Step 1. Step 4.