| Products & Services | Solutions | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → System Identification Toolbox |
| Contents | Index |
| Learn more about System Identification Toolbox |
m = idnlarx([na nb nk])
m = idnlarx([na nb nk],Nonlinearity)
m = idnlarx([na nb nk],Nonlinearity,...
'PropertyName',PropertyValue)
Represents nonlinear ARX model, including model structure and parameter values.
Typically, you use the nlarx command to both construct the idnlarx object and estimate the model parameters. You can configure the model properties directly in the nlarx syntax. For information about the nonlinear ARX model structure, see Structure of Nonlinear ARX Models.
You can also use the idnlarx constructor to create the nonlinear ARX model structure, and then estimate the parameters of this model using nlarx or pem.
The idnlarx object has idnlarx Properties, including:
m = idnlarx([na nb nk]) creates an idnlarx object. na, nb, and nk are positive integers that specify model orders and delays. For ny output channels and nu input channels, na is an ny-by-ny matrix whose i-jth entry gives the number of delayed jth outputs used to compute the ith output. nb and nk are ny-by-nu matrices, where each row defines the orders for the corresponding output.
m = idnlarx([na nb nk],Nonlinearity) specifies the nonlinearity estimator as 'wavenet' (or 'wave'), 'sigmoidnet' (or 'sigm'), 'treepartition' (or 'tree'), or 'linear' (or [ ]). For a neural network, specify the network object you created using the Neural Network Toolbox™ software. For a custom network, specify the custom network you created. For supported nonlinearities, see Nonlinearity Estimators for Nonlinear ARX Models.
m = idnlarx([na nb nk],Nonlinearity,...
'PropertyName',PropertyValue) creates
an idnlarx object using options specified as idnlarx property name and value pairs.
After creating the object, you can use get or dot notation to access the object property values. For example:
% Get the model time unit get(m,'TimeUnit') % Get value of Nonlinearity property m.Nonlinearity
You can specify property name-value pairs in the model estimator or constructor to configure the model structure and estimation algorithm.
The following table summarizes idnlarx model properties. The general idnlmodel properties also apply to this nonlinear model object (see the corresponding reference page).
| Property Name | Description | |
|---|---|---|
| Algorithm | A structure that specifies the estimation algorithm options, as described in idnlarx Algorithm Properties. | |
| CustomRegressors | Custom expression in terms of standard regressors. | |
| EstimationInfo | A read-only structure that stores estimation settings and results, as described in idnlarx EstimationInfo Properties. | |
| Focus | Specifies 'Prediction' or 'Simulation'.
| |
| NonlinearRegressors | Specifies which standard or custom regressors enter the nonlinear block. For multiple-output models, use cell array of ny elements (ny = number of model outputs). For each output, assignable values are:
| |
| Nonlinearity | Nonlinearity estimator object. Assignable values include wavenet (default), sigmoidnet, treepartition, customnet, neuralnet, and linear. If the model contains only one regressor, you can also use saturation, deadzone, pwlinear, or poly1d. For ny outputs, Nonlinearity is an ny-by-1 array. For example, [sigmoidnet;wavenet] for a two-output model. When you specify a scalar object, this nonlinearity applies to all outputs. | |
| na nb nk | Nonlinear ARX model orders and input delays, where na is the number of output terms, nb is the number of input terms, and nk is the delay from input to output in terms of the number of samples. For ny outputs and nu inputs, na is an ny-by-ny matrix whose i-jth entry gives the number of delayed jth outputs used to compute the ith output. nb and nk are ny-by-nu matrices. |
The following table summarizes the fields of the Algorithm idnlarx model properties. Algorithm is a structure that specifies the estimation-algorithm options.
| Property Name | Description |
|---|---|
| Advanced | A structure that specifies additional estimation algorithm options, as described in idnlarx Advanced Algorithm Properties. |
| Criterion | The search method of lsqnonlin supports the Trace criterion only. Use for multiple-output models only. Criterion can have the following values:
Both the Det and Trace criteria are derived from a general requirement of minimizing a weighted sum of least squares of prediction errors. Det can be interpreted as estimating the covariance matrix of the noise source and using the inverse of that matrix as the weighting. You should specify the weighting when using the Trace criterion. If you want to achieve better accuracy for a particular channel in MIMO models, use Trace with weighting that favors that channel. Otherwise, use Det. If you use Det, check cond(model.NoiseVariance) after estimation. If the matrix is ill-conditioned, try using the Trace criterion. You can also use compare on validation data to check whether the relative error for different channels corresponds to your needs or expectations. Use the Trace criterion if you need to modify the relative errors, and check model.NoiseVariance to determine what weighting modifications to specify. |
| IterWavenet | (For wavenet nonlinear
estimator only)
|
| LimitError | Robustification criterion that limits the influence of
large residuals, specified as a positive real value. Residual values
that are larger than 'LimitError' times the estimated
residual standard deviation have a linear cost instead of the usual
quadratic cost. |
| MaxIter | Maximum number of iterations for the estimation algorithm,
specified as a positive integer. |
| MaxSize | The number of elements (size) of the largest matrix to
be formed by the algorithm. Computational loops are used for larger
matrices. Use this value for memory/speed trade-off.MaxSize can
be any positive integer. |
| SearchMethod | Method used by the iterative search algorithm.
|
| Tolerance | Specifies to terminate the iterative search when the
expected improvement of the parameter values is less than Tolerance,
specified as a positive real value in %. |
| Display | Toggles displaying or hiding estimation progress information
in theMATLAB Command Window.
|
| Weighting | (For multiple-output models only) Specifies the relative importance of outputs in MIMO models (or reliability of corresponding data) as a positive semi-definite matrix W. Use when Criterion = 'Trace' for weighted trace minimization. By default, Weighting is an identity matrix of size equal to the number of outputs. |
The following table summarizes the fields of the Algorithm.Advanced model properties. The fields in the Algorithm.Advanced structure specify additional estimation-algorithm options.
| Property Name | Description |
|---|---|
| GnPinvConst | When the search direction is computed, the algorithm
discards the singular values of the Jacobian that are smaller than GnPinvConst*max(size(J))*norm(J)*eps.
Singular values that are closer to 0 are included when GnPinvConst is
decreased. |
| LMStartValue | (For Levenberg-Marquardt search algorithm) The starting
level of regularization when using the Levenberg-Marquardt
search method (Algorithm.SearchMethod='lm'). |
| LMStep | (For Levenberg-Marquardt search algorithm) Try this next
level of regularization to get a lower value
of the criterion function. The level of regularization is LMStep times
the previous level. At the start of a new iteration, the level of
regularization is computed as 1/LMStep times the
value from the previous iteration. |
| MaxBisections | Maximum number of bisections performed by the line search
algorithm along the search direction (number of rotations of search
vector for 'lm'). Used by 'gn', 'lm', 'gna' and 'grad' search
methods (Algorithm.SearchMethod property) |
| MaxFunEvals | The iterations are stopped if the number of calls to
the model file exceeds this value. |
| MinParChange | The smallest parameter update allowed per iteration. |
| RelImprovement | The iterations are stopped if the relative improvement
of the criterion function is less than RelImprovement. |
| StepReduction | (For line search algorithm) The suggested parameter update
is reduced by the factor 'StepReduction' after
each try until either 'MaxBisections' tries are
completed or a lower value of the criterion function is obtained. |
The following table summarizes the fields of the EstimationInfo model properties. The read-only fields of the EstimationInfo structure store estimation settings and results.
| Property Name | Description |
|---|---|
| Status | Shows whether the model parameters were estimated. |
| Method | Shows the estimation method. |
| LossFcn | Value of the loss function, equal to det(E'*E/N), where E is the residual error matrix (one column for each output) and N is the total number of samples. |
| FPE | Value of Akaike's Final Prediction Error (see fpe). |
| DataName | Name of the data from which the model is estimated. |
| DataLength | Length of the estimation data. |
| DataTs | Sampling interval of the estimation data. |
| DataDomain | 'Time' means time domain data. 'Frequency' is not supported. |
| DataInterSample | Intersample behavior of the input estimation data used for interpolation:
|
| EstimationTime | Duration of the estimation. |
| InitRandState | The value of randn('state') at the last randomization of the initial parameter vector. |
| Iterations | Number of iterations performed by the estimation algorithm. |
| UpdateNorm | Norm of the Gauss-Newton in the last iteration. Empty when 'lsqnonlin' is the search method. |
| LastImprovement | Criterion improvement in the last iteration, shown in %. Empty when 'lsqnonlin' is the search method. |
| Warning | Any warnings encountered during parameter estimation. |
| WhyStop | Reason for terminating parameter estimation iterations. |
This block diagram represents the structure of a nonlinear ARX model:

The nonlinear ARX model computes the output y in two stages:
Computes regressors from the current and past input values and past output data.
In the simplest case, regressors are delayed inputs and outputs, such as u(t-1) and y(t-3)—called standard regressors. You can also specify custom regressors, which are nonlinear functions of delayed inputs and outputs. For example, tan(u(t-1)) or u(t-1)*y(t-3).
By default, all regressors are inputs to both the linear and the nonlinear function blocks of the nonlinearity estimator. You can choose a subset of regressors as inputs to the nonlinear function block.
The nonlinearity estimator block maps the regressors to the model output using a combination of nonlinear and linear functions. You can select from available nonlinearity estimators, such as tree-partition networks, wavelet networks, and multi-layer neural networks. You can also exclude either the linear or the nonlinear function block from the nonlinearity estimator.
The nonlinearity estimator block can include linear and nonlinear blocks in parallel. For example:
![]()
x is
a vector of the regressors.
is the output
of the linear function block and is affine when d≠0.
represents the
output of the nonlinear function block. r is the
mean of the regressors x. d is
a scalar offset. Q is a projection matrix that makes the calculations well conditioned. The exact form
of F(x) depends on your choice
of the nonlinearity estimator.
Estimating a nonlinear ARX model computes the model parameter values, such as L, r, d, Q, and other parameters specifying g. Resulting models are idnlarx objects that store all model data, including model regressors and parameters of the nonlinearity estimator. See the idnlarx reference page for more information.
The states of an idnlarx object are delayed input and output variables that define the structure of the model. This toolbox requires states for simulation and prediction using sim(idnlarx), predict(idnlarx), and compare. States are also necessary for linearization of nonlinear ARX models using linearize(idnlarx).
This toolbox provides a number of options to facilitate how you specify the initial states. For example, you can use findstates and data2state to automatically search for state values in simulation and prediction applications. For linearization, use findop. You can also specify the states manually.
The states of an idnlarx model are defined by the maximum delay in each input and output variable used by the regressors. If a variable p has a maximum delay of D samples, then it contributes D elements to the state vector at time t: p(t-1), p(t-2), ..., p(t-D).
For example, if you have a single-input, single-output idnlarx model:
m = idnlarx([2 3 0],'wavenet', ...
'CustomRegressors', ...
{'y1(t-10)*u1(t-1)'});
This model has these regressors:
getreg(m)
Regressors:
y1(t-1)
y1(t-2)
u1(t)
u1(t-1)
u1(t-2)
y1(t-10)*u1(t-1)The regressors show that the maximum delay in the output variable y1 is 10 samples and the maximum delay in the input u1 is 2 samples. Thus, this model has a total of 12 states:
X(t) = [y1(t-1),y2(t-2),…,y1(t-10),u1(t-1),u1(t-2)]
As another example, consider the 2-output and 3-input model:
m = idnlarx([2 0 2 2 1 1 0 0; 1 0 1 5 0 1 1 0], ...
[wavenet; linear])getreg lists these regressors:
getreg(m)
Regressors:
For output 1:
y1(t-1)
y1(t-2)
u1(t-1)
u1(t-2)
u2(t)
u2(t-1)
u3(t)
For output 2:
y1(t-1)
u1(t-1)
u2(t-1)
u2(t-2)
u2(t-3)
u2(t-4)
u2(t-5)
The maximum delay in output variable y1 is 2 samples, which occurs in regressor set for output 1. The maximum delays in the three input variables are 2, 5, and 0, respectively. Thus, the state vector is:
X(t) = [y1(t-1), y1(t-2), u1(t-1), u1(t-2), u2(t-1),
u2(t-2), u2(t-3), u2(t-4), u2(t-5)]Variables y2 and u3 do not contribute to the state vector because the maximum delay in these variables is zero.
A simpler way to determine states by inspecting regressors is to use getDelayInfo, which returns the maximum delays in all I/O variables across all model outputs. For the multiple-input multiple-output model m, getDelayInfo returns:
maxDel = getDelayInfo(m)
maxDel =
2 0 2 5 0maxDel contains the maximum delays for all input and output variables in the order (y1, y2, u1, u2, u3). The total number of model states is sum(maxDel) = 9.
The set of states for an idnlarx model is not minimal.
Create nonlinear ARX model structure with (default) wavelet network nonlinearity:
m = idnlarx([2 2 1]) % na=nb=2 and nk=1
Create nonlinear ARX model structure with sigmoid network nonlinearity:
m=idnlarx([2 3 1],sigmoidnet('Num',15))
% number of units is 15Create nonlinear ARX model structure with no nonlinear function in nonlinearity estimator:
m=idnlarx([2 2 1],[])
addreg | customnet | customreg | findop(idnlarx) | getreg | linear | linearize(idnlarx) | nlarx | pem | polyreg | sigmoidnet | wavenet
![]() | idmodel | idnlgrey | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |