Identification of the Wiener object code. Modelling of Wiener object with two inputsThis is numerical simulation of identification of Wiener object with two inputs. The model that is used to generate data is following: $$y1_i = \sum_{j=0}^m h1_j \cdot x1_{ij}$$ $$y2_i = \sum_{j=0}^m h2_j \cdot x2_{ij}$$ $$y_i = f(y1_i + y2_i), $$where $f(y) = sign(y) \cdot y^2 + 0.2 \cdot y^3$ (is static nonlinearity shown in the image below), $x1, x2, h1, h2$ are generated, $y1, y2, y$ are computed. The inputs are random processes, the impulse responses are randomly generated for each test, but they are designed to make sense, like having declining values at the end and relatively large values at the beginning. The identification is performed on training data and verified on unseen data. The errors for unseen data is usually between 1 and 2 percent. The purpose of the testThe Urysohn operator is generalization of Hammerstein operator, it can't replace Wiener object and Wiener is not a substitution for Urysohn from theoretical point of view. They are different models applicable for different objects, but, as it always happen, when we estimate parameters of the model, we can find certain approximation. This test showed that Urysohn can approximate Wiener model depending on nonlinearity. It is not always as perfect as in this test. If to change nonlinearity into a rectifier $y=y1 + y2$ the identification result will not be that accurate. So usage of Urysohn instead of Wiener is limited to a property of nonlinearity. But is is always recommended to try.The code can be obtained from the link at the top. 
