Main Content

Nonlinear ARX model

An `idnlarx`

model represents a nonlinear ARX model, which is an
extension of the linear ARX structure and contains linear and nonlinear
functions.

A nonlinear ARX model consists of model regressors and an output function. The output function includes linear and nonlinear functions that act on the model regressors to give the model output and a fixed offset for that output. This block diagram represents the structure of a nonlinear ARX model in a simulation scenario.

The software computes the nonlinear ARX model output *y* in
two stages:

It computes regressor values from the current and past input values and the past output data.

In the simplest case, regressors are delayed inputs and outputs, such as

*u*(*t*–1) and*y*(*t*–3). These kind of regressors are called*linear regressors*. You specify linear regressors using the`linearRegressor`

object. You can also specify linear regressors by using linear ARX model orders as an input argument. For more information, see Nonlinear ARX Model Orders and Delay. However, this second approach constrains your regressor set to linear regressors with consecutive delays. To create*polynomial regressors*, use the`polynomialRegressor`

object. You can also specify*custom regressors*, which are nonlinear functions of delayed inputs and outputs. For example,*u*(*t*–1)*y*(*t*–3) is a custom regressor that multiplies instances of input and output together. Specify custom regressors using the`customRegressor`

object.You can assign any of the regressors as inputs to the linear function block of the output function, the nonlinear function block, or both.

It maps the regressors to the model output using an output function block. The output function block can include linear and nonlinear blocks in parallel. For example, consider the following equation:

$$F(x)={L}^{T}(x-r)+g\left(Q(x-r)\right)+d$$

Here,

*x*is a vector of the regressors, and*r*is the mean of*x*. $$F(x)={L}^{T}(x-r)+{y}_{0}$$ is the output of the linear function block. $$g\left(Q(x-r)\right)+{y}_{0}$$ represents the output of the nonlinear function block.*Q*is a projection matrix that makes the calculations well-conditioned.*d*is a scalar offset that is added to the combined outputs of the linear and nonlinear blocks. The exact form of*F*(*x*) depends on your choice of output function. You can select from the available mapping objects, such as tree-partition networks, wavelet networks, and multilayer neural networks. You can also exclude either the linear or the nonlinear function block from the output function.When estimating a nonlinear ARX model, the software computes the model parameter values, such as

*L*,*r*,*d*,*Q*, and other parameters specifying*g*.

The resulting nonlinear ARX models are `idnlarx`

objects that store all model data, including model regressors and
parameters of the output function. For more information about these objects, see Nonlinear Model Structures.

For more information on the `idnlarx`

model structure, see What are Nonlinear ARX Models?.

For `idnlarx`

object properties, see Properties.

You can obtain an `idnlarx`

object in one of two ways.

specifies a set of linear regressors using ARX model orders. Use this syntax when you
extend an ARX linear model, or when you plan to use only regressors that are linear with
consecutive lags.`sys`

= idnlarx(`output_name`

,`input_name`

,`orders`

)

creates a nonlinear ARX model with the output and input names of
`sys`

= idnlarx(`output_name`

,`input_name`

,Regressors)`output_name`

and `input_name`

, respectively,
and a regressor set in `Regressors`

that contains any combination of linear, polynomial, and custom
regressors. The software constructs `sys`

using the default wavelet
network (`'idWaveletNetwork'`

) mapping object for the output
function.

uses a linear model `sys`

= idnlarx(`linmodel`

)`linmodel`

to extract certain properties such as
names, units, and sample time, and to initialize the values of the linear coefficients
of the model. Use this syntax when you want to create a nonlinear ARX model as an
extension of, or an improvement upon, an existing linear model.

specifies additional properties of
the `sys`

= idnlarx(___,`Name,Value`

)`idnlarx`

model structure using one or more name-value arguments.

For information about object functions for `idnlarx`

, see Nonlinear ARX Models.

`linearRegressor`

| `polynomialRegressor`

| `customRegressor`

| `idnlarx/findop`

| `getreg`

| `linearize`

| `nlarx`

| `pem`

| `idSigmoidNetwork`

| `idWaveletNetwork`

| `idLinear`

| `idCustomNetwork`

| `idFeedforwardNetwork`