## Available Nonlinear Models

### Overview

The System Identification Toolbox™ software provides three types of nonlinear model structures:

The toolbox refers to Nonlinear ARX and Hammerstein-Wiener collectively as "nonlinear black box" models. You can configure these models in a variety of ways to represent various behavior using nonlinear functions such as wavelet networks, tree partitions, piece-wise linear functions, polynomials, saturation and dead zones.

The nonlinear grey-box models let you estimate coefficients of nonlinear differential equations.

Neural state space models let you estimate, using neural networks, the functions tat define the nonlinear state space realization of your system.

### Nonlinear ARX Models

Nonlinear ARX models extend the linear ARX models to the nonlinear case and have this structure:

y(t) = f(y(t - 1), ..., y(t - na), u(t - nk), ..., u(t -nk -nb + 1))

where the function f depends on a finite number of previous inputs u and outputs y. na is the number of past output terms and nb is the number of past input terms used to predict the current output. nk is the delay from the input to the output, specified as the number of samples.

Use this model to represent nonlinear extensions of linear models. This structure allows you to model complex nonlinear behavior using output functions that combine linear and nonlinear components, such as wavelet and sigmoid networks. Typically, you use nonlinear ARX models as black-box structures. The output function of the nonlinear ARX model is a flexible mapping function with parameters that need not have physical significance.

System Identification Toolbox software uses `idnlarx` objects to represent nonlinear ARX models. For more information about estimation, see Nonlinear ARX Models.

### Hammerstein-Wiener Models

Hammerstein-Wiener models describe dynamic systems using one or two static nonlinear blocks in series with a linear block. The linear block is a discrete transfer function and represents the dynamic component of the model.

You can use the Hammerstein-Wiener structure to capture physical nonlinear effects in sensors and actuators that affect the input and output of a linear system, such as dead zones and saturation. Alternatively, use Hammerstein-Wiener structures as black box structures that do not represent physical insight into system processes.

System Identification Toolbox software uses `idnlhw` objects to represent Hammerstein-Wiener models. For more information about estimation, see Hammerstein-Wiener Models.

### Nonlinear Grey-Box Models

Nonlinear state-space models have this representation:

`$\begin{array}{l}\stackrel{˙}{x}\left(t\right)=F\left(x\left(t\right),u\left(t\right)\right)\\ y\left(t\right)=H\left(x\left(t\right),u\left(t\right)\right)\end{array}$`

where F and H can have any parameterization. A nonlinear ordinary differential equation of high order can be represented as a set of first order equations. You use the `idnlgrey` object to specify the structures of such models based on physical insight about your system. The parameters of such models typically have physical interpretations. Use this model to represent nonlinear ODEs with unknown parameters.

### Neural State-Space Models

Neural state-space models are a type of nonlinear state-space models, and therefore have this representation:

`$\begin{array}{l}\stackrel{˙}{x}\left(t\right)=F\left(x\left(t\right),u\left(t\right)\right)\\ y\left(t\right)=H\left(x\left(t\right),u\left(t\right)\right)\end{array}$`

where F and H are implemented using neural networks.

To identify a system from experiment data, first, create a neural state-space object with a given number of states, inputs and outputs using `idNeuralStateSpace`. Next, create neural networks to approximate the state and output functions using `createMLPNetwork`. Then, to train the networks, use `nlssest`, supplying time-domain experiment data, the neural state-space object, and training options as input arguments.

After the training is completed, you can validate the resulting state-space system by simulating it against real data, and then use it to generate deployment code or design a control system. For example, to facilitate Nonlinear MPC (Model Predictive Control Toolbox) design, generate the state transition and Jacobian functions using `generateMATLABFunction`.