Three-Box Wiener-Hammerstein Models
The Wiener-Hammerstein model  is a combination of the Wiener and Hammer- stein models. It is a three-block model, where the LUT block is surrounded by two FIR filters. This is shown in Figure 6.5.
The output of the static nonlinear function, F(-), is given by:
Here, N and bi are the nonlinearity order and the coefficients of the nonlinear function F(-), respectively. The outputs of the two FIR filters, that is, xWH(n) and yWH(n), are given by:
M1 and M2 are the memory depths of the two FIR filters respectively; while, hmi and km are the filter responses.
The Hammerstein-Wiener model  is a combination of the Hammerstein model and the Wiener model. It is also a three-block model, but the FIR filter block is surrounded by two static nonlinear functions, namely F(-) and G(-), as shown in Figure 6.6.
The output of the FIR filter block is given by:
where M and hm are the memory depth and coefficients of the filter, respectively. The outputs of the two nonlinear functions are given by:
here, N1 and N2 are the nonlinearity orders of the nonlinear functions F(-) and G(-), respectively; and at and bj are the coefficients of the nonlinear functions F(-) and
Figure 6.5 Wiener-Hammerstein model
Figure 6.6 Hammerstein-Wiener model
G(-), respectively. In order to maintain uniqueness in the estimation procedure, the first coefficients of the nonlinear function blocks should be kept fixed [6, 7]. This non-uniqueness in the solution comes from the fact that the gain of the system can be arbitrarily divided among the blocks.
Implementation of the model can be done by using the mesh adaptive direct search (MADS) algorithm  or the Nelder-Mead algorithm . An analysis of the Hammerstein-Wiener model implementation has been provided in , where the authors applied the model by adopting a two-step approach using the MADS algorithm for faster implementation of the model.
The Hammerstein-Wiener model is first divided into a Hammerstein model (the first two blocks) and a static nonlinear function (the third block); and, the parameters of the static nonlinear function are initialized and used as the initial guess for the Hammerstein model. The current output of the Hammerstein model then serves to update the output nonlinearity for the next iteration. Linear least squares methods are then used to minimize the output error. Finally, the MADS algorithm is used to reduce the output error, by using the parameters of the Hammerstein model.